Scala:将包导入包对象

时间:2012-05-09 18:09:04

标签: scala eclipse-plugin intellij-idea package

我在将包导入包对象时遇到问题。它似乎没有在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

2 个答案:

答案 0 :(得分:4)

Scala没有第一类导入。如果包只能包含类和特征的声明,则包对象可以包含任何其他有效的Scala声明,如varvaldeftype(类型别名)隐含的东西。虽然在任何对象中你可以导入东西,但它们不会传递到包的其余部分,因此对世界其他地方不可见。

答案 1 :(得分: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

这是你想要的最后一个。