条件判断 if文
今回は条件判断 ifを試す。
目次
if文
ifについてのリファレンスマニュアルは次のとおり。
Rubyリファレンスマニュアル
制御構造 if
https://docs.ruby-lang.org/ja/latest/doc/spec=2fcontrol.html
if文の書式は次のとおり。
if 条件 then 条件が成立したときだけ行う動作 end
(thenは省略できる)
今回は条件に「等しい」を使う。
等しい、の演算子は==
(イコールをつづけて2つ)。
試しにテストコードを書いてみる。
test.rb
crew = "N会社" if crew == "N会社" puts crew end if crew == "M大学" puts crew end
実行結果
N会社
コードの説明。
- N会社を変数crewに代入する
- if文の条件判断
- もしcrewがN会社だったら
- crewをターミナル/PowerShellに出力する
- 2番めの条件判断
- もしcrewがM大学だったら
- crewをターミナル/PowerShellに出力する
結果は最初のif文のみ実行されている。
2番めのif文は条件が成立していないので無視されて何もおきない(nilという値が返ってくる)。
if文では条件が成立しない場合はエラーにならず無視される(nilが返ってくる)。
else節
今度はelse節を使って条件を分岐させる。
else
はこれまでにつけられた条件以外すべて、という意味になる。
コードを書く。
test.rb
crew = "N会社" if crew == "M大学" puts crew else puts "M大学ではありません。#{crew}です。" end
実行結果
M大学ではありません。N会社です。
コードの説明。
- N会社を変数crewに代入する
- if文で条件をつける
- crewがM大学ならputsメソッドを実行
- else節を設定する
- else節以前の条件が成立しない場合に実行させたい処理を書く
実行結果はelse節の指示が実行されている。
if分の条件、変数crewとM大学が等しい、でないときは何も実行されず先に進む。
else節までに何も実行されないとelse節に書かれたコードが実行される。
eachメソッドとif文を組み合わせる
配列の要素を出力する際に条件判断if文を使う。
rubylesson.rb
#日時や種目をheaderとして配列に格納する #着順毎にレース結果を配列に格納する。 #更に各配列を1つの配列に格納して変数race_resultsに代入する race_results = [ ["header","10/29 14:20","男子舵手つきフォア","決勝"], [1,"M大学","06:39.42"], [2,"K大学","06:40.54"], [3,"N大学","06:47.69"], [4,"T大学","06:50.95"] ] #eachメソッドでrace_resultsから要素(配列)を1件ずつ取り出す race_results.each do |result| if result[0] == "header" #もし左端の要素がheaderなら puts "#{result[1]}\n#{result[2]} #{result[3]}" #headerの出力 else puts "#{result[0]} #{result[1]} #{result[2]}" #headerでない場合の出力 end end
実行結果
10/29 14:20 男子舵手つきフォア 決勝 1 M大学 06:39.42 2 K大学 06:40.54 3 N大学 06:47.69 4 T大学 06:50.95
コードの説明。
- 変数race_resultsに5つの要素(配列)を格納する
- eachメソッドでrace_resultsの要素を1つずつ取り出す
- if文で左端にheaderがある場合の出力書式を指示する
- 1件目の要素(配列)は左端にheaderが格納されているので、header用の書式で出力される
- else節でheaderがないときの出力書式を指示する
- 2件目以降はheaderがないので、else節に書かれた書式で出力される
header用の書式には改行記号の\n
を使った。
eachメソッドのブロックとif文を入れ子(ネスト)にした。
if文を使うことで種類の違いに合わせて出力の書式を変えることに成功。
今回の動作確認環境
Ruby 2.4.3p205
macOS 10.13.3
ターミナル
Windows10
Windows PowerShell