美文网首页
kotlin:高阶函数,闭包

kotlin:高阶函数,闭包

作者: 宋song一 | 来源:发表于2018-08-12 22:29 被阅读20次

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

    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、在内存中维持一个变量

    使用注意

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

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

    相关文章

      网友评论

          本文标题:kotlin:高阶函数,闭包

          本文链接:https://www.haomeiwen.com/subject/enpebftx.html