2016-10-03 41 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