簡単な質問。::
クラス不変のメソッドList
は次のように定義されます。
封印された抽象クラスリスト[+A]..。
def :: [B>:A](x:B):リスト[B]
私が持っているとしましょう:
class Fruit
class Mango extends Fruit
scala> val d:List[Fruit] = List.empty[Fruit]
d: List[Fruit] = List()
scala> new Mango :: d
res5: List[Fruit] = List(Mango@272d6774)
今、私はここで混乱しています。::
宣言によると、引数の型は反変でなければなりません。つまり、この場合は、そのようなクラスです>: Fruit
(なぜそのように作成されているのか理解しています)。しかし、私が得られMango <: Fruit
ないのは、、では、なぜコンパイラはエラーをスローしないのですか?