我下面的互動式教學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