初學Scala
Folder structure以及部分代碼
package.scala的代碼
package comx
package object mypkg {
def myprint = println("Hello Ji2 in package object")
}
object mypkg2{
def myprint = println("Hello Ji2 in object")
}
命令行
>scalac mypkg/package.scala newt.scala
>scala Test2
結果
Hello Ji2 in package object
()
Hello Ji2 in package object
()
Hello Ji2 in object
()
======================
分析:
代碼初學好的時候,src下面只有一個文件newt.scala 和一個文件夾mypkg, 內涵package.scala,
執行了scalac以後, src下面多了幾個class, 多了一個comx folder
comx folder
mypkg folder
可見
1 scala的package 語句指定了class文件的生成的地方,即使原來不存在
2 package object 的定義文件package.scala 應該是在mypkg folder中
3 object 的class文件 在package指定的folder下
4.package object 沒有對應的class, 在package.class中, 變爲package comx.mypkg, 成了pakage結構的一層
5. newt.scala中, object 的名字是Test2, 所以scala命令的參數是Test2, 而不是newt, 否則報錯
後記,對於第二點我又做了實驗
把src/mypkg -> mypkg2 ,裏面的文件package.scala ->package_n.scala,
package_n.scala加了一個package object定義
package object mypkg3 {
def myprint = println("Hello Ji3 in package object")
}
結果和上次的差異
comx下面變成了兩個folder :mypkg & mypkg3
結論:
package object的定義文件的名字任意,位於的folder名字也任意,
反而是每個package object的名字會生成一個folder,裏面都是各自定義對應的class: package.class & package$.class