kotlin - 这些代码行在 Kotlin 中意味着什么?
问题描述
我看到使用 Kotlin 语言创建基于 WebFlux httpClient(引擎盖下的 Netty)的 GET 请求。但我不知道这些代码元素是什么意思:
return client
.get()
.uri{
it.path(%some_path%)
.queryParam("%some_param%", value)
.build()
}.header(...)
.awaitExchange()
.awaitBody()
这是什么意思?
'uri' 后面的花括号是什么意思?
这种语法是 Kotlin 特有的吗?
解决方案
它的确是。花括号及其内容代表一个 lambda,并且it
是一种快捷方式:对于具有单个参数的 lambda,您不必自己命名。Kotlin 提供了一个隐含的命名:'it'。
那么,在您的示例中,什么是 uri { ... } ?这个关键字后跟一个 lambda 是什么?嗯,uri
它只是 Netty 客户端上的一个成员方法,它需要一个 lambda 作为参数。但是,Kotlin 允许在函数括号之外编写 lambda。所以,不要写uri({ ... })
,你只写uri() { .. }
。当“除了 lambda 没有其他参数”时,我们也可以省略括号。所以我们可以写uri { ... }
而不是uri() { ... }
以供参考:
Kotlin 官方文档:
拉姆达斯:
关于 lambda 作为 Kotlin 中的函数参数的另一个响应:https ://stackoverflow.com/a/60868804/2678097
推荐阅读
- r - 在 R 数据框列的字符串中添加字符
- python - python导入文件路径相对于导入模块/使用模块而不安装
- node.js - ipython importlib.reload 的 nodejs 等价物是什么?
- webcam - 使用映像 nvcr.io/nvidia/deepstream-l4t:5.1-21.02-samples 在 k3s pod 中部署容器时出错
- javascript - 我的 DIV 元素变为对角线而不是水平线
- django - 无法使用视图名称“对话详细信息”解析超链接关系的 URL
- excel - 处理 1.15 亿个细胞的最快方法?
- javascript - JSON.stringify() 如何解析对象以仅返回一个属性的值
- arrays - 关于使用带有 Selenium 和 Concurrent Futures 的 csv 文件循环数组的 Python 3 问题
- python - pd.to_datetime() 返回类型会因输入而异。如何确保它不返回具有 dtype 'object' 的系列/数组?