Я пытаюсь выяснить, в чем разница между смешиванием признаков с помощью шаблона Cake и смешиванием их с помощью старомодного расширения. Вот два моих примера:
С помощью расширения
trait X {
def foo()
}
trait Y extends X {
def bar()
}
class Z extends Y {
def foo() = ()
def bar() = ()
}
И через Cake
trait N {
def foo()
}
trait M {
this: N =>
def bar()
}
class U extends M with N {
def bar() = ()
def foo() = ()
}
Каковы преимущества метода торта? Они оба одинаковы для меня. Может я и ошибаюсь, но принципиальной разницы не вижу.