缓存从数据库读取的属性

Cil*_*nco 3 kotlin

目前我开始学习Kotlin。我有一个这样的财产:

var startTime: Int
    get() = {
        // read value from database
    }
    set(value) {
        // save value to database
    }
Run Code Online (Sandbox Code Playgroud)

在这里,每次使用 getter 和 setter 时,我总是读取和写入该值。

这个属性可以被惰性评估吗?我想在第一次使用 getter 时读取该值并将其缓存以供后续调用。我知道值可能是惰性的,但我没有发现任何关于变量的信息。Kotlin 中缓存此属性的正确方法是什么?

Str*_*lok 7

Kotlin 提供了惰性属性 ( https://kotlinlang.org/docs/reference/deleated-properties.html#lazy ),这些属性在首次访问时计算并缓存。

\n\n
val lazyValue: String by lazy {\n  println("computed!")\n  "Hello"\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

\xe2\x80\x8b

\n\n
fun main(args: Array<String>) {\n  println(lazyValue)\n  println(lazyValue)\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

会产生

\n\n
computed!\nHello\nHello\n
Run Code Online (Sandbox Code Playgroud)\n