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

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

时间:2017-06-04 14:38:36      阅读:171      评论:0      收藏:0      [点我收藏+]

标签:pop   com   post   部分   结构   alt   mod   csdn   gravity   

初学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程序及其编译后的结果

标签:pop   com   post   部分   结构   alt   mod   csdn   gravity   

原文地址:http://www.cnblogs.com/yfceshi/p/6940305.html

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