Scala--对象

来源:转载

一、单例对象

Scala没有静态方法或静态字段,可以用object来达到相同的目的

 object Account{

private var num = 0

def number() ={ num += 1; num}

}

println(Account.number())

println(Account.number())

结果

1

2

在Scala中可以用对象来实现:

  • 作为存放工具函数或常量的地方
  • 高效的共享单个不可变实例
  • 需要用单个实例来协调某个服务(单例模式)

 

二、伴生对象

如果用到即有实例方法又有静态方法的类,在scala中,你可以通过类和与类同名的 "伴生" 对象来达到同样的目的。

类和它的伴生对象可以互相访问私有特性。它们必须存在于同一个源文件中。

 class Account{

val id = Account.number()

println(id)

}

object Account{

private var num = 0

def number() ={ num += 1; num}

}

println(Account.number())

println(Account.number())

val c = new Account()

结果

1

2

3

 

三、扩展类或特质的对象

 

 

四、apply方法

 

 

 

五、应用程序对象

每个scala程序必须从一个对象的main开始

object Test {

def main(args: Array[String]) {

println("Hello")

}

}

除了这种方式,也可以扩展App特质

object Test extends App{

println("Hello")

}

object Test extends App{

if(args.length>0)

println("Hello,"+args(0))

else

println("Hello World")

}

通过args获取命令行参数

$scalac Hello.scala

$scala -Dscala.time Hello Fred

Hello, Fred

[total 4ms]

指定参数scala.time,程序退出时会显示使用的时间

 

六、枚举

 object color extends Enumeration{

//val Red,Green,Yellow = Value

val Red = Value(0,"stop") //id为0 name为stop

val Yellow = Value(10) //id为10 name为Yellow

val Green = Value("go") //id为11 name为go

}

for(i<-color.values) println(i.id+" "+i)

println(color(0))

println(color.withName("stop"))

结果

0 stop

10 Yellow

11 go

stop

stop

 

参考《快学Scala》

分享给朋友:
您可能感兴趣的文章:
随机阅读: