2014-04-14 96 views
8

falsenil評估爲Ruby。還要別的嗎?請提供官方/權威參考的鏈接。在Ruby中評估爲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 
+4

順便說一句:你的代碼示例可以表示要短得多 '[真,假,零,0,[] {}' '] .map {| o | 'o}' '#=> [true,false,false,true,true,true,true]' – tessi

回答

6

你剛發現他們都

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

如耶胡達·卡茨在他blog post in 2009

2

的只提到false在Ruby中-y值falsenil,如這本書「Ruby編程語言」,David Flanagan着和松本行弘(馬茨)證明了這一點:

謂語通常返回布爾的一個值truefalse,但這不是必需的,因爲falsenil之外的任何值都可以像true那樣工作,當需要布爾值時。 (該Numeric方法nonzero?,例如,返回nil如果所調用的數目是零,並且僅返回數目另有說明。)

(重點煤礦)

這個報價可以在page 180找到這本書。

相關問題