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

use*_*833 18 ruby

falsenil评估,以虚假的Ruby.还要别的吗?请提供官方/权威参考资料的链接.

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
Run Code Online (Sandbox Code Playgroud)

nzi*_*nab 26

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

  • “false 和 nil 是唯一的”除非你有一个定义 `!@` 的自定义类,它可以返回 `true`、`false`、`"foobar"` 等。 (2认同)

tes*_*ssi 8

你刚刚发现了它们

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

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