Kotlin---observable、map

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


首先,需要导入 Delegates类,
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

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

class User(val map: Map<String, Any?>) {

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

))

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • pyspark.sql模块 模块上下文 Spark SQL和DataFrames的重要类: pyspark.sql...
    mpro阅读 9,988评论 0 13
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 137,013评论 19 139
  • 本文是在学习和使用kotlin时的一些总结与体会,一些代码示例来自于网络或Kotlin官方文档,持续更新... 对...
    竹尘居士阅读 3,510评论 0 8
  • 我们平安无事的在姚鹏家待了很久,直到我觉得我应该找份工作,于是我又干回了药店,在工作中,我开始开朗,不偏激...
    月下柳阅读 250评论 0 1
  • 姓名:周玉霞 六项精进:327期学员 公司:温州易道伟业企业管理咨询有限公司 地点:温州市龙湾区蒲州街道上江路15...
    Anne玉阅读 148评论 0 0

友情链接更多精彩内容