1
私は、REPLにベクトルを表示するvecステートメントだけをREPLに入力すると動作する以下のようなスカラオブジェクトを持っていました。しかし、もし私が戻り値の型Vector [Int]のメソッドdef randomNumbersを使用すると、コンパイルエラーが発生するのはなぜですか?特徴とコンクリートクラスを持つスカラリターンタイプ
val vec = for (i <- 0 to 100) yield ((r.nextInt(100 - 10) + 1) + 10)
scala.collection.immutable.IndexedSeq[Int] = Vector(38, 2.......
これまでのところ、Vectorは適切な型であり、IndexedSeq [Int]は特長です。
以下ベクタ
final class Vector[+A] extends AbstractSeq[A] with IndexedSeq[A] with GenericTraversableTemplate[A, Vector] with IndexedSeqLike[A, Vector[A]] with VectorPointer[A] with Serializable with CustomParallelizable[A, ParVector[A]]
ためのDEFで、なぜそれが文句を言う必要がありますか?
object Random extends App {
def randomNumbers: IndexedSeq[Int] = {
val r = scala.util.Random
val vec = for (i <- 0 to 100) yield ((r.nextInt(100 - 10) + 1) + 10)
return vec
}
}
はエラー与える:
object Basics extends App {
def randomNumbers: Vector[Int] = {
val r = scala.util.Random
println(r.nextInt * 0.1 + 0.1)
println(r.nextFloat)
println(r.nextDouble)
println(r.nextInt)
println(r.nextPrintableChar)
val vec = for (i <- 0 to 100) yield ((r.nextInt(100 - 10) + 1) + 10)
return vec
}
}
型の不一致が。 (ベクトルがIndexedSeq特性を実装するため)IndexedSeqを定義することができますが、IndexedSeqを割り当てることができません(indexedSeqの特性を実装しているため)scala.collection.immutable.IndexedSeq [Int] required:Vector [Int]