1

「単純な」問題で立ち往生しています。ファイルのメタデータを扱っています。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 型システムで表現する方法はありますか?

4

1 に答える 1