にconfromingない配列をパラレル:Scalaは私はスカラ座に比較的新しいですが、私は、私はその型システムと並列コレクションを理解し、私はこのエラーを理解できないと思うのSeq
私は関数に
def myFun(a : Seq[MyType], b : OtherType) : Seq[MyType] = {
val parA = a.par
def update(q : OtherType)(x : MyType) : MyType = x.updated(q)
parA.map(update(b))
を持っています
私は
Error:(63, 18) type mismatch;
found : scala.collection.parallel.ParSeq[MyType]
required: Seq[MyType]
parA.map(update(b))
^
を言うエラーParSeq
がSeq
のサブタイプであるならば、なぜこの作品がないのですか?
(私はこれを書いていたので、修正するには.seq
メソッドを呼び出すことができますが、どうしてですか?そして、IDEが私に指示する.toSeqの違いは何ですか?.seq
私は答えを完全に理解していますが、Scalaライブラリ2.11.8では以下のようになっています: 'trait ParSeq [+ T] scala.collection/*。immutable * /。GenSeq [T] ParSeqLike [T、ParSeq [T]、scala.collection.immutableとscala.collection.parallel.ParSeq [T] ParIterable [T] GenericParTemplateと と[T、ParSeq] 有します。配列[T] {オーバーライドDEFコンパニオン:ParSeq [T] =この :GenericParCompanion toSeq DEF [ParSeq] = ParSeq オーバーライドとGenericCompanion [ParSeq]} ' そうParSeqは配列に混合します。または私は間違っていますか? – longliveenduro
@longliveenduro 'Seq'は' ParSeqLike'ミックスインの型パラメータの1つですが、 'ParSeq'はそれを直接混合しません。 –