首页 > 代码库 > Programming In Scala Reading Note 3

Programming In Scala Reading Note 3

Class and Object

class TestClass {  val some = 1}

生成的class文件中会包含一个some()方法,并且这个方法是public的,也就是说类外可以通过类的对象来获取这个some的值

修改:

class TestClass {  private val some = 1}

会生成一个private的some()方法,返回值也是some。但是现在类外是访问不到的

 

类的方法的参数默认是val类型的

 

副作用大部分用来修改一个属性的值或者开关一个I/O,只存在副作用的话返回值为Unit,这个时候应该省去:Unit =,用{}把方法体包含起来即可。

 

如果一个方法是有返回值的,务必不要丢掉=,否则,这个方法的返回值为Unit,因为任何类型都能够被转化成为Unit。

 

分号语法:

如果算数运算不在一行上面,那么我们应该在每一行的末尾最佳运算符,而不是在每一行的开头追加,因为+a返回的是a,而不是让一个值去加上a。

 

伴生对象一定要放到同一个文件当中。伴生类和伴生对象之间可以互相访问彼此的私有变量。

 

伴生对象与伴生类的一个区别是,伴生对象没有构造参数,因为不能实例化一个伴生对象

 

Scala程序

Scala程序就是一个object,或许是伴生对象(companion object)亦或是孤立对象(standalone object)。

这个对象中必须要有一个名称为main的,返回值为Unit的,具有合适签名(参数为Array[String])的方法。

如果一个scala文件是以一个定义结束的,而不是一个结果表达式,那么他就是一个object,不然的话就是一个script(脚本)。

无论如何应该了解一下:

scalac 用来编译(interpret).scala文件成.class文件

scala 用来运行程序

  1. script文件的话,需要带上.scala
  2. object文件的话,已经被编译了,不需要带上.scala

fsc(fast Scala Compiler) 能够开启一个守护线程,并且分配一个端口号,用来专门编译scala文件,这样第一次比较慢,以后会快很多

fsc -shutdown 用来关掉这个守护线程

scalac的问题在于,每次执行的时候都会启动编译器,且花费时间去扫描所有的jar文件,以及一些其他的准备工作,然后才会去执行编译工作。