1

我在将包导入包对象时遇到问题。它似乎在 Eclipse 中不起作用,所以我切换到了 intellij。在某一时刻,该功能似乎正在发挥作用,因此我为大多数包创建了包对象。现在它似乎根本不起作用。这是文件 package.scala 中的一个包对象,包文件本身编译得很好:

package rStrat.rSwing
package testSw //Edited for clarity

object testSw
{
  import rStrat._
  import rSwing.topUI._
}

这是来自同一模块和包的类文件。

package rStrat.rSwing.testSw

object MainTest {
  def main(args: Array[String])
  {
    val testApp = new AppWindow //Appwindow is a member of topUI
    testApp.open
  }
}

如果我将 topUI 包直接导入 MainTest 文件,它工作正常。我是否尝试导入整个包或特定类都没有区别。这是合法的scala吗?IDE有问题吗?

我正在使用 Scala 2.92 Final、Intellij 11.1.1、JDK 1.6.0_31、Eclipse 3.7.2

4

2 回答 2

4

Scala 没有一流的进口。一个包只能包含类和特征的声明,一个包对象可以包含任何其他有效的 Scala 声明,如var, val, def, type(类型别名),隐含的东西。尽管在任何对象中您都可以导入东西,但它们不会传递到包的其余部分,因此对世界其他部分不可见。

于 2012-05-09T20:28:19.497 回答
3

这将创建对象rStrat.rSwing.testSw.testSw

package rStrat.rSwing
package testSw //Edited for clarity

object testSw

这将创建包对象rStrat.rSwing.testSw.testSw

package rStrat.rSwing
package testSw //Edited for clarity

package object testSw

这将创建包对象rStrat.rSwing.testSw

package rStrat.rSwing

package object testSw

这是你想要的最后一个。

于 2012-05-09T23:19:56.353 回答