初学Scala

Folder structure以及部分代码

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY2xldmVyd3lx/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

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

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY2xldmVyd3lx/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

可见

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程序及其编译后的结果的更多相关文章

  1. scala程序运行的几种方式

    HelloWorld简单实例 object HelloWorld{ def main(args:Array[String]){ println("HelloWorld") } } ...

  2. vc++ 6.0编译后生成的文件

    程序在编译后,在目标路径下会生成多个文件    Debug文件夹(*.exe,*.ilk,*.obj,*.pch,*.pdb,*.idb,*,pdb),*.cpp,*.dsp,*.ncb,*.plg  ...

  3. SAP成都研究院非典型程序猿,菜园子小哥:当我用UI5诊断工具时我用些什么

    身边有些年轻同事曾经向我表达过这种困扰:尽管完成日常工作没有任何问题,但是还想更进一步,把代码写得更好些,做到精益求精.现在写的代码能实现功能,但是不知道可以怎样写得更好. 除了阅读优秀的开源库开源框 ...

  4. VS 设置编译后的程序可以以管理员身份运行

    1.首先,创建一个文件命名为 XXX.exe.manifest, 并将以下内容复制到文件 <?xml version="1.0" encoding="UTF-8&q ...

  5. 运行编译后的程序报错 error while loading shared libraries: lib*.so: cannot open shared object file: No such file or directory

    运行编译后的程序报错  error while loading shared libraries: lib*.so: cannot open shared object file: No such f ...

  6. 问题-某个程序改了ICO图标后编译后还是显示老图标?

    问题现象:某个程序改了ICO图标后编译后还是显示老图标? 问题原原:可能是因为系统的缓存问题. 问题处理:把程序的EXE放在别的路径下打开就可以了. 问题相关人员:QQ253120114(朋友)  Q ...

  7. Delphi XE2及以后的版本编译后的程序大小问题

    说说Delphi XE2及以后的版本编译后的程序大小问题. 其实最终得到的程序并不大,由于编译器的变化,XE2里Debug版程序比Release版程序大很多,要减小程序体积,就使用Release版.下 ...

  8. STM32使用cube生成的程序后在keil5编译后首次SWD可以下载再次下载不行的解决办法。

    使用cube配置导出工程在keil5编译后首次SWD下载可以再次下载不行的解决办法. 1原因: cube使用的是HAL库,初始化语句里面禁用了调试功能. 在stm32f1xx_hal_msp.c中 _ ...

  9. target存放的是编译后的.class文件地方 默认情况下不会讲非class文件放入进入 如果要使用非.class文件 需要通过增加配置方式自动加入文件

    target存放的是编译后的.class文件地方 默认情况下不会讲非class文件放入进入 如果要使用非.class文件 需要通过增加配置方式自动加入文件

随机推荐

  1. HDU 3306

    先转一些   http://www.cnblogs.com/frog112111/archive/2013/05/19/3087648.html Fibonacci数列:F(0)=1 , F(1)=1 ...

  2. [Tailwind] Abstract Utility Classes to BEM Components in Tailwind

    When creating UIs with utility classes, a lot of repetition can occur within the HTML markup. In thi ...

  3. 使用ClassLoader类装载器获取系统资源

    使用ClassLoader类装载器获取系统资源 2010-05-11 16:19:39 分类: Java /* ClassLoader 有两种方法获得系统资源,一个种静态方法,一种是实例方法. 静态方 ...

  4. UVA - 1471 Defense Lines 树状数组/二分

                                  Defense Lines After the last war devastated your country, you - as the ...

  5. Centos7 minimal 系列之Redis(五)

    一.Redis安装 1.1 .进入/usr/local 创建redis文件夹(mkdir)方便统一管理 1.2.下载redis $ wget http://download.redis.io/rele ...

  6. MySQL监控SQL及命中率脚本

    [root@hank-yoon scrips]# vi mysqlstat.sh​​​/export/servers/mysql/bin/mysqladmin -P3306 -uyoon -pyoon ...

  7. linux拷贝文件

    linux之cp/scp命令+scp命令详解 2011-03-09 17:27:22|  分类: Linux |  标签:linux  cp  scp  commond   |字号 订阅   名称:c ...

  8. Unity脚本生命周期 图解

    简单总结的话就是: Awake():初始化时执行,类似c#中的构造函数 OnEnable() Start() FixUpdate() Update() OnDisable() OnDestory() ...

  9. Pyhton学习——Day25

    #面向对象的几个方法#1.静态方法@staticmethod,不能访问类属性,也不能访问实例属性,只是类的工具包#2.类方法:@classmethod,在函数属性前加上类方法,显示为(cls)代表类, ...

  10. java 公开内部类无法实例化 no enclosing instance 解决办法

    因为B类不是A类的静态内部类,所以B累也只能像A类的成员一样通过new A()的实例访问,new(new A()).B(),这显然不是我们想要的方式,于是需要在B类的前边加上static,变成下边这样 ...