【Ruby】条件判断と比較演算子

ABOUTこの記事をかいた人

気になること&知らないことをひたすらググることを得意としています。最近は「Ruby」というプログラム言語が特に気になってきました。このブログでは最近気になったことを中心に記事を書いていきます。記事には間違った情報を書かないように細心の注意を払っていますが、もし誤りがあった場合はコメントやお問い合わせフォームからご指摘いただければ幸いです。

条件によって処理を分けるためには成り立っていれば「true」成り立っていなければ「false」となるような式をまず用意します。ちなみにそれぞれ「トゥルー」、「フォルス 」と読みます。

今回は比較演算子を簡単に説明していきます。

1、2行目にある「==」は右の値と左の値が同一であるかを比較します。代入を意味する「=」とは違いますので混同しないように注意しましょう。右と左の値が同じであれば「true」異なっていれば「false」を返します。

3以降は不等号となり、大きいか小さいかで「true」「false」を判断しています。5、6行目はそれぞれ「≧」「≦」と同じ意味になります。

条件判断の構文

「true」「false」などの結果を条件判断文によって処理を分けることができます。Rubyでは3つの条件判断文があります。

  • if(イフ)
  • unless(アンレス)
  • case(ケース)

if文

ifは良く使われる条件判断文で1番基本的なものとなります。式の結果true(真)だった場合は実行され、false(偽)の場合は処理が行われません。書き方は下のようになります。

条件には「true」「false」など判断できるような式を入れて、その結果で実行内容が変わります。具体的には下のように条件をいれていきます。

oneは1です

この場合oneに1を代入していますので、「==」で比較された結果「true」となります。すると実行内容「then」~「end」に記述されているコードの処理が行われます。今回の場合はputsメソッドで、「”oneは1です”」という文字列を出力しています。もし、oneに2を代入したらどうなるでしょうか。実行結果は下のようになります。

(なし)

この場合は、oneが2なので比較した結果、「false」を返してきます。すると実行内容はスルーされて何も行われずスクリプトが終了します。ちなみに「then」は省略可能です。

条件が成り立たない方の処理

条件が成り立った場合と、成り立たなかった場合の処理の両方を書きたい場合は下記のように「else」を入れます。そうすることで条件が成り立たなかった場合の処理も行うことができます。また、elseは「エルス」と読みます。

oneは1ではありません

複数条件を分けたい場合

「elsif」を入れてあげると複数の条件で処理を分けることができます。elsifは「エルスイフ」と読みます。

numは2です

numは2なので2行目の条件「num == 1」では「false」となり処理はスルーされます。そして4行目の条件「num == 2」が「true」となり処理が実行されます。4行目が「true」となったため6行目の「else」の処理は行われず、「numは2です」のみ表示されます。

また、このように比較を行うものが1つしかない場合は「case文」でも同じような処理を行うことができ、スッキリとして読みやすい文になります。

unless文

if文ではtrue(真)だった場合に処理が実行されましたが、unless文ではfalse(偽)だった場合に実行されることになります。書き方は下のような感じです。

基本的な書き方はif文と同じです。まずは簡単なスクリプトをみていきましょう。

oneは1ではありません

この場合ではoneに2が代入されていますので、「one == 1」の判定でfalse(偽)となります。unless文は条件がfalse(偽)となるときに実行されるので「”oneは1ではありません”」の文字列が表示されることとなります。oneに1を代入した場合は下記のように何も行われません。

(なし)

この場合、「one == 1」での比較結果がtrue(真)となったため処理は行われません。またif文と同じように「then」は省略することもできます。false(偽)とならなかった場合に実行したい内容は「else」の後に書きます。

numは1です

上記のような処理は実際のところif文でも行うことが可能です。また、unless文を使った結果、2重否定となる場合はどのように処理されるのか読みづらくなることもあるので注意が必要です。

case文

比較したいオブジェクト(変数)が1つだけの場合はcase文を使うことができます。書き方は下のようになります。

case文でも「then」を省略することができ、「when」では値をいくつでも増やすことができます。また、先ほど説明した複数条件が指定されている「if文」は下のようにも書くこともできます。

numは2です

実行結果は先程の「if文」と同じですが、値が一致するかだけでなく、正規表現の場合はマッチしたかなど判定が少しだけ緩くなります。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

ABOUTこの記事をかいた人

気になること&知らないことをひたすらググることを得意としています。最近は「Ruby」というプログラム言語が特に気になってきました。このブログでは最近気になったことを中心に記事を書いていきます。記事には間違った情報を書かないように細心の注意を払っていますが、もし誤りがあった場合はコメントやお問い合わせフォームからご指摘いただければ幸いです。