Используйте классы, определенные в чертах на одном и том же пакете в Scala. - PullRequest
0 голосов
/ 28 августа 2018

Я считаю, что в Scala я могу использовать классы, определенные в других чертах внутри моей черты. Примерно так:

trait A{
  sealed abstract class C
}

trait B{
  import A.C
  val l: List[C]
}

Однако я понимаю, что ни A, ни C. не распознаются.

Что я делаю не так?

1 Ответ

0 голосов
/ 28 августа 2018

Вам не нужен импорт здесь. A и C доступны внутри B в типовой позиции без импорта.

Попробуйте

trait A {
  sealed abstract class C
}

trait B {
  val l: List[A#C]
}

или

trait A {
  sealed abstract class C
}

trait B {
  type C = A#C
  val l: List[C]
}

В противном случае вы могли бы иметь в виду

trait A {
  sealed abstract class C
}

val a = new A {}

trait B {
  import a.C
  val l: List[C]
}

или

object A {
  sealed abstract class C
}

trait B {
  import A.C
  val l: List[C]
}
...