一个问题被张贴有关链比较运营商以及它们如何在不同的语言解释.
链接比较运算符意味着(x < y < z)将被解释为((x < y) && (y < z))而不是((x < y) < z).
对该问题的评论表明,Python,Perl 6和Mathematica支持链接比较运算符,但是其他语言支持这个功能,为什么它不常见?
快速浏览一下Python文档就可以看出这个功能至少从1996年开始.有没有更多语言没有添加这种语法的原因?
静态类型语言会出现类型转换问题,但还有其他原因这种情况不常见吗?
在一个JS库中,我看到了这样的语法:
if (val > 5 == t) { ... }
Run Code Online (Sandbox Code Playgroud)
我在控制台测试了这个:
1 == 1 == 2 // false
2 > 1 == 1 // true
1 == 2 == 1 // false
1 == 1 == 1 // true
1 < 2 < 3 // true
1 > 2 > 3 // false
Run Code Online (Sandbox Code Playgroud)
乍一看都是正确的.这可以用吗?
所以我想知道是否有办法做双倍大于,比如:
if(x > y > z) { ... }
Run Code Online (Sandbox Code Playgroud)
然后我看到这个 表达式"超过x而不是y"?
但后来我在控制台中尝试了以下表达式并获得了一个奇怪的结果:
(5 < 2 < 1) // returned true
(5 > 2 > 1) // returned false
Run Code Online (Sandbox Code Playgroud)
怎么样?
更新:我知道你不能这样做"(x> y> z)",只是想要解释奇怪的结果.