gpt4 book ai didi

kotlin - Kotlin 中带接收者的函数字面量说明

转载 作者:行者123 更新时间:2023-12-01 11:20:30 28 4
gpt4 key购买 nike

我正在关注此链接 https://kotlin.link/articles/DSL-builder-in-Kotlin.html了解 Kotlin 中的构建器实现。我不了解 Builder 类中的方法。方法 name() 接收扩展函数作为参数,该函数不接收任何内容并返回字符串。调用者调用 name { "ABC"} 。如果调用者将 String 传递给 name 方法,它如何转换为返回 String 的扩展方法?

我尝试按照 Kotlin 文档了解带有接收器的函数字面值,但所有示例都有返回 Unit 或引用 DSL Builders 的示例。也尝试用谷歌搜索来理解,但没有运气掌握这个概念。

最佳答案

name { "ABC"} 的调用是两个 Kotlin 约定的组合。

有一个约定,如果函数的最后一个参数是函数,则可以省略括号。此外,由于 lambda 没有参数,"ABC" 是它返回的内容。

所以调用者实际上传递的是 name ({() -> "ABC"}) 形式的 lambda,而不是字符串。

查看链接中的示例,看起来接收器对于 name() 不是必需的,这就是它可能会产生误导的原因。

关于kotlin - Kotlin 中带接收者的函数字面量说明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44273241/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com