Kotlin捕获上下文中的变量和常量

作者: 程序员丶星霖 | 来源:发表于2019-08-01 17:27 被阅读6次

Lambda表达式或匿名函数可以访问或修改其所在上下文中的变量和常量,这个过程被称为捕获

fun main(args: Array<String>) {
    //定义一个函数,该函数的返回值类型为()->List<String>
    fun makeList(ele: String): () -> List<String> {
        //创建一个不包含任何元素的List
        var list: MutableList<String> = mutableListOf()
        fun addElement(): List<String> {
            //向list集合中添加一个元素
            list.add(ele)
            return list
        }
        return ::addElement
    }
}

上例中顶一个一个局部函数,这个局部函数可访问或修改其所在函数中的变量。

Lambda表达式或匿名函数都会持有一个其所捕获的变量的副本,因此表面上看addElement()访问的是makeList()函数的list集合变量,但只要程序返回一个新的addElement()函数,addElement()函数就会持有一个新的list的副本。

Lambda表达式或匿名函数都会持有一个其所捕获的变量的副本,因此表面上看addElement()访问的是makeList()函数的list集合变量,只要程序返回一个新的addElement()函数,就会持有一个新的list的副本。

fun main(args: Array<String>) {
    println("******add1返回的List**********")
    val add1 = makeList("刘备")
    println(add1())
    println(add1())

    println("******add2返回的List**********")
    val add2 = makeList("关羽")
    println(add2())
    println(add2())
}

输出结果:

******add1返回的List**********
[刘备]
[刘备, 刘备]
******add2返回的List**********
[关羽]
[关羽, 关羽]

学海无涯苦作舟

我的微信公众号.jpg

相关文章

  • Kotlin捕获上下文中的变量和常量

    Lambda表达式或匿名函数可以访问或修改其所在上下文中的变量和常量,这个过程被称为捕获。 上例中顶一个一个局部函...

  • 每天学一点Swift----闭包(三)

    八.捕获上下文中的变量和常量 1.闭包可以用访问或修改闭包所在上下文中的变量或常量(对于常量只是访问),这个过程被...

  • swift闭包中的值捕获

    闭包可以捕获和存储其所在上下文中任意常量和变量的引用。被称为包裹常量和变量。 Swift 会为你管理在捕获过程中涉...

  • 8.闭包

    闭包可以捕获和存储其所在上下文中任意常量和变量的引用。被称为包裹常量和变量。 Swift 会为你管理在捕获过程中涉...

  • Fu*king Closures

    闭包能在其被定义的上下文中捕获和存储任何常量和变量的引用,这叫关闭这些常量和变量。 全局函数是有名字且不捕获任何值...

  • Swift-闭包

    闭包可以从定义它们的上下文中捕获和存储对任何常量和变量的引用。 这被称为关闭这些常量和变量。 Swift处理所有的...

  • swfit Block 捕获值 与 闭包是引用类型

    捕获值 闭包可以在其定义的上下文中捕获常量或变量 即使定义这些常量和变量的原域已经不存在,闭包仍然可以在闭包函数体...

  • Swift 3.0之七、闭包

    闭包能够捕获和存储其上下文中的常量和变量的引用,闭合并包裹这些常量和变量,因此被称为“闭包”。 函数是特殊形式的闭...

  • Swift进阶08:闭包 & 捕获原理

    闭包 闭包能够捕获和存储定义在其上下文中的任何常量和变量的引用,这也就是所谓的闭合并包裹那些常量和变量,因此被称为...

  • Swift编程八(闭包)

    案例代码下载 闭包 函数闭包可以从定义它们的上下文中捕获和存储对任何常量和变量的引用,Swift处理捕获的所有内存...

网友评论

    本文标题:Kotlin捕获上下文中的变量和常量

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