Scalaを学び始めたばかりです。
http://www.scala-lang.org/node/111の例で遊んでいたときに、型に問題があることがわかりました。
object Main extends App {
def even(from: Int, to: Int): Vector[Int] =
for (i <- from until to if i % 2 == 0) yield i
Console.println(even(0, 20).getClass())
}
これは、次のエラーでコンパイルされません。
<console>:9: error: type mismatch;
found : scala.collection.immutable.IndexedSeq[Int]
required: Vector[Int]
for (i <- from until to if i % 2 == 0) yield i
^
ただし、戻り値の型指定がなくても動作し、クラスは Vector です。
object Main extends App {
def even(from: Int, to: Int) =
for (i <- from until to if i % 2 == 0) yield i
Console.println(even(0, 20).getClass()) // => class scala.collection.immutable.Vector
}
これは矛盾しているようです。コンパイル型エラーの原因を教えてください。