首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在哪种语言中‘In (X)’是对非零值的法律检验?

在哪种语言中‘In (X)’是对非零值的法律检验?
EN

Stack Overflow用户
提问于 2011-07-19 21:45:06
回答 3查看 89关注 0票数 2

我很好奇,语言范式允许普通if (x) ...检查非零值(至少对整数变量)有多普遍?(与显式要求操作符:if (x != 0)相反)

由于this question被标记为语言不可知论者,但对于目前常用的语言来说,这一点甚至都不是100%正确的,尽管它已经足够接近了。弱类型语言总是这样吗?

(假设x已经定义好了,所以我们不需要担心这个或异常。X可能不一定已初始化,但请考虑另一种情况)。

以下是一个总结:

代码语言:javascript
复制
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
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-07-19 23:36:46

条件必须是布尔的in: C#,Java;Pascal,Modula-2和Pascal的其他后代。

条件可以是整数in: Basic (缺乏布尔值)

票数 1
EN

Stack Overflow用户

发布于 2011-07-19 22:01:15

有很多其他语言不使用这个成语。

例如,在各种Lisps (包括Clojure)中,nil被认为是一个假值,但所有整数都被认为是真的:

代码语言:javascript
复制
(if nil "True" "False")
=> "False"

(if 0 "True" "False")
=> "True"
票数 2
EN

Stack Overflow用户

发布于 2011-07-19 21:50:40

这让我想起了露比。

代码语言:javascript
复制
a = 0
b = 5

if a
    p "true!"
end

if b
    p "true!"
end

都会印上“真!”然后是甜蜜的.zero?方法:

代码语言:javascript
复制
a.zero?
=> true
b.zero?
=> false
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6754536

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档