Во-первых, вы не можете определить пакеты в REPL.Причина этого в том, что ваши REPL-операторы фактически обернуты в object
s.Вот почему ваша команда: load терпит неудачу.Вам нужно будет скомпилировать ваши исходные файлы и добавить их в путь к классам, если вы хотите использовать пакеты.
При попытке разрешить импортируемый символ компилятор пытается найти его в вашей действительной области видимости, т.е. когда вы пишете
import a._
import b._
, это импортирует все из package a
и все изpackage a.b
.Если вы находитесь внутри package a
, тогда b
уже находится в вашей области, и второго импорта достаточно.Компилятор также изначально импортирует scala._
, поэтому вы также можете использовать относительный импорт, например import xml._
, для импорта scala.xml._
.
Кроме того, есть функция, называемая вложенными пакетами, которая позволяет писать B.scala
как
package a
package b
class B { /* .... */ }
, в результате чего в этом файле импортируется все, начиная с package a
.
Если компилятор не может разрешить импорт в относительный символ, он будет выглядеть в пакете по умолчанию (_root_
).