提取器(Extractor)
提取器是从传递给它的对象中提取出构造该对象的参数。(回想样例类进行模式匹配提取参数)scala 提取器是一个带有unapply方法的对象。==unapply方法算是apply方法的反向操作==unapply接受一个对象,然后从对象中提取值,提取的值通常是用来构造该对象的值。
示例:
class Student10 {
var name:String = _ // 姓名
var age:Int = _ // 年龄
// 实现一个辅助构造器
def this(name:String, age:Int) = {
this()
this.name = name
this.age = age
}
}
object Student10 {
def apply(name:String, age:Int): Student10 = new Student10(name, age)
// 实现一个解构器
def unapply(arg: Student10): Option[(String, Int)] = Some((arg.name, arg.age))
}
object extractor_DEMO {
def main(args: Array[String]): Unit = {
val zhangsan = Student10("张三", 20)
zhangsan match {
case Student10(name, age) => println(s"姓名:$name 年龄:$age")
case _ => println("未匹配")
}
}
}