注册 登录
    • 为了保证你在浏览本网站时有着更好的体验,建议使用类似Chrome、Firefox之类的浏览器~~
    • 如果你喜欢本站的内容何不Ctrl+D收藏一下呢,与大家一起分享各种编程知识~
    • 本网站研究机器学习、计算机视觉、模式识别~当然不局限于此,生命在于折腾,何不年轻时多折腾一下

scala偏函数

scala admin 39次浏览 0个评论 扫描二维码

所谓偏函数(也叫部分函数)与完全函数对应,普通的方法都是完全函数,即 f(i:Int) = xxx 是将所有Int类型作为参数的,是对整个Int集的映射;而偏函数则是对部分数据的映射,比如上面{case 2=> “OK” }就仅仅只对2做了映射。偏函数的实现都是通过模式匹配来表达的。
构建一个偏函数p,并map到它:

scala>  val p:PartialFunction[Int,String] = { case 2 => "OK" }
p: PartialFunction[Int,String] = <function1>
scala> List(2) map p
res21: List[String] = List(OK)

因为偏函数是通过 { case x => y } 这种特殊的方式来描述的,上面的{case 2=>”OK”}就被当作了一段偏函数字面量,而偏函数背后的类型PartialFunction[A,B]是继承自Function1[A,B]的,所以将这段匿名的偏函数传给map方法是ok的。

偏函数到底是什么
偏函数是只对函数定义域的一个子集进行定义的函数,定义域X中可能存在某些值在值域Y中没有对应的值。scala中用scala.PartialFunction[-T, +S]类来表示。比如前文中这个例子就是定义了一个偏函数:

scala>  val p:PartialFunction[Int,String] = { case 2 => "OK" }
p: PartialFunction[Int,String] = <function1>

当你在代码中需要多次调用一个函数, 而其中的某个参数又总是一样的时候, 使用这个可以使你少敲一些代码。

所以回头看,如果想搞懂偏函数,必须先搞懂scala中的模式匹配,因为scala可以通过模式匹配来定义偏函数,多半也是用在模式匹配里了。


Deeplearn, 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明scala偏函数
喜欢 (0)
[xiaocui]
分享 (0)

您必须 登录 才能发表评论!