酱紫君的回答
设计有时代局限, 但是绝对没啥问题
你总归是有判定值相等和判定引用相等两个需求的.
要是换一下你又要问 [5] == [5] => false
是不是弱智设计.
这么一来你只能用 java
语言的 a.isTheFuckingValueEquivalentTo(b)
了.
编程语言就是编程语言, 你不能用英文语法去理解这里的 is
.
自然语言本来语义就很模糊, is
除了 =
还有 ∈
的语义, 歧义太多了.
你如果去程序员咖啡厅, 讨厌歧义的服务员应该会问你, 要点 tee xor coffee 吗?
不过这个设计确实还有改进的余地.
比较现代的语言, 比如 C#, Kotlin 等等都晋升了 is 的语义. is
在这些语言中表示模式匹配.
同时 X is value
仍然兼容原来的语义, 表示匹配一个值字面量判等, 否则表示判定是否服从一个模式.
这个语法可以少写大量的 if
, contains
和 as
, 建议别的语言都跟进抄袭一下.
所以比较现代化的设计应该是 ==
判定值相等, ===
判定引用相等, is
判定模式是否匹配.