Observable

Delegates.observable()需要传入两个参数:初始化值、用于修改的handlerhandler将会在每次给属性赋值时调用(在赋值操作进行之后)。它有三个参数:被赋值的属性、旧的值、新的值:

import kotlin.properties.Delegates
class User {
    var name: String by Delegates.observable("<no name>") {
        prop, old, new ->
        println("$old -> $new")
    }
}
fun main(args: Array<String>) {
    val user = User()
    user.name = "first"
    user.name = "second"
}

将会打印出:

<no name> -> first
first -> second

如果你想拦截这个赋值过程并且否定这次赋值,可以使用vetoable()方法替换observable()方法。传递给vetoablehandler会在赋值之前调用。

results matching ""

    No results matching ""