63.高阶函数&lambda表达式
2019-10-05 本文已影响0人
写代码的向日葵
1.写法如下:
fun main(args: Array<String>) {
val a = 10
val b = 20
var sum = add(a, b)
var sub = sub(a, b)
println(sum)
println(sub)
// 函数作为参数传递,函数引用
sum = cacl(a, b, ::add)
sub = cacl(a, b, ::sub)
println(sum)
println(sub)
}
//工具类,对两个数进行操作
fun cacl(a: Int, b: Int, block: (Int, Int) -> Int) = block.invoke(a, b)
//求两数之和
fun add(a: Int, b: Int) = a + b
//求两数之差
fun sub(a: Int, b: Int) = a - b
- 两个冒号
::
获取函数的引用 - 如果函数里面传递函数参数的话,就称为高阶函数
2.lambda
fun main(args: Array<String>) {
val a = 10
val b = 20
val sum = cacl(a, b,{ m, n ->
val result = m + n
result
})
val sub = cacl(a, b) { m, n ->
val result = m - n
result
}
println(sum)
println(sub)
}
fun cacl(a: Int, b: Int, block: (Int, Int) -> Int) = block.invoke(a, b)
- 函数的参数定义出来之后 可以自动推断出类型 返回值不需要写 推断出当前的返回值类型
- 匿名函数,lambda表达式
- 如果最后一个参数是lambda表达式,可以把
()
前移