我正试图通过编写Ktor程序来了解Kotlin,当我注意到这一点时,我正在遵循文档:
fun Application.configureRouting() {
routing {
get("/") {
call.respondText("Hello World!")
}
}
}
routing {}
和get("/") {}
是如何工作的?这意味着什么?routing和get函数是否在Application.configureRouting()
函数中被覆盖?
1条答案
按热度按时间osh3o9ms1#
我想你把Kotlin的type-safe builders和local function搞混了。有可能在另一个函数 (local function) 中定义一个函数,这限制了我们访问子函数的范围。
下面是一个 * 局部函数 * 的示例:
在**类型安全生成器****(代码的
routing
函数)***的情况下,启用此外观的语法的一部分是:根据Kotlin约定,如果函数的最后一个参数是函数,那么作为相应参数传递的lambda表达式可以放在圆括号之外。
当函数的唯一参数是lambda类型时,可以省略括号。另外,将a receiver添加到单个lambda参数将导致类似于您提到的
routing
函数的行为。如果我的解释不充分,您可以阅读更多关于类型安全构建器from the official docs的内容。