積々RUNMIZZO

日々積み重ね

nilガードについてmemo✍


左辺がnilの場合は値が代入され、既に値が入っている場合値の代入は行われない。

pry(main)> a = nil
=> nil
pry(main)> a ||= "OK"
=> "OK"

pry(main)> b = 1
=> 1
pry(main)> b ||= "OK"
=> 1


実は左辺がfalseになる場合のみ値の代入が行われ、左辺がtrueになる場合は値の代入が行われない。

pry(main)> a = ""
=> ""
pry(main)> a ||= "OK"
=> ""

pry(main)> b = 0
=> 0
pry(main)> b ||= "OK"
=> 0

pry(main)> c = []
=> []
pry(main)> c ||= "OK"
=> []

pry(main)> d = {}
=> {}
pry(main)> d ||= "OK"
=> {}

pry(main)> e = false
=> false
pry(main)> e ||= "OK"
=> "OK"


参考

Rubyのnilガードについて調べてみた - Qiita