这个方法在Ruby中做了什么?

时间:2010-07-13 20:02:10

标签: ruby-on-rails ruby

这实际上是我见过的Rails助手。我看到它试图从名称创建一个哈希,它似乎是包含Enumerable模块的任何东西。它正在创建一个键的哈希..但绑定来自哪里?你怎么通过它? eval(键,绑定)发生了什么?

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

1 个答案:

答案 0 :(得分:0)

除了Ken的评论之外,还有一个例子:

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