Scala基础
Twitter提供的 Scala School
类
Scala中默认缺省的访问级别是public的。
如果没有任何显式的返回语句,Scala将返回方法中最后一个计算得到的值。
Scala中的方法参数,都是val的。如果想在方法内给参数重新赋值,会导致编译失败。
class ChecksumAccumulator {
private var sum = 0
def add(b: Int): Unit = {
// b += 1 //编译失败,Reassignment to val
sum += b
}
def checkSum(): Int = sum
}
在Scala中,对于方法来说,推荐的风格是避免显示的尤其是多个返回语句。
Singleton 对象
Scala有单例对象Singleton Object
。除了用object
关键字替换了class
关键字以外,
单例对象的定义看上去就像是类定义。
当单例对象与某个类共享同一个名称时,他被称作是这个类的伴生对象companion object
,类被称作这个单例对象的伴生类companion class
。类和它的伴生对象可以互相访问其私有成员。
一般地,我们说,单例对象都是超类的实例并可以混入特质(trait)。
类和单例对象间的一个差别是,单例对象不带参数,而类可以。每个单例对象都被作为由一个静态变量指向的虚构类:synthetic class
的一个实例来实现,因此它们与Java静态类有着相同的初始化语法。单例对象会在第一次被访问的时候初始化。
不与伴生类共享名称的单例对象被称为孤立对象:standalone object
。由于很多种原因你会用到它,包括把相关的功能方法收集在一起,或定义一个 Scala 应用的入口点。