谢谢,懂了,这时候让我想起了前面看到的 "延迟执行 (Deferred Evaluation)"
Dir.glob('file1.rb').each do |file|
@setups = []
@events = {}
load file
@events.each_pair do |name, event|
env = Object.new
@setups.each do |setup|
env.instance_eval &setup
end
puts "ALERT: #{name}" if env.instance_eval &event
end
end
在上面这段代码中,执行到 load file 时,应该会执行 file1.rb 里的四个方法
event "the sky is falling" do
@sky_height < 300
end
这里 @sky_height 实便变量还没有定义,应该会报错,不是吗?
对于程序执行的顺序,以及变量的使用情况不是很了解