Delegates.observable所在位置是kotlin.properties.Delegates.observable,其相關用法介紹如下。

用法:

inline fun <T> observable(
    initialValue: T, 
    crossinline onChange: (property: KProperty<*>, oldValue: T, newValue: T) -> Unit
): ReadWriteProperty<Any?, T>

返回讀取/寫入屬性的屬性委托,該屬性在更改時調用指定的回調函數。

例子:

import kotlin.properties.Delegates

import kotlin.test.*

fun main(args: Array<String>) {
//sampleStart
var observed = false
var max: Int by Delegates.observable(0) { property, oldValue, newValue ->
    observed = true
}

println(max) // 0
println("observed is ${observed}") // false

max = 10
println(max) // 10
println("observed is ${observed}") // true
//sampleEnd
}

輸出:

0
observed is false
10
observed is true

參數

initialValue- 屬性的初始值。

onChange- 更改屬性後調用的回調。調用此回調時,該屬性的值已更改。