在一個模型類,我有一個簡單getter
功能,像這樣:爲什麼scalac會因爲匹配/個案返回類型而推斷`Foo with Bar`而不僅僅是'Foo`?
def geoLoc = {
geoQuant match {
case "COUNTRY" => Country.find.byId(geoLocId)
case "PROVICE" => Province.find.byId(geoLocId.toLong)
case "CITY" => City.find.byId(geoLocId.toLong)
case "STREET" => Street.find.byId(geoLocId.toLong)
}
}
的想法是獲取對象的地理位置 - 它可以是任四種類型。從我所看到的功能geoLoc
有一個返回類型,它是所有的超類:Country
,Province
,City
& Street
- 它們擴展了Model
類。
取而代之的是函數的返回類型是Model with GeoEntity
,其中GeoEntity
是一個特性,每個類都與Model
一起。
爲什麼會發生這種情況?我能做些什麼來使函數返回具有模式匹配的特定類型?