if・unless

n = 75

if n >= 90
  puts = "Great"
elsif n >= 70
  puts "Good"
else
  puts "Soso"
end
  • elsif が続くプログラムは読みづらくなる
    • && || case などを使った方法も検討する

if の条件が満たされないケース

  1. false を返すとき
  2. nil を返すとき

nil何もない ことを表すオブジェクト

if を使ったコメントアウト

  • プログラムは通常の状態では true を返すことを利用した if を使ったコメントアウト
puts "Hello"

if false
  ここはコメント
end

puts "Hello"
# "Hello"
# "Hello"

複数の条件

|| または (OR)

  • いずれか(もしくは全て)の条件を満たすと true を返す
  • 3 つ以上の条件も並列可
if 条件1 || 条件2
  処理
end

&& かつ (AND)

  • 全ての条件を満たすと true を返す
  • 3 つ以上の条件も並列可
if 条件1 && 条件2
  処理
end

比較

puts 1 > 2 # false
puts 1 < 2 # true

n = 10
puts n >= 10 # true

puts 2 == 1 + 1 # true
puts 2 != 1 + 1 # false

後置 if (if 修飾子)

n = 9
if n >= 7
  puts "OK"
end

↑ は ↓ と等価

n = 9
puts "OK" if n >= 7

unless

  • 等しくない場合に true を返す
n = 9

if n != 5
  puts "not 5"
end

unless n == 5
  puts "not 5"
end

puts "not 5" if n != 5
puts "not 5" unless n == 5

比較演算子の省略

x = true
y = false

if x
  p "true"
end

if !y
  p "true"
end

unless !x
  p "true"
end

unless y
  p "true"
end

末尾に ? がつくメソッド

n = 5
puts n.even? # false
puts n.odd? # true
n = 4
if n.odd?
  puts "n is odd"
elsif n.even?
  puts "n is even"
end

if の戻り値は変数に代入できる

def greet(time)
  msg = if time < 12
    "good morning"
  elsif time < 17
    "hello"
  else
    "good evening"
  end
  msg += "!"
end

p greet(10) # "good morning!"
p greet(18) # "good evening!"
p greet(20) # "good evening!"