import kotlin.properties.Delegates fun main(arg: Array<String>) { val user = user() user.name="two" println(user.name) user.name="new" println(user.name) } class user{ var name:String by Delegates.vetoable("one"){ property, oldValue, newValue -> var result =true println("旧值 $oldValue 新值 $newValue") if (newValue.equals("new")){ result=false println("name属性不能是new") } result } }
输出:
旧值 one 新值 two two 旧值 two 新值 new name属性不能是new two
总结:使用vetoable函数,响应器会返回一个布尔值,如果返回true,表示允许赋值,false则保留原来的值