С огромной поддержкой воспроизведенных в Scala, что это лучший способ достижения следующих циклические оценок параметров, где C
в Command[A, C]
является подтипом самого по себе (то есть UserCommand
или SystemCommand
)?Реферирование подтипа внутри признака в Scala
Примечание: Я не указал ограничения нижнего/верхнего типа для C
- как следует из вопроса, я не уверен, как выразить это способом, который компилируется, или если мне не хватает функции в Scala, специально предназначенной для решения этот тип циклической задачи.
trait CommandPrerequisite[-A, +C] {
val command: C
def isValid(aggregate: A): Boolean
}
trait Command[A, C] {
def prerequisites: List[CommandPrerequisite[A, C]]
}
trait SystemCommand extends Command[System, SystemCommand] {
// System specific definitions.
}
trait UserCommand extends Command[User, UserCommand] {
// User specific definitions.
}