【问题标题】:Kotlin: Initialisation and get for a variableKotlin:初始化并获取变量
【发布时间】:2021-03-28 09:44:09
【问题描述】:

有什么区别:

1.
    var abc = someObject.getSomeValueWhichChangesFrequently()
    
    vs 
  
2.  
    var abc = someObject.getSomeValueWhichChangesFrequently()
       get = someObject.getSomeValueWhichChangesFrequently()

someObject.getSomeValueWhichChangesFrequently() 经常更改。 将使用第一种方式,仅在 init 设置值,然后始终从 abc 返回该值,无论 someObject.getSomeValueWhichChangesFrequently() 稍后返回什么值 或将 abc 始终返回 someObject.getSomeValueWhichChangesFrequently() 的最新值。

我不想 #2 因为我必须在 abc 的 init 和 get() 中调用 someObject.getSomeValueWhichChangesFrequently()

请指教。谢谢

【问题讨论】:

标签: kotlin


【解决方案1】:

我不想 #2 因为我必须在 abc 的 init 和 get() 中调用 someObject.getSomeValueWhichChangesFrequently()

你应该写的是

val abc
   get() = someObject.getSomeValueWhichChangesFrequently()

var abc
   get() = someObject.getSomeValueWhichChangesFrequently()
   set(value) = someObject.setSomeValueWhichChangesFrequently(value)

#2 中初始化程序中的调用实际上是无用的,因为它初始化了 backing field,但 getter 永远不会访问它。

【讨论】:

    猜你喜欢
    • 2021-07-08
    • 1970-01-01
    • 2020-04-26
    • 2012-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-15
    相关资源
    最近更新 更多