从
从
我希望有人能够直观地解释为什么
有Why are Arrays invariant, but Lists covariant?,但我正在寻找一个更直观的解释,不涉及(很重的)类型系统。
相关:Why is Scala's immutable Set not covariant in its type?
List[+T]
,我理解到:一组狗的列表也是动物的列表,这与直觉完全符合。从def :: [B >: A](elem: B): List[B]
我理解到:我可以将一个动物(B
,不太具体)添加到一组狗(A
,更具体)的列表中,并得到一组动物的列表。这也符合直觉。所以基本上List
还不错。从
Array[T]
,我理解到:狗的数组不是(不能用作)动物数组,这相当反直觉。狗的数组确实也是动物的数组,但Scala显然不同意。我希望有人能够直观地解释为什么
Array
是不变的,最好是用狗(或猫)来解释。有Why are Arrays invariant, but Lists covariant?,但我正在寻找一个更直观的解释,不涉及(很重的)类型系统。
相关:Why is Scala's immutable Set not covariant in its type?