非典型的scala程序及其编译后的结果

初学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


  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值