私は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])
ここで何が起こっているのかを明確に説明していただければ幸いです。もうすぐそこにいると思います。ありがとう。