MST

星途 面试题库

面试题:Kotlin中局部函数与匿名函数的区别

请详细阐述Kotlin中局部函数和匿名函数在定义方式、作用域、使用场景上的区别,并各举一个简单的代码示例。
15.6万 热度难度
编程语言Kotlin

知识考点

AI 面试

面试题答案

一键面试

定义方式

  • 局部函数:在函数内部定义的函数。
fun outerFunction() {
    val num = 10
    fun innerFunction() {
        println("局部函数访问外部函数变量: $num")
    }
    innerFunction()
}
  • 匿名函数:没有函数名的函数,可赋值给变量。
val anonymousFunction = fun(x: Int, y: Int): Int {
    return x + y
}

作用域

  • 局部函数:作用域仅限于包含它的外部函数内部,外部函数的局部变量对局部函数可见。
  • 匿名函数:取决于其定义位置,可在全局、函数内等定义,在函数内定义时可访问函数内局部变量。

使用场景

  • 局部函数:适用于只在某个函数内部使用,且逻辑紧密相关的功能。例如在复杂算法函数中,将部分逻辑抽取为局部函数,增强代码可读性和可维护性。
  • 匿名函数:常用于作为高阶函数的参数,如传递给集合的mapfilter等函数。
val list = listOf(1, 2, 3)
val result = list.map(fun(num: Int): Int {
    return num * 2
})
println(result)