if文はプログラムの流れを条件によって分岐させる最も基本的な制御構文です。「もし〜ならば」という条件判断をプログラムで表現でき、条件に応じて異なる処理を実行できます。Rubyのif文は直感的な構文で書けるため、初心者にも理解しやすいのが特徴です。
基本的な使い方
if文の基本構文
if文は条件が真(true)のときにブロック内の処理を実行します。
Ruby
age = 20
if age >= 18
puts '成人です'
end実行結果
成人ですifの後に条件式を書き、endまでの間に実行したい処理を記述します。条件式が真であればブロック内の処理が実行され、偽であればスキップされます。Rubyでは括弧は省略可能です。
if-else文
elseを使うと、条件が偽のときに実行する処理を指定できます。
Ruby
age = 15
if age >= 18
puts '成人です'
else
puts '未成年です'
end実行結果
未成年ですif-elsif-else文
3つ以上の条件分岐が必要な場合はelsifを使います。注意点として、Rubyではelseifやelse ifではなくelsifです。
Ruby
score = 75
if score >= 90
puts '評価: A(優秀)'
elsif score >= 80
puts '評価: B(良好)'
elsif score >= 70
puts '評価: C(普通)'
elsif score >= 60
puts '評価: D(可)'
else
puts '評価: F(不可)'
end実行結果
評価: C(普通)elsifは上から順に評価され、最初に真になった条件のブロックだけが実行されます。scoreが75の場合、score >= 90とscore >= 80は偽なのでスキップされ、score >= 70が真なので「評価: C」が出力されます。
比較演算子と論理演算子
if文の条件式では比較演算子と論理演算子を組み合わせて使います。
Ruby
# 比較演算子
puts 10 == 10 # 等しい
puts 10 != 5 # 等しくない
puts 10 > 5 # より大きい
puts 10 < 20 # より小さい
puts 10 >= 10 # 以上
puts 10 <= 20 # 以下実行結果
true
true
true
true
true
trueRuby
# 論理演算子を使った複合条件
age = 25
has_license = true
if age >= 18 && has_license
puts '運転できます'
end
# ||(または)
day = '土曜日'
if day == '土曜日' || day == '日曜日'
puts '休日です'
end
# !(否定)
is_holiday = false
if !is_holiday
puts '仕事の日です'
end実行結果
運転できます
休日です
仕事の日です実践的な使い方
Ruby
# 料金計算システム
age = 12
is_member = true
if age < 6
price = 0
category = '幼児(無料)'
elsif age < 13
price = 500
category = '子供'
elsif age < 65
price = 1000
category = '大人'
else
price = 700
category = 'シニア'
end
# 会員割引
if is_member
price = (price * 0.8).to_i
puts "会員割引適用"
end
puts "区分: #{category}"
puts "料金: #{price}円"実行結果
会員割引適用
区分: 子供
料金: 400円Rubyにおける真偽値
Rubyではfalseとnilだけが偽として扱われ、それ以外はすべて真です。0や空文字列''も真として扱われるので、他の言語から来た方は注意してください。
elsifのスペルに注意
Rubyではelsifと書きます。elseif(PHP)やelse if(JavaScript)ではないので注意してください。スペルミスするとエラーになります。
まとめ
if文で条件が真のときに処理を実行するelseで条件が偽のときの処理を指定するelsifで3つ以上の条件分岐を記述する(スペルに注意)&&(かつ)、||(または)、!(否定)で複合条件を作る- Rubyでは
falseとnilだけが偽、それ以外はすべて真