通过委托来简化属性获取器
我有很多属性遵循这个模式,基本上只有从下面的模板变化的东西是:
- 初始化的值
- 属性名称
码
var foo: Double = 0.0 get() { update() return field } var foo2: Double = 1.23 get() { update() return field }
题
有什么办法可以使用委托来简化(减少代码的冗长)吗?
当然
private fun publishingDelegate(value: T): ReadWriteProperty = object: ReadWriteProperty { private var initValue = value override fun getValue(thisRef: Any?, property: KProperty<*>): T { update() return initValue } override fun setValue(thisRef: Any?, property: KProperty<*>, value: T) { update() initValue = value } } var foo: Double by publishingDelegate(0.0) var foo2: Double by publishingDelegate(1.23)