63.高阶函数&lambda表达式

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表达式,可以把()前移
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容