2.PartialFunction

2018-12-20  本文已影响0人  丹之

一个PartialFunction[A, B]类型的函数是一个一元函数,接收一个类型为A的参数,返回类型为B的值。但是X的值域可以不覆盖A的整个值域,可以只覆盖部分的值域。其中isDefinedAt可以测试是否一个值是否落在了定义的参数值域上。

如果用简单的白话来讲,就是一个PartialFunction只处理参数的一个子集。

即使对于a:A调用isDefinedAt返回true, 调用apply(a)也可能抛出异常,比如:

val f: PartialFunction[Int, Any] = { case _ => 1/0 }

PartialFunction可以选择做一些不在参数值域的操作。

object PartialFunction {

  def main(args: Array[String]): Unit = {
    val sample = 1 to 10
    val isEven: PartialFunction[Int, String] = {
      case x if x % 2 == 1 => x+" is even"
    }
    // the method collect can use isDefinedAt to select which members to collect
    val evenNumbers = sample collect isEven

    print(evenNumbers)
  }
}

它包含其它的一些方法:

上一篇 下一篇

猜你喜欢

热点阅读