🦜

Kotlinのbyとは?

2024/12/07に公開

What by keyword?

Kotlinのbyというキーワードはなんなのか?

いつもおまじないでつけていた。

https://kotlinlang.org/docs/delegated-properties.html

Delegated properties

一般的なプロパティの種類によっては、必要なたびに手動で実装することもできるが、一度実装してライブラリに追加し、後で再利用した方が便利なものもある。例えば

Lazyプロパティ:最初のアクセス時にのみ値が計算される。

Observableプロパティ:このプロパティの変更についてリスナーに通知される。

各プロパティに個別のフィールドを持たず、マップにプロパティを格納する。

これらの(そして他の)ケースをカバーするために、Kotlinはデリゲート・プロパティをサポートしている:

class Example {
    var p: String by Delegate()
}

詳解 Jetpack Compose ── 基礎から学ぶAndroidアプリの宣言的UIを最近買ったのですがこちらの解説を読むと分かりやすいと思います。

委譲するというワードが出てきますね。

以上とは、あるオブジェクトの役割の一部を他のオブジェクトに任せ、実装を分離することです。Kotlinは言語レベルで委譲をサポートしており、byというキーワードを用いて委譲を記述できます。

委譲プロパティのメリット

メリットは2つある

  1. 委譲元のクラスや関数の実装をシンプルにできる
  2. 委譲元のクラスを再利用できる

Discussion