я столкнулся следующее в Scala коде:Что именно этот импорт точно означает в Scala?
class MyClass { ... val a = new A; import a._ }
Что именно val a = new A; import a._
означает?
я столкнулся следующее в Scala коде:Что именно этот импорт точно означает в Scala?
class MyClass { ... val a = new A; import a._ }
Что именно val a = new A; import a._
означает?
Импортирует методы и переменные объекта. Поэтому, если вы хотите позвонить a.foo()
, вы можете просто позвонить foo()
.
Это означает, что все методы и переменные объекта a
объекта A
теперь доступны в этом блоке (области) без явного упоминания a
. Так что, если A
имеет метод bar()
теперь вы можете сказать:
bar()
вместо
a.bar()
, но только в пределах, где import
определена.
Поясним это с чем-то вы должны быть знакомы с:
println("Hello world")
Возникает вопрос: почему это работает? Нет объекта с именем println
с методом apply
, который является обычным объяснением для кода, который выглядит так. Ну, как это происходит, приведенный выше код действительно делает это:
Predef.println("Hello world")
Другими словами, println
является метод на объекте scala.Predef
. Итак, как вы можете использовать его, как указано выше? Ну, как это:
Импорт содержимого стабильного опорного (т.е. не var
или def
) сделает его методы доступны без префикса их reference.
.
Это также делает любые implicits, определенные в нем имеется, что, как неявные преобразования, определенные внутри scala.Predef
сделаны доступными, а также - Scala импортирует содержимое java.lang
, scala
и scala.Predef
(в таком порядке, так что последний из них переопределение более ранние).
+1 потому что вы упомянули _stable reference_ –