在Ruby中,nil的工作原理是什么?

4
为什么在Ruby中,表达式().nil?的值为true?
2个回答

9
简单回答: () 是一个空表达式,其结果为 nil
更详细地说:在 Ruby 中,所有表达式都有结果,如果没有更好的返回值,则返回 nil() 本身不会引起任何动作,因此仅为 () 的表达式没有特别的返回值。因此,表达式的结果被设置为 nil,所以 ().nil? 评估为空表达式,决定没有什么可以返回,因此返回 nil。这确实等于 nil,因此 nil? 返回 true

每次我认为 Ruby 已经不会再让我惊讶了,它又一次出乎我的意料。谁能想到 () 是一个有效的表达式呢? - Wayne Conrad
谁知道 Ruby 在评估表达式时是如此随意呢?+1 - Joseph Yaduvanshi
@klochner,@Jim 我猜 Ruby 的作者们以稍微不同的方式采用了“惰性求值”的思想 :) - Peter

2

在irb中玩耍...

a = ()
a.class # => NilClass
a.nil? # => true

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接