我在https://ruby-doc.org/core-2.3.1/Proc.html
读到了红宝石中的Proclambda(&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
我几乎不明白为什么所有结果都是他们。如果你有任何想法。请帮帮我!
答案 0 :(得分:1)
它在您引用的代码上方如此说明:
lambda
,proc
和::new
保留Proc
参数给出的&
对象的技巧。
在前三个示例中,您使用Proc
创建lambda {}
;因此它是一个lambda。包装它不会改变它; .lambda?
为true
。
在后三个示例中,您使用Proc
创建proc {}
;因此它不是一个lambda。包装它不会改变它; .lambda?
为false
。