Örülök, hogy neked is tetszik!
Annyi kiegészítést tennék a kódhoz, hogy nem szokás aláhúzással kezdeni az azonosítókat, illetve ami nem függvény, hanem konstans, azt lehet val-lal definiálni akkor is, ha a szülőben def-volt, mint itt a name, illetve nem szükséges a végére a zárójel, ahogy a func végére se tettél. (A func végére inkább lehetne rakni, mert az tényleg függvény, szemben a name-mel).
Én inkább ilyenre írnám:
trait Base {
private def name = "Base"
def func = name
}
trait A extends Base {
private val name = "A"
override def func = name + " extends " + super.func
}
trait B extends Base {
private val name = "B"
override def func = name + " extends " + super.func
}
val x = new Base with A with B
val y = new Base with B with A
println(x.func)
println(y.func)