タグ

Rubyと遅延初期化に関するkiyo_hikoのブックマーク (1)

  • nil や false でも遅延初期化したい! - Qiita

    今 リファクタリング:Rubyエディション の輪読会をやっているんですが、 日こので知った小ネタをメモしておきます。 Ruby でインスタンス変数を遅延初期化するときには、 ||= というイディオムをよく使いますよね。 ここでの遅延初期化とは initialize (コンストラクタ) で事前にインスタンス変数を初期化しておくのではなく、 インスタンス変数に初めてアクセスする際に初期化することです。 class SoulGem def clearness @clearness ||= 100 end def get_polluted @clearness = clearness - 1 end end 初回のアクセスでインスタンス変数に値が代入され、以降のアクセスでは既に代入された値が返されます。 ただし代入された値が nil や false (すなわち偽) の場合は、毎回右辺の値が代入

    nil や false でも遅延初期化したい! - Qiita
    kiyo_hiko
    kiyo_hiko 2015/09/13
    Object#instance_variable_defined?
  • 1