scala之偏函数

scala偏函数

  • 普通偏函数
  • 用case定义偏函数
  • 组合多个偏函数
  • 连接偏函数

代码

object Partion{
  //普通函数
  val div1=(x:Int)=>100/x
  //偏函数
  val div2=new PartialFunction[Int,Int]{
    //先进行第一个函数的调用
    def isDefinedAt(x:Int):Boolean=x!=0
    def apply(x:Int):Int=100/x

  }
  //用case定义偏函数
  val div3:PartialFunction[Int,Int]={
    case d:Int if(d!=0)=>100/d
  }

  val res:PartialFunction[Int,String]={
    case 1=>"one"
    case 2=>"two"
    case 3=>"three"
    case _=>"other"
  }

  //组合多个偏函数
   val r1:PartialFunction[Int,String]={case 1=>"one"}
  val r2:PartialFunction[Int,String]={case 2=>"two"}
  val r3:PartialFunction[Int,String]={case _=>"other"}
  //res2传入一个int类型参数进行匹配
  val res2=r1 orElse r2 orElse r3

//连接操作,连接r4和r5
  val r4:PartialFunction[Int,String]={case cs if(cs==1)=>"one"}
  val r5:PartialFunction[String,String]={case cs if(cs eq "one")=>"the num is 1"}
  //传int类型然后得到r4返回的string类型,最后判断是否符合r5的字符串
  val res3:(Int=>String)=r4 andThen(r5)

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

    println(div2.isDefinedAt(0))
    println(div2.isDefinedAt(2))
    //println(div2(0))//抛异常
    println(div2(2))
    println(div3(101))
    println(res.isDefinedAt(1))
    println(res(3))
    println(res(4))
    println(res2.isDefinedAt(3))
    println(res2(1))
    println(res3(1))

  }

}

运行结果

false
true
50
0
true
three
other
true
one
the num is 1

Process finished with exit code 0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值