LoginSignup
105
80

More than 5 years have passed since last update.

【Ruby】使いこなせると便利。||演算子のいろんな使い方

Last updated at Posted at 2018-07-03

はじめに

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

まとめ

・||演算子は、左から順に評価し、一番最初に真になったものを返す。

とりあえずこれを押さえておけばなんとか読めると思います。

105
80
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
105
80