vol.2 ‐ 『条件文』

ifとunless文

Rubyの条件文にしても簡単に表現できる工夫が色々と込められていますので見て行きましょう。

条件に合えば、文字列を標準出力に出力するプログラムの例です。他のプログラム言語でも通用する一般的な書き方をするとリスト1のようになると思います。でも、Rubyのシンプルな書き方をするとリスト2のようになります。

リスト1

is_print = true
if is_print == true then
  puts “ABC”
end

リスト2

is_print = true
puts “ABC” if is_print
プログラム事例

では、もう少し複雑な例を見てみましょう。ファイルを読み込んでコメント行以外は表示するというプログラムとします。リスト3はC言語などののプログラミング言語でも同じロジックで記述できると思います。ファイルを一行ずつ読み込んで先頭行にコメントが無ければ表示するというロジックになります。
リスト4は2行目でファイルオープン、全部読み込み、改行区切りとして配列を返すまでを行なっています。その後3行目で、条件に合えば出力するといった操作を行なっています。更にリスト5では、selectを利用することにより配列の条件を記載して、条件にあったものだけを返すという処理をしていますので、たった2行で処理できています。リスト5まで行くと美しさよりもわかりにくさのほうが先立つと思いますので通常はリスト4ぐらいまでの記述で止めておいたほうがいいかもしれません。(注:リスト5のselectメソッド内では、unlessは利用できませんので、否定演算子!を利用しています。)

リスト3

filename = ARGV[0]
file = open(filename)
while (line = file.gets)
  if !(line =~ /^#/) then
    print line
  end
end

リスト4

filename = ARGV[0]
open(filename).read.split(/\n/).each
  puts line unless line =~ /^#/
end

リスト5

filename = ARGV[0]
puts open(filename).read.split(/\n/).select {|line| !(line =~ /^#/)}
その他の注意点

また、Rubyの条件文で確認しておくことが2つあります。
1. Ruby では false または nil だけが偽で、それ以外は 0 や空文 字列も含め全て真です。
2. Ruby では if を繋げるのは elsif であり、else if (C のように)でも elif(sh のように)でもないことに注意する必要があります。
   リスト6を参考にしてください。

リスト6

if num == 1 then
  puts ”the 1st”
elsif num == 2 then
  puts “the 2nd”
else
  puts “Over 3rd”
end
Rails初級者に朗報!全額補助で中級にステップアップ!

志茂吉建氏

志茂 吉建 氏

1996年にシーティーシー・テクノロジー株式会社に入社。プラットフォーム、ストレージ、ミドルウェア関連のサポートやプロフェッショナルサービスに従事。
2007年下半期から、VMware仮想化関連のサービス開発やコンサルティングなどを担当。
2011年に仮想化関連書籍、『VMware vSphereエンタープライズ・インテグレーション』などを共同執筆。
2012月8月から仮想化/OSSコンサルタントとして独立。
Amazon著者ページ : http://www.amazon.co.jp/-/e/B008MY8NAK

※本サイトに掲載されているテクニカル・コラムは、掲載時点で公開されている情報をもとに執筆者の視点で書かれたものです。弊社及び執筆者は本テクニカル・コラムの内容について一切保証をいたしません。また、技術的な問い合わせについても対応いたしかねますので予めご了承ください。

お仕事のご紹介には、まずヒューマンリソシアへの登録が必要です。
ヒューマンリソシア人材派遣サイトの便利な機能 ・お気に入りの派遣求人のブックマーク ・登録会への予約 ・有給休暇の管理 ・WEB給与明細の確認 ・お気に入りの情報をメール受信
登録会の入力手続きをあらかじめおこなえます。

ヒューマンリソシア派遣サービスに 登録する 無料

ページトップへ戻る