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 )
は実行されないが、 a
が nil なら右の式が実行されるというもの。
なお上の式は自己代入( a += 1
のような書き方 ) をすると下記のように書ける
a ||= 20