2016-10-03 57 views
2

我在紅寶石https://ruby-doc.org/core-2.3.1/Proc.htmlLambda和PROC產生

lambda(&lambda {}).lambda? #=> true 
proc(&lambda {}).lambda?  #=> true 
Proc.new(&lambda {}).lambda? #=> true 

lambda(&proc {}).lambda?  #=> false 
proc(&proc {}).lambda?  #=> false 
Proc.new(&proc {}).lambda? #=> false 

瞭解proc和我幾乎不明白爲什麼所有的結果都是他們。如果你有任何想法。請幫幫我!

回答

1

它說你引用上面的代碼這樣的權利:

lambdaproc::new保留通過&參數給出一個Proc對象的技巧。

在前三個示例中,使用lambda {}創建Proc;因此它是一個lambda。包裝它不會改變它; .lambda?true

在後面的三個示例中,使用proc {}創建Proc;因此它不是拉姆達。包裝它不會改變它; .lambda?false

+0

那麼爲什麼包裝lambda/proc不會改變它? – eugene

+0

你必須問問設計它的人。 – Amadan

+0

好的!感謝您的幫助 – eugene