Вы не можете импортировать из определения черты. Но можно импортировать из экземпляра определения черты. 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 REPL
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