3
我打算擁有一個可以通過多個類擴展的「value」屬性特徵。然後我需要能夠比較彼此之間的特質的不同實例。首先,我想檢查特徵上定義的值 - 如果兩個實例的值相同,那麼我想觸發特定於孩子的方法,它將比較兩個相同類型的子實例。忽略trait的通用方法而不鑄造
我希望我解釋不夠清楚......
我在下面的代碼編寫的,但是ChildOne類犯規編譯 - 錯誤我得到:
類ChildOne需要是抽象的,因爲方法childCheck在性狀 ParentType的類型的(其他:ChildOne.this.T)沒有定義布爾 (注意ParentType.this.T不匹配com.cards.ChildOne)
trait ParentType {
val value: Int
type T <: ParentType
def parentCheck(other: T): Boolean = {
if (this.value == other.value) childCheck(other)
else this.value > other.value
}
def childCheck(other: T): Boolean
}
case class ChildOne(name: String) extends ParentType {
val value = 1
override def childCheck(other: ChildOne): Boolean = {
true //some custom logic for each child...
}
}
我可以將孩子的方法的參數更改爲父類型,然後施放它,但我想避免這種情況,我想知道是否有更好的方法來實現我想實現的目標?
任何幫助表示讚賞。