这些代码行在Kotlin中是什么意思?

问题描述 投票:0回答:1

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

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

这是什么意思?

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

这是Kotlin专用的语法吗?

kotlin get netty spring-webflux
1个回答
0
投票

的确如此。大括号及其内容表示一个lambda,而it是一种快捷方式:对于具有单个参数的lambda,您不必自己命名。 Kotlin提供了一个隐式命名:“ it”。

所以,在您的示例中,uri {...}是什么? lambda后面跟这个关键字是什么?好吧,uri只是netty客户端上的成员方法,它以lambda作为参数。但是,当唯一的参数是lambda时,Kotlin允许省略函数括号。因此,您只需写uri({ ... }),而不是写uri { .. }

供参考:

科特林官方文档:

Lambdas

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

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

© www.soinside.com 2019 - 2024. All rights reserved.