我下面的互动式教学rubymonk.com和刚开始与拉姆达的,我觉得我把握得相当好,但我有点与此代码丢失:努力理解这些代码
1 def with_names(fn)
2 result = []
3 [ ["Christopher", "Alexander"],
4 ["John", "McCarthy"],
5 ["Joshua", "Norton"] ].each do |pair|
6 result << fn.call(pair[0], pair[1])
7 end
8 result
9 end
10 l = lambda { |first_name, last_name| "#{first_name} #{last_name}" }
11 with_names(l)
是名称之间输入线3的第一[
和线5的]
在阵列或哈希举行?我的理解是它们是数组的散列,并且在调用`.each do | pair |时我们正在迭代散列中的每个数组,这是正确的吗?在第6行的下一段代码:
result << fn.call(pair[0], pair[1])
我相信,我们正在推动每个数组元素到结果数组,虽然我不知道这个代码是如何工作的尤其是fn.call
一部分,我相信(pair[0], pair[1])
部分被简单地在穿过块传递的每个阵列的索引位置拉数据。对这里发生的事情的清楚解释将非常感谢,我觉得我几乎在那里。谢谢。
在一本书中看到这个代码是令人惊讶的,恕我直言,它是一个单式的Ruby。据我所知,使用一个奇怪的λ,而不是后来以示区别块,但'each'应该是一个'map'和'pair'应在块参数进行解压缩。 – tokland