Почему мой объект не является членом пакета , если он находится в отдельном исходном файле?

У меня проблема с доступом к объекту, определенному в корневом пакете. Если весь мой код находится в одном файле, он работает нормально, но когда я разбиваю его на два файла, я не могу передать его через компилятор.

Это работает нормально:

Все в одном файле с именем packages.scala :

object Foo
  val name = "Brian"
}

package somepackage {
  object Test extends App {
    println(Foo.name)
  }
}

Свидетель:

$ scalac packages.scala
$ scala -cp . somepackage.Test
Brian

Но если я разделю код на два файла:

packages.scala

object Foo {
  val name = "Brian"
}

packages2.scala

package somepackage {
  object Test extends App {
    println(Foo.name)
  }
}

все терпит неудачу:

$ scalac packages.scala packages2.scala
packages2.scala:3: error: not found: value Foo

Поэтому я пытаюсь сделать ссылку на Fooабсолютной:

...
    println(_root_.Foo.name)
...

Но это тоже не работает:

$ scalac packages.scala packages2.scala
packages2.scala:3: error: object Foo is not a member of package <root>

If Fooне является членом корневого пакета, где же он?

19
задан Martin McNulty 22 March 2012 в 12:10
поделиться