这些代码行在 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 官方文档:
关于 lambda 在 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 官方文档:
关于 lambda 在 Kotlin 中作为函数参数的另一个回应: