ДляScala - Перекрытие метод черты используя вспомогательный контекст, связанный метод
sealed trait User {...}
sealed trait Trader extends User {...}
trait AuthObject
trait AuthUserObject {
def authorize[U <: User](u: U): Boolean
}
trait AuthTraderObject extends AuthUserObject {
def authorize[T <: Trader](t: T): Boolean
}
object HasPaidTax extends AuthTraderObject {
def authorize[T <: Trader](t: T): Boolean = t.hasPaidTax
}
Это оленья кожа сборки. Ошибка:
Error:(15, 7) overriding method authorize in trait AuthUserObject of type [U <: users.User](u: U)Boolean; method authorize has incompatible type def authorize[T <: Trader](t: T): Boolean ^
Мне нужно ограничить AuthTraderObject
к Trader
пользователю, так как только трейдер платит налог. Пожалуйста, как это возможно?
Использование 'типа U <: User' будет представлять его как 'AuthUserObject.this.U'. Будет работать в явных случаях. Но не работает с абстрактными методами абстрактного класса или признака верхнего типа, ограниченного 'trait Authorizer [U <: User]' – Orar