为什么对待0在Ruby中为真?(Why Treat 0 as True in Ruby?)

2019-06-24 02:17发布

我读通过优良的Ruby on Rails的教程也碰到了下面的代码。

if 0
  true
else
  false
end

上述返回true ,并且示出如何与许多语言(C是明显的例子),红宝石对待0true 。 而不是解雇行为特质,我认为有一个很好的理由,从这个公约出发显著。 Python中,例如,把0作为False ,只是正如人们所预料。

总之,什么是设计红宝石治疗的基本原理0true

Answer 1:

我猜测,马茨想“感实性”这样的概念简单-唯一的“假”的值是falsenil 。 期。

只需使用false将是最干净的,但存在对包括可以理解的需要nil 。 包括整数零作为一个特殊的情况下可能会打开质疑其他类型的感实性的心理闸门。 关于字符串是什么,是""假的? 和数组,是[]假? 和散列,是{}假的? 广告insanitum(见的JavaScript)...



Answer 2:

在Ruby中,如果存在,它是真实的。 如果不是,它是假的。

所以,使用Ruby空(无分配的地址)和错误只是假的。

因为它的地址分配给它的所有其他人都是如此。

我觉得这种方式; “它确实存在?”



Answer 3:

在Common Lisp中,0也被视为真。 例如,下面的代码返回true

(if 0 'true 'false)

毫无疑问,红宝石是继Lisp中由相同的设计决策。 在Lisp中,只有一个空列表(表示为nil )为假。



文章来源: Why Treat 0 as True in Ruby?