在scala的同一包上使用特征中定义的类。

时间:2018-08-28 12:37:41

标签: scala traits

我相信在Scala中,我可以使用特征中其他特征定义的类。类似于以下内容:

trait A{
  sealed abstract class C
}

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

但是,我发现A和C都不被识别。

我在做什么错了?

1 个答案:

答案 0 :(得分:2)

您不需要在这里导入。 AC可以在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]
}