06 Scala 偏函数 & 部分应用函数

PARTIAL APPLICATION

偏函数的应用场景:检查参数,拒绝不合法参数。即接受参数类型内的子集。

在Scala中偏函数是scala包中定义的一个Trait:PartialFunction[-A, +B] 有两个需要实现的方法

  1. isDefinedAt:定义可接受参数的范围
  2. apply:定义对参数做何处理

例子:过滤列表中大于5的元素

val elemetsLessThan5 = List(2,3,4,6).collect(new PartialFunction[Int, Int] {
  override def isDefinedAt(x: Int): Boolean = x < 5 //不接受小于5的参数
  override def apply(v1: Int): Int = v1
})

print(elemetsGreateThan5)   //2,3,4

偏应用函数可以改写成case语句,在scala中case被编译为函数,参数(case后的变量列表)是根据模式匹配赋值

val elemetsLessThan5 = List(2,3,4,6).collect({ case i: Int if i < 5 => i })

print(elemetsLessThan5) //2,3,4

Partial Applied Function.

部分应用函数是根据已有的函数,定义一个新的函数。新的函数相比之前的函数,方法体相同,参数减少。

def sum(x: Int, y:Int, z: Int) = x + y +z
//部分应用函数
def sum2 = sum (0, _:Int, _:Int)

sum2(1,2) == sum(0,1,2)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容