所谓可观察属性就是当属性变化时可以拦截其变化,实现观察属性值变化的委托函数是Delegates.observable.该函数接受二个参数,第一个是初始化值,第2个属性值变化事件的响应器.每次我们向属性赋值时,响应器都会被调用,响应器函数的三个函数,被赋值的属性,赋值前旧属性值,以及赋值后的新属性值
import kotlin.properties.Delegates fun main(arg: Array<String>) { val user = user() user.name="two" user.name="new" } class user{ var name:String by Delegates.observable("one"){ property, oldValue, newValue -> println("旧值 $oldValue 新值 $newValue") } }
输出:
旧值 one 新值 two 旧值 two 新值 new