我(有點)瞭解Scala的類型系統的基礎知識,但還不夠好!爲什麼下面這兩個函數的返回類型不被認爲是等價的?類型邊界/多態混淆
trait Base[T]
case class Foo() extends Base[Foo]
case class Bar() extends Base[Bar]
def willNotCompile[T <: Base[_]](x: Int): T =
if(x < 10) new Foo() else new Bar()
def compilesFine(x: Int): Base[_] =
if(x < 10) new Foo() else new Bar()