scala语言学习(九)、提取器(Extractor)

提取器(Extractor)

提取器是从传递给它的对象中提取出构造该对象的参数。(回想样例类进行模式匹配提取参数)

scala 提取器是一个带有unapply方法的对象,unapply方法算是apply方法的反向操作,unapply接受一个对象,然后从对象中提取值,提取的值通常是用来构造该对象的值。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
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("未匹配")
}
}
}

评论