Rubyの条件分岐。if、条件演算子(三項演算子)、unless、case
Rubyでの真偽値
Ruby では false または nil だけが偽で、それ以外は 0 や空文字列も含め全て真です。
偽 | 真 |
---|---|
false, nil | それ以外( true,0 ,空文字列など) |
if
条件式に一致した場合に指定の処理を行う。
構文
if 式 [then]
式 ...
[elsif 式 [then]
式 ... ]
...
[else
式 ... ]
end
[ ]は省略可能な部分です。
els e ifではなくelsif(eがない)なので、他言語経験者は注意。
最後のels e はeが必要。
例文
score = 90
if score == 100
puts 'S'
elsif score >= 90
puts 'A'
elsif score >= 80
puts 'B'
else
puts 'C'
end
# thenを使っている例
if score == 100 then
puts 'S'
end
条件演算子(三項演算子)
判定条件や処理が短い場合に威力を発揮!見やすくなる。
構文
式1 ? 式2 : 式3
# 条件 ? ◯の場合 : ×の場合
例文
checked = true
puts checked ? "済" : "未"
# 以下の文と同じ意味。
# puts (if checked then "済" else "未" end)
unless
if と反対。もし〜でなければ。
unlessで書ける文はifでも書けるのでお好みで。
二重否定になるとわかりにくくなるので注意。
Rubyにおけるunlessとコードの読みやすさについて|TechRacho(テックラッチョ)〜エンジニアの「?」を「!」に〜|BPS株式会社
構文
elsif はない。
elseは省略可能。
unless 式 [then]
式 ...
[else
式 ... ]
end
例文
unless baby?
# 条件式が偽(false)のの場合
puts "ご飯を食べる"
else
puts "ミルクを飲む"
end
case
ifとの使い分けの目安として、caseのほうは並列的な条件の場合により適していると思いますが、どうでしょうか。
swich文と同じだと思ってたんですが厳密には違うようです…
Rubyのcaseを〇〇(言語名)のswitch文だと思っている人たちにぼくから一言ガツンと申し上げたい
構文
case [式]
[when 式 [, 式] ...[, `*' 式] [then]
式..]..
[when `*' 式 [then]
式..]..
[else
式..]
end
例文
os = "macOS"
case os
when "Windows"
# 処理
when "macOS", "Unix"
# 同じ処理をする条件をまとめて記述できる
when "Linux"
# 処理
else
# 処理
end
参考
Author And Source
この問題について(Rubyの条件分岐。if、条件演算子(三項演算子)、unless、case), 我々は、より多くの情報をここで見つけました https://qiita.com/mocotan/items/4f3fbad8161edae63eff著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .