非典型的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

时间: 03-13

非典型的scala程序及其编译后的结果的相关文章

寒假学习记录2_Scala解释器的使用以及Scala程序的编译执行

Scala解释器的使用: 由于在前面的安装过程中,已经自动设置了path变量,所以不需要给出scala命令的路径全称,在命令提示符终端中输入“scala”命令便会进入scala命令行提示符状态(即“scala>”),可以在后面输入命令. 运行Scala解释器以后,就可以测试了.输入一条语句,解释器会立即执行语句并返回结果,这就是REPL(Read-Eval-Print Loop,交互式解释器).为我们提供了交互式执行环境,表达式计算完成就会输出结果,而不必等到整个程序运行完毕,因此可即时查看中间

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

程序在编译后,在目标路径下会生成多个文件 Debug文件夹(*.exe,*.ilk,*.obj,*.pch,*.pdb,*.idb,*,pdb),*.cpp,*.dsp,*.ncb,*.plg       *.exe:是生成的可执行文件    *.ilk:当选定渐增型编译连接时,连接器自动生成ILK文件,记录连接信息    *.obj:是目标文件,源程序编译后的产物    *.pch:全称是PreCompiled  Header,就是预先编译好的头文件,在编译时指定/Yu开关时编译器自动生成  

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

身边有些年轻同事曾经向我表达过这种困扰:尽管完成日常工作没有任何问题,但是还想更进一步,把代码写得更好些,做到精益求精.现在写的代码能实现功能,但是不知道可以怎样写得更好. 除了阅读优秀的开源库开源框架,一点一滴积累之外,Jerry的一个建议是大家可以多琢磨琢磨每天工作使用到的一些工具,研究下这些工具里自己感兴趣的那些功能的实现原理.想一想这个功能如果让自己实现,该怎样去设计和编码,琢磨完之后再去看工具的实现,和自己心中所想进行比较.这样一来,既学习了这些工作优秀的设计和实现,又进一步熟悉了工作

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

使用cube配置导出工程在keil5编译后首次SWD下载可以再次下载不行的解决办法. 1原因: cube使用的是HAL库,初始化语句里面禁用了调试功能. 在stm32f1xx_hal_msp.c中 __HAL_AFIO_REMAP_SWJ_DISABLE();  就是这句禁了. 2解决: 在stm32f1xx_hal_msp.c中改为 __HAL_AFIO_REMAP_SWJ_ENABLE();    这句启用调试功能. 下载办法:按住开发板的复位按钮(一直到点击下载)后松开,就可以下载成功.

运行编译后的程序报错 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 file or directory -------------------------------------------------------------------------------------------------------------------------------------

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

1.首先,创建一个文件命名为 XXX.exe.manifest, 并将以下内容复制到文件 <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> <assemblyIdenti

解决linux/Ubuntu下Qt creater 界面程序在编译运行后无法显示中文或中文乱码问题!

本文解决的主要是界面程序编译运行后无法显示中文的问题,如果在creater 中无法输入中文,下载个IBus或者搜狗之类的中文输入法即可解决! 首先说乱码问题,这个很好解决: 如果是在linux下打开Windows下的项目出现乱码,选择编码为"GB2312"即可! 现在主要来说说程序运行后无法显示中文或者出现乱码的情况,被这个问题困扰了很久,网上看了很多资料贴子都没有解决,所有该添加的都添加了都没办法, http://bbs.csdn.net/topics/390610841?page=

.NET程序的编译和运行

程序的编译和运行,总得来说大体是:首先写好的程序是源代码,然后编译器编译为本地机器语言,最后在本地操作系统运行. 下图为传统代码编译运行过程: .NET的编译和运行过程与之类似,首先编写好的源代码,然后编译为微软中间语言代码,运行的时候即时编译为本地机器语言,同时.NET代码运行时有一个CLR环境来管理程序.如下图为.NET代码编译运行过程: 下面详细介绍下编译运行时的一些概念.1.MSIL和JIT在编译使用.NET 框架创建的代码时,不是立即创建操作系统特定的本机代码,而是把代码编译为微软中间

Linux程序包编译安装

一.源代码简介(文件中的代码之间,很可能存在跨文件依赖关系) 源代码(也称源程序)是指未编译的按照一定的程序设计语言规范书写的文本文件,是一系列人类可读的计算机语言指令. 在现代程序语言中,源代码可以是以书籍或者磁带的形式出现,但最为常用的格式是文本文件,这种典型格式的目的是为了编译出计算机程序.计算机源代码的最终目的是将人类可读的文本翻译成为计算机可以执行的二进制指令,这种过程叫做编译,通过编译器完成. 二.源代码的编译过程 由于程序源代码到可被计算机识别并运行的指令是需要多步骤处理的:程序源