Scala --- 提取器Extractor

  • 定義:從傳遞給它的對象中提取出構造該對象的參數 (類似 樣例類進行模式匹配提取參數  )

       case SubmitTask(id, name) => println(s"id=$id, name=$name"

  • 原理:Scala提取器是一個帶有unapply方法的對象  ;  unapply方法算是apply方法的反向操作  ; 

class Student {
  var name:String = _   // 姓名
  var age:Int = _       // 年齡

  // 實現一個輔助構造器
  def this(name:String, age:Int) = {
    this()

    this.name = name
    this.age = age
  }
}

object Student {
  def apply(name:String, age:Int): Student = new Student(name, age)

  // 實現一個解構器
  def unapply(arg: Student): Option[(String,Int)] = Some(arg.name,arg.age)
}

object extractor_DEMO {
  def main(args: Array[String]): Unit = {
    val zhangsan = Student("張三", 20)

    zhangsan match {
      case Student(name, age) => println(s"姓名:$name 年齡:$age")
      case _ => println("未匹配")
    }
  }
}

//輸出:姓名:張三 年齡:20

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章