码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2015-03-13 18:53:42      阅读:131      评论:0      收藏:0      [点我收藏+]

标签: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


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

标签:scala

原文地址:http://blog.csdn.net/cleverwyq/article/details/44242931

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!