如何让Kotlin getter给我实际数据?
正如我所知,Kotlin在您第一次调用类时生成getter。例如,下面的代码总是给出相同的答案:如何让Kotlin getter给我实际数据?,kotlin,getter,Kotlin,Getter,正如我所知,Kotlin在您第一次调用类时生成getter。例如,下面的代码总是给出相同的答案: val instance get() = getFromDb() ?: MyData() 如果有一个非空的MyData实例,那么它将一直提供这个实例,如果DB的结果为空,我将始终获得MyData的新实例。我可能错了,如果我错了,请纠正我 问题是如何更新getter的值?也就是说,大多数时候我想从数据库中获取数据,但在注销后,我想从数据库中请求数据或再次给我一个新实例。如果我正确理解情况:
val instance
get() = getFromDb() ?: MyData()
如果有一个非空的MyData
实例,那么它将一直提供这个实例,如果DB的结果为空,我将始终获得MyData
的新实例。我可能错了,如果我错了,请纠正我
问题是如何更新getter的值?也就是说,大多数时候我想从数据库中获取数据,但在注销后,我想从数据库中请求数据或再次给我一个新实例。如果我正确理解情况:
var instance
get() = field ?: getFromDb().also { field = it } ?: MyData().also { field = it }
请不要使用
var
而不是val
你写这篇文章的方式,它是这样工作的:如果getFromDb()
不为空,它将返回它,否则它将返回类的新实例MyData()
可以编辑你的问题并准确解释你需要什么?此外,它将调用getter(因此,每次尝试访问属性时(不仅仅是第一次),都要调用getFromDb()
)。因此,它可能不会总是给出相同的答案。@gidds因此,它不会一次性存储从数据库获取的数据,但每次都会发出一个数据库请求,对吗?如果我需要缓存这些数据,我需要创建一个单独的变量?@SaeedEntezari换句话说,Kotlin是否会在第一次调用后缓存一个值,是否会使用缓存值?