「単純な」問題で立ち往生しています。ファイルのメタデータを扱っています。trait ReadOnly
getter のみを使用した読み取り専用ビュー ( ) と、getter と setter を使用した読み書きビュー ( )の両方を提供したいと考えていtrait ReadWrite
ます。各読み取り/書き込みビューは、読み取り専用ビューを拡張する必要があります。
trait ReadOnly
trait ReadWrite
trait BasicRO extends ReadOnly {
def foo: String
def bar: Int
}
class BasicRW extends ReadWrite with BasicRO {
def foo: String = ???
def foo_=( str: String ): Unit = ???
def bar: Int = ???
def bar_=( i: Int ): Unit = ???
}
ここまでは順調ですね。しかし今、対応するビュー (サブクラスによって拡張されたものと同じ)を返すsnapshot
メソッドを追加したいと思います。pseudo-scalaでは、この制約を次のように定義したいと思います。ReadWrite
ReadOnly
ReadWrite
trait ReadWrite[T <: ReadOnly] extends T {
def snaphsot: T
}
class type required but T found
しかし、 (コンパイラメッセージ)のためにコンパイルされません。この制約を Scala 型システムで表現する方法はありますか?