「単純な」問題で立ち往生しています。ファイルのメタデータを扱っています。trait ReadOnlygetter のみを使用した読み取り専用ビュー ( ) と、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では、この制約を次のように定義したいと思います。ReadWriteReadOnlyReadWrite
trait ReadWrite[T <: ReadOnly] extends T {
def snaphsot: T
}
class type required but T foundしかし、 (コンパイラメッセージ)のためにコンパイルされません。この制約を Scala 型システムで表現する方法はありますか?