在函数内定义函数如何工作?
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.
我正在尝试通过编写 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类型时,括号可以省略。另外,添加 routing
function that you mentioned. If my explanation is not sufficient, you can read more about type-safe builders from the official docs.