重複の可能性:
lazy val の (隠された) コストは? (スカラ)
Scala では遅延値の定義が可能
lazy val maybeUnusedValue = someCostlyInitialization
wheresomeCostlyInitialization
は の最初の使用時にのみ評価されますmaybeUnusedValue
。つまり、評価されるのは多くても 1 回であり、maybeUnusedValue
一度も使用されていない場合は、まったく評価されません。
これはスレッドセーフですか?これのパフォーマンスへの影響は何ですか?これをスレッドセーフにする場合は、ある種の同期化を使用するか、何らかの方法で Java volatile を使用する必要があります。残念ながら、Scala 言語仕様はこれについて何も述べていません。