我具有以下特徵:類型參數的類型不匹配
sealed trait Tree[+A]
case class Leaf[A](value: A) extends Tree[A]
case class Branch[A](left: Tree[A], right: Tree[A]) extends Tree[A]
然後我定義一個變量與Branch
類型:上述
val t = Branch(Branch(Leaf("S"), Leaf(2)), Leaf(99))
代碼工作正常。但是,當我將其更改爲:
val t = Branch[Int](Branch(Leaf("S"), Leaf(2)), Leaf(99))
編譯器會抱怨:
Error:(41, 37) type mismatch;
found : String("S")
required: Int
val t = Branch[Int](Branch(Leaf("S"), Leaf(2)), Leaf(99))
當我確定第一Branch
類型(在這種情況下爲int),那麼節點將固有的家長嗎?
因此,當我不強制使用適當的類型時,任何類型的'Any'都會被使用。 –
不,第一種常見的類型將被使用。在這種情況下,它是「任何」。 –
當我強制類型是一個'Int',那麼所有類型的節點和葉子將是'Int'?它會從分支固有嗎? –