まず、コードの 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"))
1 番目と 3 番目のスニペットは型を として表示 (表示) しList[List[String]]
ますが、戻り値の型を として指定する 2 番目のスニペットはList[List[String]]
コンパイルに失敗します。最初の戻り値の型は ですSeq[List[String]]
が、 として出力されますList[List[String]]
。
ここで正確に何が起こっているのですか?