任何语言都支持范围比较使用" 1<我< 10"句法?

时间:2014-03-31 00:18:55

标签: comparison compare equality

相比之下,我们可以使用1 < i && i < 10而不是1 < i < 10吗?正如您所看到的,后者可以节省空间并提高可读性。

这可以用任何编程语言吗?

修改

在Javascript中,1 < i < 10将始终返回true,无论我的等于什么。例如,
1 < 44 < 10返回true。

2 个答案:

答案 0 :(得分:1)

JavaScript不支持它。例如,-3 < -2 < -1会产生false。对于正值,它有时会看起来&#34;喜欢它工作,但有隐式类型转换正在进行。例如,3 < 4 < 5给出true,但此值实际上来自(3<4)<5,等于true < 5,等于1 < 5 === true

答案 1 :(得分:1)

支持in Python

  

比较可以任意链接;例如,x&lt; y&lt; = z等于x&lt; y和y&lt; = z,除了y仅被评估一次(但在两种情况下,当x&lt; y被发现为假时,根本不评估z。)

示例:

1 < 2 < 3    # true (correct)  - equivalent to 1 < 2 and 2 < 3
1 < 4 < 3    # false (correct) - equivalent to 1 < 4 and 4 < 3
(1 < 4) < 3  # true ("incorrect")

3 > 2 > 1    # true (correct)  - equivalent to 3 < 2 and 2 < 1
3 > 4 > 1    # false (correct) - equivalent to 3 > 4 and 4 > 1
3 > (4 > 1)  # true ("incorrect")

此功能仅仅是特定编程语言(例如Python)的工件,大多数语言(例如JavaScript)处理/解析比较运算符(即{{1 }})作为向左关联的二元运算符

因此,在这种语法甚至是良好类型的情况下,<通常是“范围”比较,但是除了少数例外(例如Python),被解析为{{ 1}}。