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