首先,这里有 3 段代码及其在 Scala 2.10.2 上的输出
// 1.
def one: Seq[List[String]] =
Seq(List("x")) ++ List(List("x"))
println(one)
// => List(List(x), List(x)))
// 2.
def two: List[List[String]] =
Seq(List("x")) ++ List(List("x"))
println(two)
// =>
// error: type mismatch;
// found : Seq[List[String]]
// required: List[List[String]]
// Seq(List("x")) ++ List(List("x"))
// one error found
// 3.
println(Seq(List("x")) ++ List(List("x")))
// => List(List(x), List(x))
所有 3 个片段中的主要代码都是相同的——Seq(List("x")) ++ List(List("x"))
第一个和第三个片段将类型显示(打印)为List[List[String]]
,但第二个片段将返回类型指定为List[List[String]]
无法编译。第一个的返回类型是Seq[List[String]]
,但它打印为List[List[String]]
.
这里到底发生了什么?