为了账号安全,请及时绑定邮箱和手机立即绑定

链式比较运算符的语言支持(x <y <z)

链式比较运算符的语言支持(x <y <z)

有只小跳蛙 2019-11-20 10:51:00
有关链式比较运算符以及如何用不同语言解释它们的问题被发布了。链接比较运算符意味着(x < y < z)将其解释为((x < y) && (y < z))而不是((x < y) < z)。关于该问题的评论表明,Python,Perl 6和Mathematica支持链接比较运算符,但是还有哪些其他语言支持此功能,为什么它不那么普遍?快速浏览Python文档显示此功能至少从1996年开始就存在。是否有更多的语言没有添加此语法的原因?静态类型的语言在类型转换方面会遇到问题,但是还有其他原因导致这种情况不常见吗?
查看完整描述

3 回答

?
慕工程0101907

TA贡献1887条经验 获得超5个赞

它应该更常见,但是我怀疑不是因为它使解析语言更加复杂。

好处:

  • 秉承最少惊喜的原则

  • 阅读就像数学一样

  • 减轻认知负担(见前2分)

缺点:

  • 语言的语法更复杂

  • 特例句法糖

至于为什么不呢,我的猜测是:

  • 语言作者没有想到

  • 在“不错的”清单上

  • 认为它不足以证明实施合理性


查看完整回答
反对 回复 2019-11-20
?
鸿蒙传说

TA贡献1865条经验 获得超7个赞

好处太小,不足以证明使语言复杂化是正确的。

您不需要经常使用它,而且只需增加几个字符即可轻松获得相同的效果。


查看完整回答
反对 回复 2019-11-20
?
慕标琳琳

TA贡献1830条经验 获得超9个赞

Scheme(可能还有其他大多数Lisp家族语言)在其语法内有效地支持多重比较:


(< x y z)

可以将其视为<具有三个参数的函数的普通函数应用程序。请参见规格中的6.2.5数值运算。


Clojure也支持链式比较。


查看完整回答
反对 回复 2019-11-20
  • 3 回答
  • 0 关注
  • 614 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信