快学Scala 第九课 (伴生对象和枚举)

Posted AK47Sonic

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了快学Scala 第九课 (伴生对象和枚举)相关的知识,希望对你有一定的参考价值。

Scala没有静态方法和静态字段, 你可以用object这个语法结构来达到同样的目的。

对象的构造器只有在第一次被使用时才调用。

伴生对象apply方法:

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

类中要访问类的伴生对象中成员,需要通过类.成员调用。

class Account private (val id: Int, initialBalance: Double){
  
}

object Account {
  def apply(initialBalance: Double)={
    new Account(1, initialBalance)
  }
}

object ObjectClassDemo {
  def main(args: Array[String]): Unit = {

    val a = Account(1)
    

  }
}

对象扩展类或特质:

object DoNothingAction extends UndoableAction("Do nothing"){
   override def undo(){
     
   }
   override def redo(){
     
   }
}

object ObjectClassDemo {
  def main(args: Array[String]): Unit = {
    val actions = Map ("open" -> ObjectClassDemo)
  }
}

应用程序对象:

object Hello extends App{
  println(args)
  
}

枚举:

继承Enumeration, 它是一个抽象类

object EnumColor extends Enumeration {

  type V = Value
  val Red = Value(1, "red")
  val Yellow = Value(2, "yellow")
  val Blue = Value(3, "blue")

  def main(args: Array[String]): Unit = {
    println(EnumColor.Red)
    println(EnumColor(2))
    println(EnumColor.withName("red"))
    import EnumColor.Value
    println(Red)

    for (c <- EnumColor.values) {
      c match {
        case EnumColor.Red    => println("get red")
        case EnumColor.Yellow => println("get yellow")
        case EnumColor.Blue   => println("get blue")
      }
    }

  }

}

  

 

以上是关于快学Scala 第九课 (伴生对象和枚举)的主要内容,如果未能解决你的问题,请参考以下文章

快学Scala 第二十二课 (apply和unapply)

[Scala] 快学Scala A2L2

快学Scala 第二课 (apply, if表达式,循环,函数的带名参数,可变长参数,异常)

Python第九课 类和对象

Python第九课 类和对象

Scala编程之伴生对象