0
我一直在試圖理解,如果你需要在Ruby中有一個閉包之前創建一個proc或lambda。難道Enumerable.Inject方法是閉包還是隻是一個塊?
作爲一個典型的例子,我們可以看看注入方法。它使用yield關鍵字,但它是一個閉包還是隻是一個塊?
def inject(init)
result = init
each do |item|
result = yield(result, item)
end
result
end
我聽說lamdda不一定是閉包。我會看看我能否找到對此的參考。所以注射不是封閉的,但它接受一個? – 2011-05-08 23:06:28
@John:「我聽說拉姆達不一定是封閉。」無論誰告訴你這可能意味着block,lambda或proc不是閉包,如果它實際上並未使用封閉範圍中的任何變量。然而,應該指出的是,即使塊沒有使用封閉範圍中的任何變量,它仍然有對它們的引用,所以做出這樣的區分並不一定有意義。 「所以注射不是封閉,而是接受一個。」對,就是這樣。 – sepp2k 2011-05-08 23:13:52