我希望能够测试一个值是否在数字范围内。这是我当前的代码:
if ((year < 2099) && (year > 1990)){
return 'good stuff';
}
有没有更简单的方法来做到这一点?比如说有这样的吗?
if (1990 < year < 2099){
return 'good stuff';
}
最佳答案
在许多语言中,第二种方式将根据您想要的内容从左到右错误地进行评估。
例如,在 C 语言中,1990 < year
将计算为 0 或 1,然后变为 1 < 2099
,当然,这总是正确的。
Javascript 与 C: 1990 < year
非常相似返回true
或false
,这些 bool 表达式在数值上看起来分别等于 0 和 1。
但是在 C# 中,它甚至无法编译,并给出错误:
error CS0019: Operator '<' cannot be applied to operands of type 'bool' and 'int'
您从 Ruby 中得到类似的错误,而 Haskell 告诉您不能使用 <
在同一个中缀表达式中出现两次。
在我看来,Python 是唯一一种我确信能够以这种方式处理“之间”设置的语言:
>>> year = 5
>>> 1990 < year < 2099
False
>>> year = 2000
>>> 1990 < year < 2099
True
底线是第一种方式 (x < y && y < z)
永远是您最安全的选择。
关于javascript - 是否有更紧凑的方法来检查数字是否在某个范围内?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4408676/