Ala*_*nse 21 syntax programming-languages operators
一个问题被张贴有关链比较运营商以及它们如何在不同的语言解释.
链接比较运算符意味着(x < y < z)
将被解释为((x < y) && (y < z))
而不是((x < y) < z)
.
对该问题的评论表明,Python,Perl 6和Mathematica支持链接比较运算符,但是其他语言支持这个功能,为什么它不常见?
快速浏览一下Python文档就可以看出这个功能至少从1996年开始.有没有更多语言没有添加这种语法的原因?
静态类型语言会出现类型转换问题,但还有其他原因这种情况不常见吗?
sta*_*lue 13
这种好处太小,无法证明使语言复杂化.
你不经常需要它,并且很容易用更多的几个字符干净地获得相同的效果.
Bru*_*ong 10
它应该更常见,但我怀疑它不是因为它使解析语言更复杂.
优点:
缺点:
至于为什么不,我的猜测是:
Scheme(可能还有大多数其他 Lisp 家族语言)在其语法内有效支持多重比较:
(< x y z)
Run Code Online (Sandbox Code Playgroud)
<
这可以被认为是具有三个参数的函数的普通函数应用。请参阅规范中的6.2.5 数值运算。
Clojure 也支持链式比较。
归档时间: |
|
查看次数: |
4459 次 |
最近记录: |