我注意到Addable
已弃用,而Subtractable
则不推荐。 Addable
有什么问题,为什么Subtractable
会有所不同?
答案 0 :(得分:20)
扩展Daniel的答案,+
也是一个非常糟糕的运算符,可用于集合插入。在数学上,+
运算符具有非常传统的含义,其中一部分含义是关联性的保证。不幸的是,当您向Int
添加Vector[Int]
时,关联性是一种完全没有意义的保证。因此,+
对任何接受过代数训练的人来说都是一个非常混乱的算子。
+:
和:+
在几个方面都优越,其中最重要的是不存在关联性的期望。实际上,运算符的非常不对称意味着非 - 关联性,这正是它们的语义。另外,+:
和:+
非常好地互相镜像,+:
是正确关联的,所有这些都共同为收集前置和附加提供了一个非常自然的API。
答案 1 :(得分:18)
问题是+
被重载以将String
连接到非字符串。因此,每当您对没有它的类型使用+
方法时,您将收到与真实问题无关的错误消息:您拥有的类型不是您预期的类型
有+:
和:+
替换它。