Scala 学习笔记

Scala学习笔记

  1. Scala 没有 ++ 操作,只能 +=

  2. 使用以Scala.开头的包时,可以省去Scala前缀。如:import math. 等同于 Scala.math.

  3. 不带参数的Scala方法通常不适用圆括号,如:”Hello”.distinct

  4. 常量声明:val , 变量声明:var

  5. 在Scala中,建议使用val—除非真的需要改变它的内容

  6. Scala没有switch语句

  7. 避免在函数定义中使用return

  8. 在Scala中,赋值动作本身是没有值的–或者,更严格的说,他们的值是Unit类型的。如:{ r = r * n; n -= 1 } 的值是Unit类型的

  9. 遍历字符串或者数组时,通常需要使用从0到n-1的区间,这个时候可以使用util方法,而不是to方法。util方法返回一个并不包含上限的区间。如:

    for (i <- 0 util “Hello”.length) i的最后一个取值是.length-1

  10. Scala并没有提供break或者continue语句来退出循环,我们需要使用Boolean行的控制变量,或者使用Breaks对象中的break方法,或者潜逃函数当中return

  11. Scala类的字段生成的getter和setter方法说明:
    如果字段是private的,生成的getter和setter方法也是private的
    如果字段是val类型,则只生成getter方法
    如果字段是var类型,则会生成getter和setter方法
    如果不需要任何getter和setter方法,可以将字段声明为private[this]

  12. Scala类的字段编译后都是private的

  13. object 没有 构造器参数

  14. 重写限制:
    def 只能重写另一个def
    val 只能重写另一个val或不带参数的def
    var 只能重写另外一个抽象的var

  15. 抽象类
    没有方法体的方法是抽象方法,需要子类进行实现

    子类重写父类的抽象方法时,不需要使用override关键字
    如果类中,有一个方法没有方法体,则类必须定义为abstract

  16. Scala特质中未被实现的方法默认都是抽象的,不用添加abstract关键字

  17. Scala特质中不能使用构造器参数,即每个特质都有一个无参数的构造器