我正在关注 rubymonk.com 上的交互式教程,并且刚刚开始使用 lambda,我觉得我掌握得相当好,但是我对这段代码有点迷失:
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 时做 |pair| 我们正在遍历哈希中的每个数组,这是正确的吗?在第 6 行的下一段代码中:
result << fn.call(pair[0], pair[1])
我相信我们正在将每个数组元素推入结果数组,尽管我不确定这段代码是如何工作的,尤其是fn.call
部分,因为我相信这(pair[0], pair[1])
部分只是将数据拉到通过块的每个数组的索引位置。对这里发生的事情的清晰解释将不胜感激,我觉得我几乎就在那里。谢谢。