kotlin 如何在函数中定义函数?

yb3bgrhw  于 2023-01-21  发布在  Kotlin
关注(0)|答案(1)|浏览(157)

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

fun Application.configureRouting() {

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

routing {}get("/") {}是如何工作的?这意味着什么?routing和get函数是否在Application.configureRouting()函数中被覆盖?

osh3o9ms

osh3o9ms1#

我想你把Kotlin的type-safe builderslocal function搞混了。有可能在另一个函数 (local function) 中定义一个函数,这限制了我们访问子函数的范围。
下面是一个 * 局部函数 * 的示例:

fun foo() {
    fun bar() {
        println("I'm within a local function.")
    }

    println("We can call bar only from foo.")
    bar()
}
在**类型安全生成器****(代码的routing函数)***的情况下,启用此外观的语法的一部分是:

根据Kotlin约定,如果函数的最后一个参数是函数,那么作为相应参数传递的lambda表达式可以放在圆括号之外。
当函数的唯一参数是lambda类型时,可以省略括号。另外,将a receiver添加到单个lambda参数将导致类似于您提到的routing函数的行为。如果我的解释不充分,您可以阅读更多关于类型安全构建器from the official docs的内容。

相关问题