我有以下代码:
trait A {
import org.somepackage.C._
}
class B extends A {
def getValue = value
^^^^^
}
object C {
var value = 5
}
类中的值
B
不可见是什么意味着类 A
的固有导入不是由 B
继承的,虽然 value
在内部完全可见 A
.如何实现也继承导入的效果,以便我可以避免在 trait A
的多个类中显式导入相同的东西混入?
最佳答案
不是一流实体的导入不会表现出您期望的行为。您可以改为重构您的设计以实现接近的目标:
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 中使用,以尽可能少的进口对用户征税。
关于Scala - 将特征与其导入混合(继承导入),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9307567/