这听起来很尴尬。我的目的是了解 Scala 如何处理以 Java 风格编写的包语句。为此,我编写了一个小示例类(我将其命名为 DinnerTimeP.scala,如下所示:
package dinnertime
class Dinner {
val veggie = "broccoli"
def announceDinner(veggie: String) {
println("Dinner happens to be tasteless " + veggie + " soup")
}
}
我有一个名为 scaladev 的文件夹,我在该文件夹下创建了包文件夹 Dinnertime。在这个包下生活着 DinnerTimeP.scala。然后在 DOS 命令上导航到晚餐时间并使用 scalac 编译文件 DinnerTimeP(名称听起来很傻),如下所示。
C:\scala-2.9.1.final\scala-2.9.1.final\scaladev\dinnertime>set CLASSPATH=.;C:\scala- 2.9.1.final\scala-2.9.1.final\scaladev
C:\scala-2.9.1.final\scala-2.9.1.final\scaladev\dinnertime>scalac DinnerTimeP.scala
我希望找到在 DinnerTime 文件夹下生成的 Dinner.class,并且位于源文件 DinnerTimeP.scala 旁边。为了确认我的理解,我在同一个文件夹下创建了一个 HelloWorld.java 程序:
package dinnertime;
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World");
}
}
我在命令行编译HelloWorld.java如下:C:\scala-2.9.1.final\scala-2.9.1.final\scaladev\dinnertime>javac HelloWorld.java
HelloWorld.class 文件是在其源文件旁边生成的。这正是我想在 Scala 源文件及其编译文件中看到的确切情况。相反,我在包文件夹 Dinnertime 中看到了一个由 Scala 生成的新包文件夹。
这可能是幼稚的。我可能背叛了对 Scala 和包的基本理解,但我对这种行为感到困惑。这是我无法向自己解释的问题:为什么要为新生成的类文件创建嵌套包。这是我希望通过自己的真诚努力解决的问题因为我目前对 Scala 的经验有限,所以我求助于 stackoverflow 上的 Scala 大师来帮助我了解发生了什么为什么?这个嵌套包是否有理由由 Scala 而不是由 Java 创建?