表达式 T.() -> R 中 T.() 是什么意思?


#1

kotlin 的 Standard.kt 中的内联扩展函数 run 、apply这两个函数都出现了这样的用法 T.() -> R Standard 中的其他函数都能看明白 但唯独 这个表达式 不知道是什么意思(当前对象T 调用其参数为空的方法???这理解好像不对啊) 想请教一下大家


#2

参考一
参考二
Function literals with receiver
带有接收者的函数字面值


#4

可以参考
https://juejin.im/post/5d5368285188250540611187
这个


#5

携带 接受者的lambda T.*()会把当前T的对象 携带到你的具体block的实现代码块中 在block实现中 可以直接访问t的属性和方法


#6

T.()实际表达的是可以通过this,访问属性为T的对象。也就是T的注册方法,比如String的append,拓展方法也被认为是注册方法。这里含义是,方法可以访问T的所有可访问对象和方法,默认和类型T的成员是一个层级的。如果是(T)表示的是参数T,是import了对象,级别是类级别的,访问的时候,需要指明对象


京ICP备16022265号-2 Kotlin China 2017 - 2018