在Ruby中评估为false的是什么?
在Ruby
false
和nil
评估为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
false
和nil
是唯一的:
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
值是false
和nil
,正如David Flanagan和Yukihiro Matsumoto(Matz)所着的“Ruby Programming Language”一书所certificate的那样:
谓词通常返回布尔值
true
或false
,但这不是必需的,因为除了false
或nil
之外的任何值在需要布尔值时都是true
。 (例如,如果调用的Numeric
nonzero?
,则返回nil
的Numeric
方法nonzero?
否则返回该数字。)
(强调我的)
这个引用可以在本书的第180页找到。
我只能同意, nil
和false
确实是唯一的两个值,在Ruby中评估为false 。 我只是想指出另一个有用的资源:
Ruby,Python和JavaScript中的“Truthy”和“Falsey”(或“Falsy”)的真与假