我想要求一個case class來實現某些特性中的至少一個。要求某種特質 - >自我類型註釋?
我想,我可以使用自助式註釋是這樣的:
case class DisqualifiedDate(override val paths: Set[DatePath],
override val cal: Calendar) extends CalendricDate(paths,cal){
this: DateError =>
val stringPrefix = "DisqualifiedDate"
}
sealed trait DateError
trait Circular extends DateError
trait Contradictory extends DateError
trait Inaccessible extends DateError
與一個mixin不會編譯不過實例。所以,當我這樣做:
val date = new DisqualifiedDate(Set(datePath),cal) with Circular
這不會編譯。
我做錯了什麼或者這種做法有缺陷嗎?
已解決:它與普通類,即非案例類完美合作。我不確定這是爲什麼,但我確定。
自我型是指一個具體的類必須實現它。你打算在以後延長DisqualifiedDate嗎?意圖/延伸的雙關是無意的。 –
我想確保DisqualifiedDate也至少有一種類型的DateError。所以輸入不起作用,關於它的一定是錯誤的。 DateError應該標記這裏發生了什麼。 DisqualifiedDate應該可能有多種類型的錯誤。我不想延長DisqualifiedDate本身。 –
也許你做錯了什麼,而且方法有缺陷。 「承載」DateError類型意味着信息以類型或術語編碼(即說明哪個DateError成員)。自我類型意味着您的通知有取消資格日期等。 –