2010-07-13 49 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 2010-07-13 20:15:34

回答

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