此代碼按預期方式工作(不執行任何操作,即使不產生警告/錯誤):紅寶石拉姆達參數
l = lambda {|i|}
l.call(1)
此代碼生成警告(警告:多個值塊參數(0 1) ):
l = lambda {|i|}
l.call
而這個代碼失敗,錯誤(引發ArgumentError:錯誤的參數數目(0爲2)):
l = lambda {|i, y|}
l.call
我個應該要求lambda需要所有參數才能通過。
而從第二個例子中我發現事實並非如此。爲什麼它只有一個參數給出,並按預期工作(失敗,錯誤)與多個參數?
PS:紅寶石1.8.6(2008-08-11 PATCHLEVEL 287)[萬向darwin9.0]
更新:我已經檢查了這些樣品用紅寶石1.9.1p376。它按預期工作 - 第二個例子也會產生錯誤。看起來這是1.8版本的一個特性(或者< = 1.8)
對不起,但我找不到答案。你能指點一下嗎? –
加了一個指針:) – Trevoke
謝謝!但無論如何,它仍然不清楚爲什麼這樣的行爲存在(是正確的 - 存在) –