面试题答案
一键面试闭包概念
在Kotlin中,Lambda表达式可以捕获其定义时所在作用域的变量,即使这些变量在Lambda表达式执行时已超出其原始作用域,这种特性就形成了闭包。闭包本质上是一个函数以及与其相关的引用环境的组合体。
典型应用场景
在Android开发中,使用Handler
进行延迟任务处理时,闭包可用于捕获外部变量。例如,在一个Activity中更新UI,当需要在一段时间后执行某个操作并使用Activity中的变量时,就会用到闭包。
示例代码
fun main() {
val outerVariable = 10
val closure = { println("Captured variable: $outerVariable") }
closure.invoke()
}
在上述代码中,Lambda表达式{ println("Captured variable: $outerVariable") }
捕获了外部变量outerVariable
,形成了闭包。即使outerVariable
定义在Lambda表达式外部,在Lambda表达式执行时依然可以访问它。