↑ 点击上方“白程序员的自习室”关注我们
提取器(Extractor)
提取器是从传递给它的对象中提取出构造该对象的参数。(回想样例类进行模式匹配提取参数)
scala 提取器是一个带有unapply方法的对象,unapply方法算是apply方法的反向操作,unapply接受一个对象,然后从对象中提取值,提取的值通常是用来构造该对象的值。
![cef240e3280022785085e81fa6a8c8c5.png](https://i-blog.csdnimg.cn/blog_migrate/a71b725b95f5d302fcc6e91394e862dc.png)
![a3f1544f78631bd8d4c7d5aaf919f0a4.png](https://i-blog.csdnimg.cn/blog_migrate/e65e1b4955be0d75da7e3225b365dcd3.png)
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("未匹配")
}
}
}