Scala - 将其特征与其进口混合(继承进口)

时间:2012-02-16 08:03:44

标签: scala inheritance import

我有以下代码:

trait A {
  import org.somepackage.C._
}

class B extends A {
  def getValue = value
                 ^^^^^
}

object C {
  var value = 5
}

B中的值不可见,这意味着A没有继承类B的固有导入,尽管valueA内完全可见{1}}。如何实现继承导入的效果,这样我就可以避免在trait A混入的多个类中显式导入相同的东西?

1 个答案:

答案 0 :(得分:11)

不是第一类实体的进口不会表现出您期望的行为。相反,您可以重新构建您的设计以实现紧密结合:

trait A with C {

}

class B extends A {
  def getValue = value // Now this will work.
}

trait C {
  var value = 5
}

object C extends C

这个成语在Scalaz 6中用于向用户征收尽可能少的导入。