我正在关注此链接https://kotlin.link/articles/DSL-builder-in-Kotlin.html以了解Kotlin中的构建器实现.我不明白Builder类中的方法.方法name()接收扩展函数作为参数,它不接收任何内容并返回String.来电者打来电话name { "ABC" }.如果调用者将String传递给name方法,它如何转换为返回String的Extension方法?
我尝试使用带接收器的函数文字的Kotlin文档,但所有样本都返回Unit或引用DSL构建器.尝试谷歌搜索它也理解但没有运气抓住这个概念.
调用name { "ABC" }是两个Kotlin约定的组合.
有一个约定,如果函数的最后一个参数是一个函数,你可以省略括号.此外,因为lambda没有参数"ABC",所以它返回的是什么.
所以调用者实际上是在表单中传递lambda name ({() -> "ABC"})而不是String.
看一下链接中的示例,它看起来不像接收器name(),这就是为什么它可能会产生误导.
| 归档时间: |
|
| 查看次数: |
488 次 |
| 最近记录: |