在kotlin文档中,委托一章的最后一段内容,提供委托,其代码是不全的,导致学习者可能对这一章内容缺乏更细节的了解,这里补充一下:
网页上的代码如下,只做了类的基本设计,缺乏实现细节
我们补充如下:
//提供委托
//通过定义 provideDelegate 操作符,可以扩展创建属性实现所委托对象的逻辑。
//如果 by 右侧所使用的对象将provideDelegate定义为成员或扩展函数,那么会调用该函数来创建属性委托实例。
//provideDelegate的其中一个应用场景是用来在实例初始化之前确定属性是否存在
//例如,如果要在绑定之前检测属性名称,可以这样写:
//以下代码的构建顺序如下:
//class MyUI()
// -> MyUI.某属性(开始调用getValue方法的委托)
// -> fun bindResource(id:ResourceID),类中的某个属性被委托到bindResource方法
// -> class ResourceLoader(id:ResourceID),bindResource()方法启动class ResourceLoader()
// -> fun provideDelegate(thisRef: MyUI,property: KProperty<*>)
// -> fun checkProperty(thisRef: MyUI,name:String)
// -> class ResouceDeleating()
// -> getValue(thisRef: MyUI, property: KProperty<*>) : Int
class ResourceDeleating:ReadOnlyProperty<MyUI,Int>{
var curValueText : Int= 8888
var curValueImage : Int =