文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Java Scala偏函数与偏应用函数怎么使用

2023-07-05 23:30

关注

这篇文章主要介绍“Java Scala偏函数与偏应用函数怎么使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Java Scala偏函数与偏应用函数怎么使用”文章能帮助大家解决问题。

偏函数

偏函数(Partial Function),是一个数学概念它不是"函数"的一种, 它跟函数是平行的概念。

Scala中的Partia Function是一个Trait,其的类型为PartialFunction[A,B],其中接收一个类型为A的参数,返回一个类型为B的结果。

例如:

    val pf: PartialFunction[Int, String] = {      case 1 => "One"      case 2 => "Two"      case 3 => "Three"      case _ => "Other"    }    println(pf(1))   //One    println(pf(2))   //Two    println(pf(3))   //Three    println(pf(4))   //Other

偏函数内部有一些方法,比如isDefinedAt、OrElse、 andThen、applyOrElse等等。

isDefinedAt

isDefinedAt : 这个函数的作用是判断传入来的参数是否在这个偏函数所处理的范围内。

刚才定义的pf来尝试使用isDefinedAt(),只要是数字都是正确的,因为有case _=>"Other"这一句。如果换成其他类型就会报错。

    val pf: PartialFunction[Int, String] = {      case 1 => "One"      case 2 => "Two"      case 3 => "Three"      case _ => "Other"    }    println(pf.isDefinedAt(1)) //true    println(pf.isDefinedAt(2)) //true    println(pf.isDefinedAt(3)) //true    println(pf.isDefinedAt(4)) //true    println(pf.isDefinedAt("1"))    

orElse

orElse : 将多个偏函数组合起来使用,效果类似case语句。

    val onePF: PartialFunction[Int, String] = {      case 1 => "One"    }    val twoPF: PartialFunction[Int, String] = {      case 2 => "Two"    }    val threePF: PartialFunction[Int, String] = {      case 3 => "Three"    }    val otherPF: PartialFunction[Int, String] = {      case _ => "Other"    }    val newPF = onePF orElse twoPF orElse threePF orElse otherPF    println(newPF(1))  //One    println(newPF(2))  //Two    println(newPF(3))  //Three    println(newPF(4))  //Other

这样,newPF跟原先的pf效果是一样的。

andThen

andThen: 相当于方法的连续调用,比如g(f(x))。

pf1的结果返回类型必须和pf2的参数传入类型必须一致,否则会报错。

   val pf1: PartialFunction[Int, String] = {      case i if i == 1 => "One"    }    val pf2: PartialFunction[String, String] = {      case str if str eq "One" => "The num is 1"    }    val num = pf1 andThen pf2    println(num(1)) //The num is 1

applyOrElse

applyOrElse:它接收2个参数,第一个是调用的参数,第二个是个回调函数。如果第一个调用的参数匹配,返回匹配的值,否则调用回调函数。

  val pf: PartialFunction[Int, String] = {      case 1 => "One"    }    println(pf.applyOrElse(1, { num: Int => "two" }))  //One    println(pf.applyOrElse(2, { num: Int => "two" }))  //two

偏应用函数

偏应用函数(Partial Applied Function)也叫部分应用函数,跟偏函数(Partial Function)从英文名来看只有一字之差,但他们二者之间却有天壤之别。

部分应用函数, 是指一个函数有n个参数, 而我们为其提供少于n个参数, 那就得到了一个部分应用函数。

举个例子,定义好一个函数有3个参数,再提供几个有1-2个已知参数的偏应用函数

def add(x: Int, y: Int, z: Int) = x + y + z    // x 已知    def addX = add(1, _: Int, _: Int)    println(addX(2, 3)) //6    println(addX(3, 4)) //8    // x 和 y 已知    def addXAndY = add(10, 100, _: Int)    println(addXAndY(1)) //111    // z 已知    def addZ = add(_: Int, _: Int, 10)    println(addZ(1, 2)) //13

关于“Java Scala偏函数与偏应用函数怎么使用”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注编程网行业资讯频道,小编每天都会为大家更新不同的知识点。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     801人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     348人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     311人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     432人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     220人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯