其他分享
首页 > 其他分享> > 属性委托,由旧值改新值

属性委托,由旧值改新值

作者:互联网

package myfirst

import kotlin.reflect.KProperty

class A {

var index=0
var oldValue:Int=1
var newValue:Int by this.oldValue//新值通过旧值改变来赋值,设置旧值得属性构造器


private operator fun Int.setValue(a: A, property: KProperty<*>, oldValue: Int) {

println(">>>>index:${index}")//set设置器,在下次赋值时起作用,不赋值仍然取旧值
a.oldValue=7//总是这样,oldValue=xxx//这样会产生新值
//理解,先执行get,然后by,最后set
index+=1
}

private operator fun Int.getValue(a: A, property: KProperty<*>): Int {
println("<<<<<<index:${index}")
index+=1
return a.oldValue//返回旧值
//理解,先执行get,然后by,最后set
}
}



fun main(args: Array<String>) {
var a=A()
a.oldValue=999999
println(a.newValue)
}

标签:index,set,Int,旧值,改新值,oldValue,var,属性
来源: https://www.cnblogs.com/cgybokeyuan/p/15248485.html