PARTIAL APPLICATION
偏函数的应用场景:检查参数,拒绝不合法参数。即接受参数类型内的子集。
在Scala中偏函数是scala包中定义的一个Trait:PartialFunction[-A, +B] 有两个需要实现的方法
- isDefinedAt:定义可接受参数的范围
- 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)