美文网首页
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 函数式编程思想 FP in Kotlin

    Kotlin 函数式编程思想 : FP in Kotlin 函数式编程特性 闭包和高阶函数 函数编程支持函数作为第...

  • Kotlin学习之高阶函数和Lambda表达式:闭包

    Kotlin学习之高阶函数和Lambda表达式:闭包 一、闭包 闭包指Lambda表达式和匿名函数外部定义的局部变...

  • Kotlin:高阶函数与 Lambda 表达式(四)

    本篇内容清单如下: 高阶函数 函数类型 Lambda 表达式 匿名函数 闭包 内联函数 Kotlin 函数使用场景...

  • kotlin:高阶函数,闭包

    高阶函数是将函数用作参数或返回值的函数 调用 lambda表达式去() lambda表达式单独使用 常见的lamb...

  • Python笔记四 装饰器

    装饰器 = 高阶函数+函数嵌套+闭包 高阶函数 = 参数 or 返回值为函数 函数嵌套 = 在函数中定义函数 闭包...

  • Python 进阶语法

    高阶函数 python 的高阶函数非常 Nice,高级函数的核心就是闭包{},闭包就可以把一段{}包裹的代码当成对...

  • <>

    使用函数的正确姿势# 什么是高阶函数? 满足任意一点都可以称为高阶函数!! 闭包的概念 闭包个人了解就是函数和局部...

  • Kotlin基础语法

    kotlin核心点:协成、高阶、闭包 一、Var与Val 二、函数 三、字符串模板 四、NULL检查机制 五、区间...

  • Swift高阶函数map、flatMap、CompactMap

    高阶函数 高阶函数的本质也是函数,有两个特点 接受函数或者是闭包作为参数 返回值是一个函数或者是闭包 Map函数 ...

  • JavaScript笔记2

    this、高阶函数、闭包、箭头函数、generator 1. this 函数this指向问题:(1)this和它声...

网友评论

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

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