LoginSignup
0
0

More than 1 year has passed since last update.

nilガードの使い方注意点

Posted at

nilガードをする時はよくこう書きます。
これは@cached_valueがあれば@cached_valueに値を格納し、なければhogeを格納するという式です。
しかし、hogeがnil/falseの場合は、それ以外の値を返すまでの間、式は繰り返し評価され続けるらしい。

@cached_value ||= hoge

もしnil/falseを評価結果としてキャッシュしたい場合は、以下のように書く必要があります。
このように書くことで、@cached_valueがnil/falseの場合でも@cached_valueに格納されます。

if defined?(@cached_value) 
  @cached_value
else
  @cached_value = hoge
end
0
0
1

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