LoginSignup
3
7

More than 5 years have passed since last update.

by lazyとは

今長澤太郎さんの、赤べこ本を読んでおります。
image.png
※転載あかんようなら消します。すいません。

まだ全然読めてないんですが、ちらっと出てきた物体に「??」となっております。

それがby lazy !!!!!

一応自分でKotlinのDocを参照してみました。
https://kotlinlang.org/docs/reference/delegated-properties.html

以下の場合にプロパティに対して移譲できるようです。
つまり移譲プロパティ(Delegated Properties)ってやつです(赤べこ本にも書いてありました。)

class Sample(n: Int, d: Int) {
    private val str: String by lazy {"初期化します"}

byで移譲

by lazyでひとまとめに読んでましたが、そうではなくて、
byのあとに移譲するオブジェクトが渡せるようです。

じゃあlazyって?

lazyってなんじゃってことになります。

リファレンスにも一応書いてあります。
https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/lazy.html

lazy() is a function that takes a lambda and returns an 
instance of Lazy<T> which can serve as a delegate 
for implementing a lazy property: the first call to get()
executes the lambda passed to lazy() and remembers the result,
subsequent calls to get() simply return the remembered result.

lambdaがまだまだ理解できていないですが、雰囲気的に
- 初期化時に利用します。
- 一度getしたときの結果を返し、且つ結果を記憶します。
- 再度getした時は、最初にgetしたときの結果を返します。
- Synchronizedで遅延実行されます

と言った感じでしょうか。。

移譲プロパティは他にもあるようです。
もう少し勉強する必要がありそうですが、ひとまずby lazyをつかった場合はどんなもんなんやっていうのがわかったのでよしとします。

ツッコミがあったり、なにかいい例文などあれば教えてください

3
7
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
3
7