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 的方法大小返回与方法 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 回答