1

与えられた特性:

trait HasSize {
  def size() : Int
}

trait StorageTrait extends HasSize {
  def something() : Unit
}

trait YetAnotherStorageTrait extends HasSize {
  def anotherSomething() : Unit
}

クラスを作りたい

class InMemoryStorage extends StorageTrait with YetAnotherStorageTrait {
   //...
}

現在、StorageTrait のメソッドsizeはメソッド YetAnotherStorageTrait とは異なるものを返します (これはまだサイズですが、コレクションは異なります)。

Scalaでそのようなケースを設計する正しい方法は何ですか?

4

1 に答える 1

1

質問を正しく理解していれば、sizeメソッドに異なる応答をする特性を継承するクラスがありますか? その場合、mixin の代わりに合成を使用する以外に、このあいまいさを解決する方法はありません。

class InMemoryStorage
  def mainStorage: StorageTrait
  def auxStorage: YetAnotherStorageTrait

  def mainSize = mainStorage.size
  def auxSize  = auxStorage.size
}

それはあなたが見ているものですか?

于 2013-01-06T11:25:23.350 に答える