1 可观察属性 Observable
可在 onlineCode 上运行查看结果
import kotlin.properties.Delegates
class User {
//observable 返回读写属性的属性委托,该属性在更改时调用指定的回调函数。
var name: String by Delegates.observable("无初始化值"){
prop,old,new ->
println("catch ->$old -> $new")
}
//vetoable 返回读写属性的属性委托,该属性在更改时调用指定的回调函数,允许回调否决修改。
var age:Int by Delegates.vetoable(0){
_,old,new ->
if(new>old) true else throw IllegalArgumentException("New value must be larger than old value.")
}
}
fun main(args: Array<String>) {
val user = User()
user.name = "first"
user.name = "second"
user.age=15
println(user.age)
user.age=13
println(user.age)
}