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

non*_*com 7 import inheritance scala

我有以下代码:

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

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

object C {
  var value = 5
}
Run Code Online (Sandbox Code Playgroud)

类中的值B是不可见的,这意味着类的固有导入A没有被继承B,尽管value内部完全可见A.如何实现继承导入的效果,以便我可以避免在特性A混合的多个类中显式导入相同的东西?

mis*_*tor 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
Run Code Online (Sandbox Code Playgroud)

Scalaz 6中使用这个习惯用法对用户进行尽可能少的导入.