В Scala я видел конструкции
trait T extends S
и
trait T { this: S =>
используется для достижения аналогичных вещей (а именно, что абстрактные методы в S
должны быть определены до создания экземпляра). Какая разница между ними? Почему вы используете один над другим?