我在将包导入包对象时遇到问题。它似乎没有在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
答案 0 :(得分:4)
Scala没有第一类导入。如果包只能包含类和特征的声明,则包对象可以包含任何其他有效的Scala声明,如var
,val
,def
,type
(类型别名)隐含的东西。虽然在任何对象中你可以导入东西,但它们不会传递到包的其余部分,因此对世界其他地方不可见。
答案 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
这是你想要的最后一个。