在Ruby中评估为false的是什么?

Ruby falsenil评估为false 。 还要别的吗? 请提供官方/权威参考资料的链接。

 2.0.0p247 :001 > if true ; puts 'TRUE' ; else puts 'FALSE' ; end TRUE 2.0.0p247 :002 > if false ; puts 'TRUE' ; else puts 'FALSE' ; end FALSE 2.0.0p247 :003 > if nil ; puts 'TRUE' ; else puts 'FALSE' ; end FALSE 2.0.0p247 :004 > if 0 ; puts 'TRUE' ; else puts 'FALSE' ; end TRUE 2.0.0p247 :005 > if [] ; puts 'TRUE' ; else puts 'FALSE' ; end TRUE 2.0.0p247 :006 > if {} ; puts 'TRUE' ; else puts 'FALSE' ; end TRUE 2.0.0p247 :007 > if '' ; puts 'TRUE' ; else puts 'FALSE' ; end (irb):616: warning: string literal in condition TRUE 

falsenil是唯一的:

http://www.ruby-doc.org/core-2.1.1/FalseClass.html

Rails提供present? 其中还包括空字符串和空数组: http : //api.rubyonrails.org/classes/Object.html#method-i-present-3F

你刚刚发现了它们

在Ruby中,false和nil是“falsy”,而所有其他值都是“truthy”

正如Yehuda Katz 在2009年的博客文章中提到的那样

Ruby中唯一的false值是falsenil ,正如David Flanagan和Yukihiro Matsumoto(Matz)所着的“Ruby Programming Language”一书所certificate的那样:

谓词通常返回布尔值truefalse ,但这不是必需的,因为除了falsenil之外的任何值在需要布尔值时都是true 。 (例如,如果调用的Numeric nonzero? ,则返回nilNumeric方法nonzero?否则返回该数字。)

(强调我的)

这个引用可以在本书的第180页找到。

我只能同意, nilfalse确实是唯一的两个值,在Ruby中评估为false 。 我只是想指出另一个有用的资源:

Ruby,Python和JavaScript中的“Truthy”和“Falsey”(或“Falsy”)的真与假