如何让Kotlin吸气剂给我实际数据?

问题描述 投票:-1回答:1

据我所知,当您第一次调用类时,Kotlin会生成吸气剂。因此,例如,以下代码将始终为我提供相同的答案:

val instance
    get() = getFromDb() ?: MyData()

[如果存在一个非null的MyData实例,那么它将一直提供该实例,并且如果DB的结果为null,则我将始终获得MyData的新实例。我在这里可能是错的,所以请纠正我。

问题是如何更新吸气剂的值?即大多数时候,我想从数据库中获取数据,但是注销后,我想从数据库中请求数据,或者只是再次给我一个新实例。

kotlin getter
1个回答
0
投票

如果我正确理解情况:

  1. 如果该字段不为空,则要获取值
  2. 如果为空,则要从数据库中获取它
  3. 如果数据库中不存在,则要创建一个新实例

并且所有这些实例都应保存到实例变量中。如果这是您想要的,则可以执行以下操作:

var instance
    get() = field ?: getFromDb().also { field = it } ?: MyData().also { field = it }

请用var代替val来提示>

© www.soinside.com 2019 - 2024. All rights reserved.