製作著作 © 2005-2013 Karl Fogel, 高木正弘, Yoshinari Takaoka(a.k.a mumumu), under a CreativeCommons Attribution-ShareAlike (表示・継承) license (3.0, 2.1-jp)
「val」で不変の値を定義する際に、「lazy」修飾子をつけると、値が遅延評価される(最初にアクセスされたときにのみ評価され、定義時には評価されない)ようになります。 「lazy」は「val」にのみ設定できます。「var」や「def」に設定することはできません。 値の評価は「最初にアクセスされたときに1回のみ」行なわれます。 複数回呼び出した場合、2回目以降は値の評価は行なわれず、初回の評価結果が返されます。 ここが「def」と違うところですね。「def」でも値は遅延評価になりますが、値の評価は参照時に毎回行なわれます。 // lazyをつけると、値の評価が初回アクセス時にのみ行われるようになる。 lazy val a = { println("eval a"); "a" } // var や def には適用できない。 // 以下はコンパイルエラー // lazy var b = { "
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く