Scala入门学习笔记(二)

Posted by RussXia on July 16, 2019

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 应用的入口点。