Scala系列:对象
单例对象
scala没有静态方法和静态字段。scala使用object实现,object定义了单个实例。
1 object Accounts { 2 private var lastNumber = 0; 3 def newUniqueNumber() = { lastNumber += 1; lastNumber } 4 }
使用:
for (i <- 0 to 10) println(Accounts.newUniqueNumber)
对象的构造方法在该对象被第一次使用时调用。
伴生对象
在Java中,常遇到类即有静态属性和方法,又有非静态属性和方法。
Scala中,可以通过类与类同名的“伴生”对象达到相同目的。
类和伴生对象可以互相访问私有属性,它们必须存在同一源文件中。
apply方法
定义和使用object的applay方法,进行创建伴生类实例。
好处:少写了new,在很多场景下用起来方便,看起来清晰。
应用程序对象
每个scala程序必须从一个对象的main方法开始,这个方法的类型为Arra[String] => Unit
扩展App物质,代码放入构造方法体中,
scala -Dscala.time Hello Fred
枚举
scala本身没有枚举类型
标准库里提供Enumeration助手类,可用于产生出枚举。
1 object EventType extends Enumeration { 2 val DDOS, DI = Value 3 }
枚举类型是EventType.Value
给类型起个别名:只有引入的时候有意义
1 object EventType extends Enumeration { 2 type EventType = Value 3 val DDOS, DI = Value 4 }
……