在Kotlin中,函数可以以函数字面值,局部函数和对象表达式的形式进行嵌套。以下是这三种情况的代码示例。

    1. 函数字面值(Function Literals):
    1. val greet = { name: String ->
    2. val message = "Hello, $name"
    3. println(message)
    4. }
    5. greet("World") // 输出 "Hello, World"

    在这个示例中,greet是一个函数字面值,它接受一个字符串参数name,然后打印出一条问候消息。

    1. 局部函数(Local Functions):
    1. fun outerFunction() {
    2. fun innerFunction() {
    3. println("Inside Inner function.")
    4. }
    5. println("Inside Outer function.")
    6. innerFunction()
    7. }
    8. outerFunction()

    在这个示例中,innerFunction是一个局部函数,它被定义在outerFunction函数内部。当调用outerFunction时,会先打印”Inside Outer function.”,然后调用innerFunction打印”Inside Inner function.”。

    1. 对象表达式(Object Expressions):
    1. open class A {
    2. open fun foo() { println("A function") }
    3. }
    4. fun main() {
    5. val a = object : A() {
    6. override fun foo() {
    7. println("B function")
    8. }
    9. }
    10. a.foo() // 输出 "B function"
    11. }

    在这个示例中,我们创建了一个匿名内部类(通过对象表达式),并重写了A类的foo方法。当调用a.foo()时,会打印”B function”。