首先,這裏是代碼3個片段與其上的Scala 2.10.2理解類型轉換/錯誤Scala中在該示例
// 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]]
。
究竟發生了什麼?