Just do IT

思うは招く

Ruby 三項演算子のシンプルな例

Ruby 三項演算子のシンプルな例

Rubyでよく見かけるこんな記述。

n == 1 ? hoge : foo

これは三項演算子(さんこうえんざんし)と呼び、次のような動きをする。

  • nに1が代入されているか確かめる
  • もし1が代入されていたら、hogeメソッドを実行する
  • 1じゃなかったり、nilが代入されていたら、fooメソッドを実行する

if文を省略したもので、次の文と同じ意味になる。

if n == 1
  hoge
else
  foo
end

試しにやってみる

# nに1を代入
n = 1

# hogeメソッド作成
def hoge
  p "1だよ" 
end

# fooメソッド作成
def foo
  p "2だよ"
end

nには1が代入されているので、hogeメソッドが実行し、「1だよ」が表示される。

n == 1 ? hoge : foo
"1だよ"

これがもし違う値がnに代入されていたら?

# 2を入れてみる
n = 2

# 三項演算子を実行
n == 1 ? hoge : foo
"2だよ"

fooメソッドが実行され、「2だよ」と表示される。

nにnilを入れてみたら

n = nil
n == 1 ? hoge : foo
"2だよ"

nは1ではないため、右側のfooメソッドが実行されている。

第9章 発展的なログイン機構 - Railsチュートリアル