2010-07-13 5 views
0

Ceci est réellement dans une aide de Rails que j'ai vu. Je vois qu'il essaie de créer un hash à partir des noms, ce qui semble être tout ce qui inclut le module Enumerable. C'est créer un hachage de touches .. mais d'où vient la reliure? comment passez-vous un? et que se passe-t-il avec eval (clé, liaison)?Que fait cette méthode dans Ruby?

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

Avez-vous vu les documents pour '' eval' et binding'? http://ruby-doc.org/core/classes/Kernel.html#M005922 – Ken

Répondre

0

Outre le commentaire de Ken, voici un exemple:

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"}