Kotlin中接收函数的文字说明

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

我尝试跟随接收器的函数文字的Kotlin文档,但都有样品返回Unit或指DSL建设者。 试图通过google搜索来理解,但没有把握这个概念的运气。

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

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

所以调用者实际上是在表单name ({() -> "ABC"})传递一个lambda,而不是一个String。

看看链接中的例子,它看起来不像name()那样需要接收者,这就是为什么它可能会引起误解。