为什么Scala的Addable已被弃用?

时间:2011-06-18 00:04:05

标签: scala

我注意到Addable已弃用,而Subtractable则不推荐。 Addable有什么问题,为什么Subtractable会有所不同?

2 个答案:

答案 0 :(得分:20)

扩展Daniel的答案,+也是一个非常糟糕的运算符,可用于集合插入。在数学上,+运算符具有非常传统的含义,其中一部分含义是关联性的保证。不幸的是,当您向Int添加Vector[Int]时,关联性是一种完全没有意义的保证。因此,+对任何接受过代数训练的人来说都是一个非常混乱的算子。

+::+在几个方面都优越,其中最重要的是不存在关联性的期望。实际上,运算符的非常不对称意味着 - 关联性,这正是它们的语义。另外,+::+非常好地互相镜像,+:是正确关联的,所有这些都共同为收集前置和附加提供了一个非常自然的API。

答案 1 :(得分:18)

问题是+被重载以将String连接到非字符串。因此,每当您对没有它的类型使用+方法时,您将收到与真实问题无关的错误消息:您拥有的类型不是您预期的类型

+::+替换它。