虽然我知道有更多的自我实现方式,但为什么这段代码不起作用? (大多数情况下,为什么第一次尝试只是x += 2
才起作用。)这些非常奇特的外观(至少是Scala的新手)错误消息implicit def
魔法不能正常工作吗?
scala> var x: List[Int] = List(1)
x: List[Int] = List(1)
scala> x += 2
<console>:7: error: type mismatch;
found : Int(2)
required: String
x += 2
^
scala> x += "2"
<console>:7: error: type mismatch;
found : java.lang.String
required: List[Int]
x += "2"
^
scala> x += List(2)
<console>:7: error: type mismatch;
found : List[Int]
required: String
x += List(2)
答案 0 :(得分:10)
你使用了错误的操作符。
要附加到收藏集,您应使用:+
而不是+
。这是因为尝试使用+
连接到字符串来镜像Java的行为时导致的问题。
scala> var x: List[Int] = List(1)
x: List[Int] = List(1)
scala> x :+= 2
scala> x
res1: List[Int] = List(1, 2)
如果您想要前置,也可以使用+:
。
答案 1 :(得分:2)
查看Scala API中的List。将元素添加到列表的方法是:
2 +: x
x :+ 2
2 :: x