我对Scala还不熟悉。我在尝试将两个序列附加在一起时遇到了麻烦,因为编译器抱怨Seq的类型。我想从Seq [String] var开始,并用添加两个Seq [String]&替换它。在下面的REPL会话中,我们看到y:+ x是Seq [Object],但为什么?
Welcome to Scala version 2.11.2 (Java HotSpot(TM) 64-Bit Server VM, Java 1.7.0_71).
Type in expressions to have them evaluated.
Type :help for more information.
scala> val x = Seq[String]("a")
x: Seq[String] = List(a)
scala> var y = Seq[String]("b")
y: Seq[String] = List(b)
scala> y = y :+ x
<console>:9: error: type mismatch;
found : Seq[Object]
required: Seq[String]
y = y :+ x
^
scala> val z = y :+ x
z: Seq[Object] = List(b, List(a))
答案 0 :(得分:4)
这是因为:+
运算符需要单个项目,而不是序列。因此,您尝试执行的操作与var y:List[String] = List("b", List("a"))
相当,后者无效。您可以在the documentation of Seq中看到这一点,其中显示:+
的类型为A => Seq[A]
。
我想您可能想要使用++
运算符。