以下のタイプT
はサブタイプFruit
です。 Apple
もサブタイプFruit
です。だから、コンパイラは、なぜタイプの帰納法が以下で使われるとき、AppleをTに強制しないのですか?なぜそれを動作させるために明示的なキャスティングが必要なのですか?タイプを推論するときの強制のルールは何ですか?サブタイプと型変換
trait Fruit
case class Apple(id: String) extends Fruit
type T <: Fruit
val t: T = Apple("apple") // why doesn't the compiler coerce Apple to T?
val t: T = Apple("apple").asInstanceOf[T] // works!
したがって、 'Pear <:Fetus'はPearが' Fetus'の** specific **サブタイプであり、** specific **サブタイプが 'Apple'でないことを意味しますか?しかし、なぜ「梨」は「アップル」ではないのですか?コンパイラが知っていることは、 'Pear'が' Fetus'のサブタイプであることです。アップルでも、アップルでもないかもしれません。 – Samar
私は答えを –
あなたの答えをありがとう、それは今意味があります。 – Samar