为什么在Ruby中将0视为True?

zsbz8rwp  于 2023-02-12  发布在  Ruby
关注(0)|答案(3)|浏览(160)

我正在阅读优秀的Ruby on Rails Tutorial,并遇到了以下代码。

if 0
  true
else
  false
end

上面的代码返回了true,并说明了Ruby是如何不同于许多语言(C语言就是一个明显的例子),将0当作true来处理的。我并没有将这种行为视为一种特殊的行为,而是假设这种明显背离惯例的行为是有充分理由的。例如,Python将0当作False来处理,就像人们所期望的那样。
简而言之,设计Ruby将0视为true的基本原理是什么?

gajydyqb

gajydyqb1#

我猜Matz希望“真实性”概念简单. -唯一的“假”值是falsenil
只使用false可能是最干净的,但是包含nil的必要性是可以理解的。将整数零作为特例包含进来可能会打开质疑其他类型真实性的思想闸门。那么字符串呢,""是否为假?数组呢,[]是否为假?散列呢,{}是否为假?疯狂的广告(参见JavaScript). a....

cnwbcb6i

cnwbcb6i2#

在ruby中,如果存在,则为真,如果不存在,则为假。
因此,Ruby中null(未分配地址)和false仅为false。
所有其他的都是真的,因为它有分配给它的地址。
我这样想;“它存在吗?”

dzjeubhm

dzjeubhm3#

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

(if 0 'true 'false)

毫无疑问,Ruby遵循了Lisp中的设计决策,在Lisp中,只有空列表(用nil表示)是假的。

相关问题