コード日進月歩

しんくうの技術的な小話、メモ、つれづれ、など

Rubyで初期値設定を行うときは || を使って nil 判定をする自己代入式を使うと便利

x ||= 10 みたいな形でORの仕組みを使って初回だけ値を入れるやり方を考える

環境

$ ruby -v
ruby 2.3.7p456 (2018-03-28 revision 63024) [universal.x86_64-darwin18]

考え方

たとえば、インスタンス変数に 「すでに a に 値が入っていれば値をそのまま使い、なければ初期値として 20 入れる」という場合以下のような書き方をする

a || ( a = 20 )

これは a に値が入っていれば || の左の式で true となるので 右の式の ( a = 20 ) は実行されないが、 anil なら右の式が実行されるというもの。

なお上の式は自己代入( a += 1 のような書き方 ) をすると下記のように書ける

a ||= 20

参考リンク