2010-07-13 3 views
0

Это действительно в помощнике Rails, который я видел. Я вижу, что он пытается создать хэш из имен, который, кажется, есть все, что включает в себя модуль Enumerable. Это создает хэш ключей ... но откуда взялось обязательство? как вы его передаете? и что происходит с eval (ключ, привязка)?Что делает этот метод в Ruby?

def locals_hash(names, binding) 
    names.inject({}) {|memo, key| memo[key.to_sym] = eval(key, binding); memo} 
    end 
+1

Вы видели документы для '' eval' и binding'? http://ruby-doc.org/core/classes/Kernel.html#M005922 – Ken

ответ

0

В дополнение к комментарий Кена, вот пример:

def locals_hash(names, binding) 
    names.inject({}) {|memo, key| memo[key.to_sym] = eval(key, binding); memo} 
end 

def m 
    a = 3 
    b = 'foo' 
    binding 
end 

locals_hash ['a', 'b'], m 
#=> {:a=>3, :b=>"foo"}