2
如何在Ruby中創建/提取變量/散列到當前綁定? 例如,在一個NameError
結果如下:如何在Ruby中創建/提取變量/散列到當前綁定?
class Hash
def extract(b)
self.each do |key, value|
bind = b.eval <<-END
#{key} = nil
proc { |value| #{key} = value }
END
bind.call(value)
end
end
end
hash = {:a => 1}
hash.extract(binding)
puts a
值得注意提的是,每次調用Kernel#binding
返回不同 Binding
對象實例,這讓我覺得我沒有真正改變 呼叫者的結合Hash#extract
。例如,下面的 作品:
class Hash
def extract(b)
self.each do |key, value|
bind = b.eval <<-END
#{key} = nil
proc { |value| #{key} = value }
END
bind.call(value)
end
end
end
hash = {:a => 1}
b = binding
hash.extract(b)
eval('puts a', b)