首页 > 解决方案 > 这些代码行在 Kotlin 中意味着什么?

问题描述

我看到使用 Kotlin 语言创建基于 WebFlux httpClient(引擎盖下的 Netty)的 GET 请求。但我不知道这些代码元素是什么意思:

return client
    .get()
    .uri{
        it.path(%some_path%)
                .queryParam("%some_param%", value)
                .build()
    }.header(...)
    .awaitExchange()
    .awaitBody()

这是什么意思?

'uri' 后面的花括号是什么意思?

这种语法是 Kotlin 特有的吗?

标签: kotlingetnettyspring-webflux

解决方案


它的确是。花括号及其内容代表一个 lambda,并且it是一种快捷方式:对于具有单个参数的 lambda,您不必自己命名。Kotlin 提供了一个隐含的命名:'it'。

那么,在您的示例中,什么是 uri { ... } ?这个关键字后跟一个 lambda 是什么?嗯,uri它只是 Netty 客户端上的一个成员方法,它需要一个 lambda 作为参数。但是,Kotlin 允许在函数括号之外编写 lambda。所以,不要写uri({ ... }),你只写uri() { .. }。当“除了 lambda 没有其他参数”时,我们也可以省略括号。所以我们可以写uri { ... }而不是uri() { ... }

以供参考:

Kotlin 官方文档:

拉姆达斯

  1. 传递尾随 lambda
  2. it:单个参数的隐式名称

关于 lambda 作为 Kotlin 中的函数参数的另一个响应:https ://stackoverflow.com/a/60868804/2678097


推荐阅读