我有以下代码:
trait A {
import org.somepackage.C._
}
class B extends A {
def getValue = value
^^^^^
}
object C {
var value = 5
}
类B
中的值不可见,这意味着A
没有继承类B
的固有导入,尽管value
在A
内完全可见{1}}。如何实现继承导入的效果,这样我就可以避免在trait A
混入的多个类中显式导入相同的东西?
答案 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中用于向用户征收尽可能少的导入。