为什么在宇宙飞船操作符中只有一个等号?

9
为什么太空船操作符<=>选择一个等号而不是两个?这是否被认为与通常意味着赋值的一个等号和比较的两个等号不一致?

4
抵消掉那个负号,人们在这里有时候会不必要地刻薄,对于一个Forth程序员来说,这是一个完全合理的问题。 - jcomeau_ictx
1
“维基百科的答案”(http://en.wikipedia.org/wiki/Spaceship_operator)可以更详细地解释这个问题,但它读起来很枯燥,与Perl的文档几乎相同。拉里·沃尔(Larry Wall)在语言学方面接受了一些培训,可能有更合理的原因,但我从未见过除Perl文档之外的任何记录。就我个人而言,在处理语言中他们强加给我们的任何运算符选择的看似武断的决定多年后,我已经放弃了,并接受它们为它们所是。称其为“太空船运算符”使其变得有趣。 - the Tin Man
2
可能还有更糟糕的情况,比如 </==/> - ysth
2
@sawa => Perl 的许多特性都是哈夫曼编码的(也就是说,常见操作比不常见的操作更短)。在 Perl 中,= 用于赋值,而 == 用于相等比较,因为在 Perl 中赋值比测试相等更常见。 - Eric Strom
@Eric 我就知道有人会这么说。这也回答了最初的问题。 - sawa
显示剩余3条评论
2个回答

20
为什么会有两个?在“<=”、“>=”和“!=”中只有一个。这并不矛盾。只有“==”是不一致的,这是为了避免与赋值运算符冲突。

16

太空船操作符是a < ba == ba > b的组合。推测单个等号被选择的原因与>=<=相同——它更简短,更易于阅读。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接