Scala取消应用-自定义提取器
示例
可以通过实现unapply方法并返回type值来编写自定义提取Option:
class Foo(val x: String)
object Foo {
def unapply(foo: Foo): Option[String] = Some(foo.x)
}
new Foo("42") match {
case Foo(x) => x
}
// "42"的返回类型unapply可能会比其他的东西Option,提供返回的类型提供get和isEmpty方法。在此示例中,Bar使用这些方法定义,并unapply返回的实例Bar:
class Bar(val x: String) {
def get = x
def isEmpty = false
}
object Bar {
def unapply(bar: Bar): Bar = bar
}
new Bar("1337") match {
case Bar(x) => x
}
// "1337"的返回类型unapply也可以是Boolean,这是特殊情况,不包含get和isEmpty要求。但是,请注意在此示例中,它DivisibleByTwo是一个对象,而不是一个类,并且没有参数(因此该参数无法绑定):
object DivisibleByTwo {
def unapply(num: Int): Boolean = num % 2 == 0
}
4 match {
case DivisibleByTwo() => "yes"
case _ => "no"
}
//是
3 match {
case DivisibleByTwo() => "yes"
case _ => "no"
}
//没有请记住,它unapply放在类的伴侣对象中,而不是在类中。如果您理解这种区别,上面的示例将很清楚。
热门推荐
10 情侣祝福语古文简短独特
11 酒店伴娘祝福语简短
12 晚上甜蜜的祝福语简短
13 给新娘简短的祝福语
14 当爸爸的简短祝福语
15 洛宁新年祝福语大全简短
16 新年祝福语简短搞笑幽默
17 结婚祝福语大全简短霸气
18 新人结婚祝福语简短高端