Kotlin Koans 33 Lazy property

Lazy property (Playground)

Description

Add a custom getter to make the 'lazy' val really lazy. It should be initialized by the invocation of 'initializer()' at the moment of the first access.

You can add as many additional properties as you need.

Do not use delegated properties!

'lazy' 変数を本当にlazy(遅延)にするためのカスタムゲッターを追加してください。初回アクセス時に 'initializer()' を呼び出して初期化をする必要があります。

必要に応じて、プロパティを追加してください・

委譲プロパティは使用しないでください。

Code

class LazyProperty(val initializer: () -> Int) {
// nullableにしておく
var value: Int? = null
val lazy: Int
get() {
if (value == null) {
// 初回アクセス時の値で初期化
value = initializer()
}
//nullの場合はNullPointerExceptionをthrow
return value!!
}
}

Memo

← Blog