偏函数_case

如果你想定义一个函数,而让它只接受和处理其参数定义域范围内的子集,对于这个参数范围外的参数则抛出异常,这样的函数就是偏函数(顾名思异就是这个函数只处理传入来的部分参数)
package graphx



object case02 {
  def main(args: Array[String]): Unit = {

   //匿名函数 左边是参数 右边是函数实现体 (x: Int)=>{}
    val divide = (x: Int) => 100 / x
    println(divide(5))


    //偏函数:PartialFunction[-A,+B],参数类型为A,返回类型为B
    val divide2 = new PartialFunction[Int, Int] {
      def isDefinedAt(x: Int): Boolean = x != 0 ///判断x是否等于0,当x = 0时抛出异常
      def apply(x: Int): Int = 100 / x
    }

    println(divide2(5))

    val divide3:PartialFunction[Int,Int]={
      case x:Int if x!=0 =>100/x  //功能和上面的代码一样,这就是偏函数的强大之处,方便,简洁!!
    }
    println(divide3(5))


    def fun (x:Int) :Int= 100/x // 这是一个普通函数,这个函数可以处理所有Int 类型的参数
    println(fun(5))

    def fun2 : Int =>Int = {
      case x if x %2 ==0 => 100/x
    } // 这是一个偏函数,这个函数可以处理所有偶数类型的参数。偶数是Int的子集。

    println(fun2(50))




  }



}

 

posted on 2020-10-27 11:16  happygril3  阅读(112)  评论(0)    收藏  举报

导航