我刚刚开始学习 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
}
这似乎是矛盾的。让我知道编译类型错误的原因是什么。