码迷,mamicode.com
首页 > 其他好文 > 详细

偏应用函数

时间:2019-03-29 20:55:43      阅读:166      评论:0      收藏:0      [点我收藏+]

标签:sum   调用   有一个   容器   形式   lock   部分   cal   val   

偏应用函数

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

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)

偏应用函数

标签:sum   调用   有一个   容器   形式   lock   部分   cal   val   

原文地址:https://www.cnblogs.com/JZTX123/p/10623621.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!