Я новичок в рубине, и у меня проблема с проками, созданными внутри циклов, обращающихся к переменным цикла. Вот файл кода, демонстрирующий проблему.
class Route
def initialize options = {}
options.each do |k,v|
self.instance_variable_set("@#{k}", v)
self.class.send(:define_method, k, proc{self.instance_variable_get("@#{k}")})
self.class.send(:define_method, "#{k}=", proc{|v| self.instance_variable_set("@#{k}", v)})
end
end
end
routes = []
routes << Route.new({ :url=>'/one', :content=>'html1' })
routes << Route.new({ :url=>'/two', :content=>'html2' })
blocks = []
for route in routes
blocks << Proc.new { route.content }
end
puts blocks[0].call #=> 'html2'
puts blocks[1].call #=> 'html2'
Как сделать, чтобы блоки [0] .call возвращали 'html1', а блоки [1] .call возвращали 'html2'