kotlin标准委托之阻止属性的赋值操作

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则保留原来的值

posted on 2018-12-19 14:58  LoaderMan  阅读(478)  评论(0编辑  收藏  举报

导航