使用 + 运算符时类型不匹配
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 默认使用字符串连接,从而导致类型不匹配错误。
我目前正在尝试学习如何使用 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 默认使用字符串连接,从而导致类型不匹配错误。