为什么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程序相关推荐

  1. scala 类中的对象是类_Scala类和对象– Singleton对象,伴侣类

    scala 类中的对象是类 Earlier we learned about Scala Programming Language and it's installation on Windows a ...

  2. 快学Scala学习笔记及习题解答(5-8类、对象、包和继承)

    本文scala使用的版本是2.11.7 第五章 类 5.1 基本操作 class Person {// Scala会生成一个私有的final字段和一个getter方法,但没有setterval tim ...

  3. 【C++入门】类和对象(中)

    文章目录 一.类的默认成员函数 1. 构造函数 2. 析构函数 3. 拷贝构造函数 4. 赋值运算符重载 5. const成员 6. 取地址及const取地址操作符重载 一.类的默认成员函数 如果一个 ...

  4. c++入门(四)类和对象(中篇)

    文章目录 前言 一. 构造函数 1.1 构造函数概念 1.2 构造函数特性 二. 析构函数 2.1 析构函数概念 2.2 析构函数的特性 三,拷贝构造函数 3.1 拷贝构造函数概念 3.2 拷贝构造函 ...

  5. Scala基础教程(七):类和对象、特征

    扩展一个类: 可以扩展scala类以类似的方式,如在Java中的一样,但有两个限制:方法重载需要override关键字,只有主构造可以传递参数给基构造.现在扩展上面的类,并增加一个类的方法: clas ...

  6. scala学习-类与对象

    类 / 对象 [<快学Scala>笔记] 一.类 1.Scala中的类是公有可见性的,且多个类可以包含在同一个源文件中: 1 class Counter{ 2 private var va ...

  7. Scala类和对象详解

    一.类定义.创建对象 Scala和Java一样,用class关键字来创建类,eg: class Student{ var score:Int=0 } 利用javap -private Student命 ...

  8. Scala面向对象基础--类和对象

    一.类和对象介绍 在Scala里,类是用关键字"class"开头的代码定义,它是用于创建对象的蓝图.一个类就是一个类型,不同的类就是不同的类型,一个对象的类型就是创建它用的那个类. ...

  9. Spark大数据处理讲课笔记1.7 掌握Scala类、对象、抽象类与特质

    文章目录 零.本节学习目标 一.类 (一)类的定义 (二)类的实例化 二.单例对象 (一)单例对象概念 (二)案例演示 三.伴生对象 (一)伴生对象概念 (二)案例演示 四.get和set方法 (一) ...

  10. 大数据实时处理 1.7 掌握Scala类、对象、抽象类与特质

    目录 本节学习目标 一.类 (一)类的定义 (二)类的实例化 二.单例对象 (一)单例对象概念 (二)案例演示 三.伴生对象 (一)伴生对象概念 (二)案例演示 四.get和set方法 (一)生成原则 ...

最新文章

  1. Exchange Server2013 系列九:常规配置
  2. 每日站立会议12/19
  3. 习惯的力量之三冰山一角
  4. OJ1158: 又是排序(指针专题)(C语言)
  5. loadrun Java 添加参数_loadrunner手动关联参数化问题总结
  6. 汇编学习--7.12--总结
  7. 阅读圣经丨聚合与迭代
  8. 计算机语言 指令,计算机BASIC语言    指令
  9. xmlspy_XMLSpy是免费的吗? 我说天堂的甘露。
  10. 十进制转换成十二进制
  11. Error invoking sqlprovider method (tk.mybatis.mapper.provider.base.BaseselectProvider.dynamicSQL)解决
  12. 现阶段云计算的市场运用
  13. ATTCK v10版本战术介绍—侦察
  14. KDZD608屏蔽服效率测试仪
  15. SVM算法实现(一)
  16. Effie 与文字讲缘分,与写作者交朋友
  17. 栅格数据去除黑边并无缝拼接(envi,arcgis)
  18. FANUC最新CNC系列0i-MODEL F
  19. 电磁炉场效应功率管的代换问题
  20. USB简述(Linux驱动开发篇)

热门文章

  1. PyTorch:模型训练-模型参数parameters
  2. Scala:函数式编程之下划线underscore
  3. PGM:贝叶斯网的参数估计
  4. python批量获取图像路径txt
  5. 提交失败重连java_RxJava出错重连
  6. python中scrapy框架项目_Python -- Scrapy 框架简单介绍(Scrapy 安装及项目创建)
  7. Fluter拓展 图标库
  8. 多并发编程基础 之进程 Process
  9. Python自动下载最新的chromedriver
  10. POJ 2752 Seek the Name, Seek the Fame