类和对象之Scala程序
为什么80%的码农都做不了架构师?>>>
想要编写能够独立运行的scala程序,就必须创建有main方法(仅带一个参数Array[String],且结果类型为Unit)的单例对象。任何拥有合适签名的main方法的单例对象都可以用来作为程序的入口点。如例:
package scalaTest
object Test4{def show(arg:String) = {arg + ": text" }
}package scalaTest
import Test4.show //相当于java中的静态导入
object Summer{def main(args:Array[String]) {for(arg <- args) {println(show(arg))}}
}
这里单例对象的名字是Summer。它的main方法有合适的签名,所以可以用作程序入口。
import test4.show是对定义在前面Test4对象中show方法的引用。它允许你在后面的文件里使用方法的简化名(注:这类似于java中的静态导入)。
注意:scala的每个源文件都隐含了对包:java.lang、scala,以及单例对象Predef的成员引用。包scala中的Predef对象包含了许多有用的方法。例如,scala源文件中写下println语句,实际调用的是Predef 的println(Predef.println转而调用Console.println,完成真正的工作)。写下assert,实际是在调用Predef.assert。
Scala和java之间有一点不同,java需要你把公共类放在以这个类命名的源文件中,而scala对于源文件的命名没有硬性规定。然而通常情况下如果不是脚本,推荐的风格是像在java里那样按照所包含的类名来命名文件。上例中,Summer.scala都不是脚本,因为它们都以定义结尾。反过来说,脚本必须以结果表达式结束。因此如果你尝试以脚本方式执行Summer.scala,scala解释器将会报错说(scala2.11.7下好像也没有报错!!!!)Summer.scala不是以结果表达式结束的(当然前提是你没有在Summer对象定义之后加上任何你自己的表达式)。正确的做法是,你需要用scala编译器真正地编译这些文件,然后执行输出的类文件。
方式一:
使用scala的基本编译器:scalac,输入:
$ scalac Summber.scala
开始编译源文件,不过在编译完成之前或许会稍微停顿一下。这是因为每次编译器启动时,都要花一些时间扫描jar文件内容,并在开始编译你提交的源文件之前完成更多其他的初始化工作。因此,scala的发布包里还包括了一个叫做fsc(快速scala编译器,fast scala compiler)的scala编译器后台服务。
方式二:
使用scala的快速编译器(fsc),如下:
$ fsc Summer.scala
第一次执行fsc时,会创建一个绑定在你计算机端口上的本地服务器后台进程。然后它就会把文件列表通过端口发送给后台进程,由后台进程完成编译。下一次执行fsc时,检测到后台进程已经在运行了,于是fsc将只把文件列表发给后台进程,它会立刻开始编译文件。使用fsc,只须在首次运行的时候等待java运行时环境的启动。如果想停止fsc后台进程,可以执行:
fsc -shutdown
不论执行scalac还是fsc命令,最终都将完成Java类文件的创建,然后可以用scala命令,就像之前的例子里调用解释器那样运行它。
转载于:https://my.oschina.net/fhd/blog/273982
类和对象之Scala程序相关推荐
- scala 类中的对象是类_Scala类和对象– Singleton对象,伴侣类
scala 类中的对象是类 Earlier we learned about Scala Programming Language and it's installation on Windows a ...
- 快学Scala学习笔记及习题解答(5-8类、对象、包和继承)
本文scala使用的版本是2.11.7 第五章 类 5.1 基本操作 class Person {// Scala会生成一个私有的final字段和一个getter方法,但没有setterval tim ...
- 【C++入门】类和对象(中)
文章目录 一.类的默认成员函数 1. 构造函数 2. 析构函数 3. 拷贝构造函数 4. 赋值运算符重载 5. const成员 6. 取地址及const取地址操作符重载 一.类的默认成员函数 如果一个 ...
- c++入门(四)类和对象(中篇)
文章目录 前言 一. 构造函数 1.1 构造函数概念 1.2 构造函数特性 二. 析构函数 2.1 析构函数概念 2.2 析构函数的特性 三,拷贝构造函数 3.1 拷贝构造函数概念 3.2 拷贝构造函 ...
- Scala基础教程(七):类和对象、特征
扩展一个类: 可以扩展scala类以类似的方式,如在Java中的一样,但有两个限制:方法重载需要override关键字,只有主构造可以传递参数给基构造.现在扩展上面的类,并增加一个类的方法: clas ...
- scala学习-类与对象
类 / 对象 [<快学Scala>笔记] 一.类 1.Scala中的类是公有可见性的,且多个类可以包含在同一个源文件中: 1 class Counter{ 2 private var va ...
- Scala类和对象详解
一.类定义.创建对象 Scala和Java一样,用class关键字来创建类,eg: class Student{ var score:Int=0 } 利用javap -private Student命 ...
- Scala面向对象基础--类和对象
一.类和对象介绍 在Scala里,类是用关键字"class"开头的代码定义,它是用于创建对象的蓝图.一个类就是一个类型,不同的类就是不同的类型,一个对象的类型就是创建它用的那个类. ...
- Spark大数据处理讲课笔记1.7 掌握Scala类、对象、抽象类与特质
文章目录 零.本节学习目标 一.类 (一)类的定义 (二)类的实例化 二.单例对象 (一)单例对象概念 (二)案例演示 三.伴生对象 (一)伴生对象概念 (二)案例演示 四.get和set方法 (一) ...
- 大数据实时处理 1.7 掌握Scala类、对象、抽象类与特质
目录 本节学习目标 一.类 (一)类的定义 (二)类的实例化 二.单例对象 (一)单例对象概念 (二)案例演示 三.伴生对象 (一)伴生对象概念 (二)案例演示 四.get和set方法 (一)生成原则 ...
最新文章
- Exchange Server2013 系列九:常规配置
- 每日站立会议12/19
- 习惯的力量之三冰山一角
- OJ1158: 又是排序(指针专题)(C语言)
- loadrun Java 添加参数_loadrunner手动关联参数化问题总结
- 汇编学习--7.12--总结
- 阅读圣经丨聚合与迭代
- 计算机语言 指令,计算机BASIC语言 指令
- xmlspy_XMLSpy是免费的吗? 我说天堂的甘露。
- 十进制转换成十二进制
- Error invoking sqlprovider method (tk.mybatis.mapper.provider.base.BaseselectProvider.dynamicSQL)解决
- 现阶段云计算的市场运用
- ATTCK v10版本战术介绍—侦察
- KDZD608屏蔽服效率测试仪
- SVM算法实现(一)
- Effie 与文字讲缘分,与写作者交朋友
- 栅格数据去除黑边并无缝拼接(envi,arcgis)
- FANUC最新CNC系列0i-MODEL F
- 电磁炉场效应功率管的代换问题
- USB简述(Linux驱动开发篇)