0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Kotlin KoansでKotlin入門 第34回:Lazy property

Last updated at Posted at 2022-06-29

はじめに

公式の問題集「Kotlin Koans」を解きながらKotlinを学習します。

過去記事はこちら

問題

Lazy property

カスタムゲッターを追加して、変数lazyを本当にlazy(遅延初期化)にします。
これは、最初のアクセスの間にinitializer()を呼び出すことによって初期化される必要があります。
必要であれば、追加のプロパティを追加することができます。
デリゲートプロパティは使わないでください!

修正前コード.kt
class LazyProperty(val initializer: () -> Int) {
    /* TODO */
    val lazy: Int
        get() {
            TODO()
        }
}

問題のポイント

クラスを初期化するときに、そのタイミングでは値が決められないけれどvalで保持したいプロパティ(今回だとlazy)がある場合があります。

解答例

class LazyProperty(val initializer: () -> Int) {
    var value: Int? = null
    val lazy: Int
        get() {
            if (value == null) {
                value = initializer()
            }
            return value!!
        }
}
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?