如果需要,我有一段代码应该在运行时再次评估。
class Test
def initialize
@some_block = nil
end
def make_initial_attributes(&block)
# do stuff with the supplied block, and then store the block somewhere
# for later
end
def rebuild_attributes
# grab that stored block and evaluate it again
end
end
我有在启动时创建的测试对象,但是在整个程序中,我可能希望它们通过运行我在启动时提供给它们的任何块来“更新”自己。
也许程序的状态已经改变,所以这些 Test 对象会很高兴地检查一堆东西,让他们决定用什么来更新他们的值。当然,积木是我写的,所以(我认为)他们不应该做我没有计划的事情......
这个例子有点奇怪。基本上可以存储一个代码块(我相信这只是一个 Proc),然后再重新评估它。