偏应用函数

Posted jztx123

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了偏应用函数相关的知识,希望对你有一定的参考价值。

偏应用函数

保留部分参数,避免重复编写

object FuncApp extends App {
    // 一般函数
    def sum(a:Int,b:Int,c:Int)= a+b+c
    // 只保留后两位参数,使用占位符语法
    val a = sum(1,_:Int,_:Int)
    a(2,3)  // 等效于调用 sum(1,2,3)
    // 保留全部
    val b = sum _
    b(1,2,3) // 6
}

currying函数

分开参数列表

// 原来的函数形式
def sum1(a:Int,b:Int) = a+b
// currying:将参数分开,在Spark SQL应用较多
def sum2(a:Int)(b:Int) = a+b
sum2(2)(3) // 5

容器遍历

  • 提供一个待遍历的集合List
val l = List(1,2,3,4,5,6,7,8)
  • 原理剖析
// 匿名函数赋予变量
val f = (i:Int)=>println(i)
// 容器遍历
l.foreach(f)
  • 代入,得
l.foreach(i=>println(i))
  • 最具函数风格写法
// 仅限接收参数只有一个时
l.foreach(println)

以上是关于偏应用函数的主要内容,如果未能解决你的问题,请参考以下文章

偏应用函数

Scala快速入门--偏函数

9.13面经

JS闭包应用-私有变量柯里化偏函数

偏函数

python的偏函数