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()
那样需要接收者,这就是为什么它可能会引起误解。
- Kotlin为assertThat(foo,instanceOf(Bar.class))
- Android Studio 3 Canary中未解决的参考
- Android kotlin项目生成卡在应用程序:kaptDebugKotlin任务
- Kotlin中的一个类和一个对象之间的区别
- 返回if / else条件的值,还要运行代码
- RegisterResGeneratingTask已弃用,请使用registerGeneratedFolders(FileCollection)
- 在kotlin func中使用资源 – 不能用fat jar(一个jar)
- 将ByteBuffer数组从Java / Kotlin传递到C ++ / V8会导致数据不正确
- 数据绑定Kotlin Android工作室错误