码迷,mamicode.com
首页 > 其他好文 > 详细

kotlin 学习记录

时间:2018-08-01 16:01:39      阅读:171      评论:0      收藏:0      [点我收藏+]

标签:lazy   变更   setvalue   它的   ssi   value   有关   监听器   类型   

关于kotlin中的委托:

1.属性委托

  我们知道kotlin为我们提供了几种标准的委托,如下所示

  延迟属性(lazy properties): 其值只在?次访问时计算;
  可观察属性(observable properties): 监听器会收到有关此属性变更的通知;
  把多个属性储存在?个映射(map)中,?不是每个存在单独的字段中。

  kotlin中的委托属性

class Example {
      var p: String by Delegate()
}

  语法是: val/var <属性名>: <类型> by <表达式>。在 by 后?的表达式是该 委托, 因为属性对应的 get()(和 set() )会被委托给它的
getValue() 和 setValue() ?法。 属性的委托不必实现任何的接?,但是需要提供?个 getValue() 函数(和 setValue() ?对于 var 属
性)。 例如:

class Delegate {
operator fun getValue(thisRef: Any?, property: KProperty<*>): String {
return "$thisRef, thank you for delegating ‘${property.name}‘ to me!"
}
operator fun setValue(thisRef: Any?, property: KProperty<*>, value: String) {
println("$value has been assigned to ‘${property.name}‘ in $thisRef.")
}
}

 

kotlin 学习记录

标签:lazy   变更   setvalue   它的   ssi   value   有关   监听器   类型   

原文地址:https://www.cnblogs.com/abin-c/p/9401495.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!