Kotlin---observable、map

1、observable观察属性变化,相当于,每次属性被赋值(初始化也算一次赋值)例如:


首先,需要导入 Delegates类,
import kotlin.properties.Delegates

class User {

    var name: String by Delegates.observable("") {

        prop, old, new ->

        println("$old -> $new")

    }

}

fun main(args: Array) {

    val user = User()

    user.name = "first"

    user.name = "second"

}

结果:

-> first

first -> second

2、map操作,其实是调用Delegates.mapVal()方法, 拥有一个 map 实例并返回一个可以从 map 中读其中属性的代理。在应用中有很多这样的例子,比如解析 JSON 或者做其它的一些 “动态”的事情

class User(val map: Map) {

val name: String by Delegates.mapVal(map)

val age: Int    by Delegates.mapVal(map)

}

调用:

val user = User(mapOf (

        "name" to "John Doe",

         "age" to 25

))

你可能感兴趣的:(Kotlin---observable、map)