【发布时间】:2015-07-20 17:17:09
【问题描述】:
我是 Scala 编程的新手,现在试图了解 scala.collection.immutable.List 运算符 + 的确切行为。这是我写的:
val _1 = List(1, 2)
println((_1 + "2") foreach print
以下内容我写不出来
_1 + 2 //error: expected String
这很清楚,因为我们正在尝试执行在 String 类中定义的 + 运算符。
但不清楚的是,为什么他们不只是为List 覆盖operator +,而是为连接定义operator ++?
有什么技术原因吗?
这是什么意思?
【问题讨论】:
-
我认为将
+附加到Strings是Scala作者的设计缺陷。 -
您所说的“操作员+列表”是什么意思? scala.ollection.immutable.List 不提供
+运算符。你想要的是:+而不是+或++。 -
@yanana 我知道。这正是我所困惑的。没有为 List 提供覆盖版本的原因是什么?
-
有一个
+可以转换成String。所以List首先转换为String,然后是+操作符。 -
恕我直言,为类似
List的数据结构提供+运算符只是一个坏习惯,因为数学中的+操作是可交换的,但List甚至@987654345 @ 不是。
标签: list scala collections