美文网首页Android开发经验谈Android开发程序员
Kotlin学习笔记之 17 可观察属性

Kotlin学习笔记之 17 可观察属性

作者: super_shanks | 来源:发表于2019-04-10 14:29 被阅读3次

    17.可观察属性

    • observable

      任何用var形容的可变属性都可以对其进行观察(当然用val修饰的属性进行观察也不会报错,但是将变得毫无意义)

      一般观察属性的格式如下

      var name: String by Delegates.observable("<no name>") {
          property, oldValue, newValue ->
          println("$property :  $oldValue -> $newValue")
      }
      

      通过by Delegates.observable的形式进行观察,第一参数传入的是默认值,第二个参数用lambda表达式,三个参数分别对应的是property观察属性的类型,oldValue旧的值,和newValue新的值

    • vetoable

      用作拦截,跟上面的observable来说唯一的不同是,上面的observable后面的lambda表达式返回的是Unit,即只是把3个参数回调给你让你知道的。而vetoablelambda需要的是返回一个Boolean类型。

      If the callback returns true the value of the property is being set to the new value, and if the callback returns false the new value is discarded and the property remains its old value.

      即如果返回true那么属性可以赋值成新的值,如果返回的是false那么属性将依然维持旧的值,无法变成新的值。

    相关文章

      网友评论

        本文标题:Kotlin学习笔记之 17 可观察属性

        本文链接:https://www.haomeiwen.com/subject/sxbniqtx.html