8.闭包

定义
1.函数运行的环境
2.持有函数运行状态
3.函数内部可以定义函数
4.函数内部也可以定义类
5.在函数中返回一个函数,被返回的函数可以调用主函数的属性

fun makeFun(): () -> Unit { //返回值为一个无参无返回值的函数
    var count = 0
    return fun() {
        //lambda 优化
        println(++count)
    }
}
fun add(x: Int): (Int)-> Int{

    data class Person(val name: String, val age: Int)

    return fun(y: Int): Int{
        return x + y
    }
}
fun main() {
    val x = makeFun()
    x()
    x()
    x()
    x()
    x()
    val add5 = add(5)
    println(add5(2))
}

你可能感兴趣的:(8.闭包)