少なくとも1つの特定の特性を実装するためにケースクラスを必要としたいと思います。特定の特性を必要とする - >セルフタイプ注釈?
私は、私はこのような自己型注釈を使用することができ、考えた:
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
しかしミックスインをインスタンス化すると、コンパイルされません。だから、私がするとき:
val date = new DisqualifiedDate(Set(datePath),cal) with Circular
これはコンパイルされません。
私は何か間違っているのですか、これは全体的なアプローチに欠陥がありますか?
解決済み:正常なクラス、つまり非ケースクラスで完全に機能します。私はなぜこれがそうであるか分からないが、私はそれで大丈夫だ。
セルフタイプの具象クラスがそれを実装しなければならないことを意味します。あなたはDisqualifiedDateを後で延長するつもりでしたか?意図/延長に関する言い訳は意図的ではありませんでした。 –
DisqualifiedDateに少なくとも1つのタイプのDateErrorも含まれていることを確認します。入力が機能しないので、何か間違っているはずです。 DateErrorはここで正確に何が起きたのかを示す必要があります。 DisqualifiedDateに複数のタイプのエラーが発生する可能性があります。私はDisqualifiedDate自体を拡張したくありません。 –
おそらくあなたは何か間違っているし、アプローチに欠陥があります。 "bear"という型のDateErrorは、その情報が型または用語(つまり、どのDateErrorを示すメンバ)としてエンコードされていることを意味します。セルフタイプとは、CircularなどのDisqualifiedDateを持っていることを意味します。 –