我遇到类似以下情况:
package A
trait A1{
def a2 = 0
}
package B
trait B1{
def b2 = {
import A.A1._ // Error: trait A1 exists, but it has no companion object
a2
}
}
这可能不是一个好的设计,但将来会更改。有办法解决这个错误吗?
答案 0 :(得分:1)
您无法从特征定义中导入。但是可以从特征定义的实例中导入。 A1
是特质
import A.A1._
以上说法无效。导入A.A1._
时,Scala编译器正在寻找对象A1
,但是A1
是特征,没有A1
可用。因此它抱怨A1
特质没有伴侣对象。
伴侣对象是与类/特征定义同名的对象
如果要将特征A1
(特征定义)导入作用域。随便
import A.A1
您可以导入对象/伴侣对象的内部
object Bar {
val x = 1
}
import Bar._
现在x
在范围内可用
如果Foo
是对象,则import Foo._
有效
scala> trait A { val a = 1}
defined trait A
scala> val foo = new A{}
foo: A = $anon$1@9efcd90
scala> import foo._
import foo._
scala> a
res0: Int = 1