kotlin:高阶函数,闭包

高阶函数是将函数用作参数或返回值的函数

fun main(args: Array<String>) {
    val times = calc(100, 15) { a, b ->
        a * b
        a/b
    }
    fun calc(m: Int,n:Int,block:(Int,Int)->Int):Int{
    return block(m,n)
}
    //结果计算两个数相除的结果 6

调用

fun times(m:Int,n:Int,t:Int):Int{
    return m*n*t
}
fun calc(m:Int,n:Int,t:Int,block:(Int,Int,Int)->Int):Int{
    return block(m,n,t)
}
fun main(args: Array<String>) {
    println(calc(12, 13, 14, ::times))
}

lambda表达式去()

lambda表达式是最后一个参数,可以把()前移
如果()前移之后  ()里面没有参数  ()可以省略

lambda表达式单独使用

fun main(args: Array<String>) {
        val result = {a:Int,b:Int->
        a+b
    }.invoke(10,20)                   //非空判断
    println(result)

   val ss= {a:Int,b:Int->a*b}(15,12)
    println(ss)
}

常见的lambda表达式

•Foreach

•Array.indexof

编程思想

•OOP(Object Oriented Programming) 面向对象编程

•FP(Functional Programming) 函数式编程

闭包

闭包就是能够读取其他函数内部变量的函数

函数里面声明函数,函数里面返回函数,就是闭包

闭包就是一个代码块,用“{ }”包起来。此时,程序代码也就成了数据,可以被一个变量所引用

def c2 = { text -> println text }

“->;”之前的部分为闭包的参数,如果有多个参数,之间可用逗号分割;“->”之后的部分为闭包内的程序代码。如果省略了“->”和它之前的部分,此时闭包中代码,可以用名为“it”的变量访问参数。

闭包的返回值和函数的返回值定义方式是一样的:如果有return语句,则返回值是return语句后面的内容;如果没有return语句,则闭包内的最后一行代码就是它的返回值。

应用场景

1、保护函数内的变量安全。

2、在内存中维持一个变量

使用注意

闭包会使得函数中的变量都被保存在内存中,内存消耗很大.

闭包赋值给变量后,待变量销毁,内存释放

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容