使用 + 运算符时类型不匹配

Type mismatch when using + operator

我目前正在尝试学习如何使用 Scala,但遇到了一些语法问题。

当我在 Scala 提示符中输入时:

import scala.collection.immutable._
var q = Queue[Int](1)
println((q+1).toString)

我收到以下错误:

<console>:12: error: type mismatch;
 found   : Int(1)
 required: String
              println((q+1).toString)

我只想使用定义如下的队列的重载 + 运算符:

def +[B >: A](elem : B) : Queue[B] Creates a new queue with element added at the end of the old queue. Parameters elem - the element to insert

但似乎scala 进行了字符串连接。那么,你能帮我理解如何将一个元素添加到队列中吗(不使用 enqueue 效果很好;我想使用 + 运算符)?也许,你能给我一些关于这种对初学者来说似乎有点奇怪的行为的解释吗?

谢谢

您使用了错误的运算符(参见 docs):

scala> var q = Queue[Int](1)
q: scala.collection.immutable.Queue[Int] = Queue(1)

scala> q :+ 2
res1: scala.collection.immutable.Queue[Int] = Queue(1, 2)

scala> 0 +: q
res2: scala.collection.immutable.Queue[Int] = Queue(0, 1)

由于 + 运算符在给定这些类型时没有其他含义,因此 Scala 默认使用字符串连接,从而导致类型不匹配错误。