为什么在Scala中追加List返回其他List类型?

pmk*_*eld 1 collections types scala list

由于搜索:+不会产生任何结果(谢谢谷歌!)我找不到任何问题的答案:

为什么是:

a :+ b
Run Code Online (Sandbox Code Playgroud)

导致

List[Any]
Run Code Online (Sandbox Code Playgroud)

如果'a'和'b'都是类型的

List[Int]
Run Code Online (Sandbox Code Playgroud)

自己尝试一下,下面不会编译(Scala 2.11.6,Idea14)​​:

object AAA extends App {
  val a: List[Int] = List[Int]()
  val b: List[Int] = List[Int]()

  val x: List[Int] = a :+ b
}
Run Code Online (Sandbox Code Playgroud)

thx提前

gzm*_*zm0 6

:+将单个元素附加到a List.所以你要附加一个List[Int]a List[Int],产生类似的东西(if abare都设置为List(1, 2)):

List(1, 2, List(1, 2))
Run Code Online (Sandbox Code Playgroud)

斯卡拉计算元素类型(之间最常见的类型Int),你添加的东西(List[Int]),这是Any.

您可能想要连接两个列表:

val x: List[Int] = a ++ b
Run Code Online (Sandbox Code Playgroud)