这些代码行在 Kotlin 中意味着什么?

What do these lines of code mean in Kotlin?

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

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

'it' 是什么意思?

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

这个语法是 Kotlin 特有的吗?

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

那么,在您的示例中,uri { ... } 是什么?这个关键字后跟一个 lambda 是什么?好吧,uri 只是 Netty 客户端上的一个成员方法,它接受一个 lambda 作为参数。但是,Kotlin 允许在函数括号外编写 lambda。所以,不用写 uri({ ... }),你只需写 uri() { .. }。当有 "no other argument except the lambda" 时,我们也可以省略括号。所以我们可以写 uri { ... } 而不是 uri() { ... }

供参考:

Kotlin 官方文档:

Lambdas:

  1. Passing trailing lambdas
  2. it: implicit name of a single argument

关于 lambda 在 Kotlin 中作为函数参数的另一个回应: