2

Scala List は次のように宣言されています

sealed abstract class List[+A] extends AbstractSeq[A] with LinearSeq[A] with     Product with GenericTraversableTemplate[A, List] with LinearSeqOptimized[A, List[A]] with java.io.Serializable

List の先頭に要素を追加するメソッドは、次のように宣言されます。

def +:(elem: A): List[A]

型 A は共変であるのに、A が +: の反変の位置にあるのにコンパイラが文句を言わないのはなぜですか?

4

1 に答える 1

3

その完全な署名は次のとおりです。

def +:[B >: A, That](elem: B)(implicit bf: CanBuildFrom[List[A], B, That]): That

質問で言及したドキュメントは単純化されたものにすぎません。メソッドの完全な署名を確認する必要があります。

于 2015-12-12T10:36:12.357 に答える