Ruby 三項演算子のシンプルな例
Rubyでよく見かけるこんな記述。
n == 1 ? hoge : 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メソッドが実行されている。