2
如何在繼承特徵中定義的方法中強制子類型?我在什麼地方放?下面在方法簽名中允許子類型的特徵
trait Organism {
def reproduce(org:???):Bool
}
class Amoeba extends Organism {
def reproduce(org:Amoeba) = {// so cute..}
}
class Dinosaur extends Organism {
def reproduce(org:Dinosaur) = { // so scary}
}
我的客戶端代碼將是這樣的:
object BoozeParty {
def gonuts() = {
val (maleOrganism:Organism,femaleOrganism:Organism) = getOrganisms()
maleOrganism.reproduce(femaleOrganism)
}
}
上面的代碼應該工作,不論我通過方法getOrganisms發送恐龍或變形蟲(),因爲它返回一個元組(生物,生物)
,我要實現的兩個概念:
- 阿米巴知道如何MA te與變形蟲和恐龍知道如何與恐龍交配 。所以讓他們弄清楚錯綜複雜的細節。
- 恐龍不應該傳給變形蟲。只有變形蟲變形蟲
我很確定你可以定義一個引用自身的特徵,所以它會是特質組織{def rep(org:Org)} – Alex
但那可以讓我用恐龍代表阿米巴嗎?我不想要 – RAbraham