在函数内定义函数如何工作?

How does defining functions within functions work?

我正在尝试通过编写 Ktor 程序来了解 Kotlin,当我注意到这一点时正在阅读文档:

fun Application.configureRouting() {

    routing {
        get("/") {
            call.respondText("Hello World!")
        }
    }
}

routing {}get("/") {} 是如何工作的?这是什么意思? Application.configureRouting() 函数中的路由和获取函数是否被覆盖?

我想你混淆了 Kotlin 的 type-safe builders with local functions。可以在另一个函数 (local function) 中定义一个函数,这会限制子函数的范围。

对于 type-safe 个构建器,支持此外观的部分语法是:

According to Kotlin convention, if the last parameter of a function is a function, then a lambda expression passed as the corresponding argument can be placed outside the parentheses.

当函数的唯一参数是lambda类型时,括号可以省略。另外,添加 to a single lambda parameter will result in a behavior similar to the routing function that you mentioned. If my explanation is not sufficient, you can read more about type-safe builders from the official docs.