Ich würde gerne eine Fallklasse verlangen, um auch mindestens eines von bestimmten Merkmalen zu implementieren.Erfordert eine bestimmte Eigenschaft -> Selbst Typ Annotation?
Ich dachte, ich selbst Typenannotationen wie diese verwenden:
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
jedoch mit einem mixin Instanziierung nicht kompiliert. Also, wenn ich das tue:
val date = new DisqualifiedDate(Set(datePath),cal) with Circular
dies kompiliert nicht.
Mache ich etwas falsch oder ist der ganze Ansatz fehlerhaft?
Gelöst: Es funktioniert perfekt mit einer normalen Klasse, d. H. Nicht-Case-Klasse. Ich bin nicht sicher, warum das so ist, aber damit bin ich einverstanden.
Selbst Typ bedeutet eine konkrete Klasse es implementieren müssen. Wollten Sie das DisqualifiedDate später verlängern? Das Wortspiel auf Absicht/Verlängerung war unbeabsichtigt. –
Ich möchte sicherstellen, dass ein DisqualifiedDate auch mindestens eine Art von DateError enthält. Die Eingabe funktioniert also nicht, da muss etwas falsch sein. DateError sollte markieren, was genau hier passiert ist. Es sollte möglich sein, dass ein DisqualifiedDate mehr als einen Fehlertyp hat. Ich möchte das DisqualifiedDate nicht verlängern. –
Wahrscheinlich machen Sie etwas falsch und der Ansatz ist fehlerhaft. "Bear" eine Art von DateError bedeutet, dass info in den Typ oder als ein Begriff (das heißt, ein Mitglied, das sagt, welche DateError) codiert ist. Selbst-Typ bedeutet, dass Sie ein DisqualifiedDate mit Circular usw. haben. –