我正在通读优秀的Ruby on Rails Tutorial,遇到了以下代码.
if 0
true
else
false
end
上面的返回值为true
,说明了ruby将0
视为true
,这与许多语言(C是明显的例子)不同.我并没有将这种行为视为特殊行为而不予理睬,而是认为有一个很好的理由来解释这种与传统的重大背离.例如,Python将0
视为False
,正如人们所期望的那样.
简而言之,设计ruby将0
视为true
的基本原理是什么?
我正在通读优秀的Ruby on Rails Tutorial,遇到了以下代码.
if 0
true
else
false
end
上面的返回值为true
,说明了ruby将0
视为true
,这与许多语言(C是明显的例子)不同.我并没有将这种行为视为特殊行为而不予理睬,而是认为有一个很好的理由来解释这种与传统的重大背离.例如,Python将0
视为False
,正如人们所期望的那样.
简而言之,设计ruby将0
视为true
的基本原理是什么?
我猜Matz希望"真实性"的概念简单化——唯一的"假"值是false
和nil
.时期
只使用false
将是最干净的,但有必要包括nil
.把整数零作为特例,可能会打开质疑其他类型真实性的心理闸门.字符串呢,""
是假的吗?还有数组,[]
是假的吗?散列,{}
是假的吗?疯狂广告(见JavaScript)...