В Scala мы используем смесь в следующим образом:Есть ли «A с B» типа?
class C extends A with B
Я понимаю, это заявление как C
подкласс A with B
. Это правда? Или C
- это просто подкласс как A
, так и B
(я не думаю, что это возможно на JVM, который не поддерживает многоуровневое)?
Если A with B
- это тип, почему эта линия не работает?
classOf[A with B]
Еще одна причина, почему я считаю A with B
типа является то, что он может быть использован в шаблоне сопоставляются:
val c = new C
val u = c match { case a: A with B => 1 } // 1