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)