##はじめに
rubyを書いてると「||」という記号をよく見かけます。
条件式の時に使う、or文としか理解してませんでしたが、実は様々なところで活躍します。
今回はそんな||演算子の使い方をパターン別に説明していきたいと思います。
##条件式で使う時の||
皆さんがよくご存知なのはif文の中で使うときではないでしょうか。
左から式を順に評価し、真になった場合、実行されます。
name = "hanako"
if name == "taro" || name == "hanako" || name == "jiro"
puts "hoge"
else
puts "fuga"
end
=>
"hoge"
##連続した式で使う||
||を使って値を代入するときは、以下のように使うことがあります。
主に||演算子は、左から右へ順に式を評価し、真だったものを返します。
hoge = nil || false || 1 || 2
#hoge = (偽) || (偽) || (真) || (真)
hoge
=> 1
ここでは、偽であるnil,falseを飛ばし、真である1を返しました。
しかし、1より右にある2は代入されません。
なぜなら、左から順に評価され、一番最初に真だったものを返すからです。
##代入演算としての||
||=
という記号を見たことがある人はいるのではないでしょうか。
使い方としては、左辺が存在しない(偽)の場合、右辺の値が代入されるイメージです。
hoge ||= 1
hoge
=> 1
hogeという変数は存在しないため、1が代入されます。
ではもう一度別の値を代入してみましょう。
hoge ||= 2
hoge
=> 1
今度は、hogeという1が入った変数が存在する(真)ため、2が代入されません。
2を代入するためには、hogeをnilにする必要があります。(rubyは、falseとnil以外は真を返す)
hoge = nil
hoge ||= 2
hoge
=> 2
ここでは、左辺のhogeが存在しない(偽である)ため、右辺の2が代入されました。
やっていることとしては以下の文と同じです。
##以下の2つの文は同じ
hoge = hoge || 1
hoge ||= 1
皆さんもよく知っている自己代入と一緒ですね。
num = num + 1
num += 1
##まとめ
・||演算子は、左から順に評価し、一番最初に真になったものを返す。
とりあえずこれを押さえておけばなんとか読めると思います。