我很好奇,语言范式允许普通if (x) ...检查非零值(至少对整数变量)有多普遍?(与显式要求操作符:if (x != 0)相反)
由于this question被标记为语言不可知论者,但对于目前常用的语言来说,这一点甚至都不是100%正确的,尽管它已经足够接近了。弱类型语言总是这样吗?
(假设x已经定义好了,所以我们不需要担心这个或异常。X可能不一定已初始化,但请考虑另一种情况)。
以下是一个总结:
C/C++, PERL, Python, PHP, Ruby, BASIC: Yes
C#, Java; Pascal, Modula-2 & other descendants of Pascal: illegal - must be Boolean
Fortran: Illegal syntax - must be Boolean
LISP: All integers considered true, nil considered false.
bash: Legal, but beware 0 signifies command success and nonzero signifies failure发布于 2011-07-19 23:36:46
条件必须是布尔的in: C#,Java;Pascal,Modula-2和Pascal的其他后代。
条件可以是整数in: Basic (缺乏布尔值)
发布于 2011-07-19 22:01:15
有很多其他语言不使用这个成语。
例如,在各种Lisps (包括Clojure)中,nil被认为是一个假值,但所有整数都被认为是真的:
(if nil "True" "False")
=> "False"
(if 0 "True" "False")
=> "True"发布于 2011-07-19 21:50:40
这让我想起了露比。
a = 0
b = 5
if a
p "true!"
end
if b
p "true!"
end都会印上“真!”然后是甜蜜的.zero?方法:
a.zero?
=> true
b.zero?
=> falsehttps://stackoverflow.com/questions/6754536
复制相似问题