Part6:条件分岐

ヨハネ「いよいよ佳境ね。構造化プログラミングの3要素たる逐次、判断、繰り返しの1つ、判断にあたる条件分岐を見てみるわよ」
マル「Rubyで佳境っていったらクラスとかだと思うずら・・・」


if

ヨハネ「まずは例を見てみなさい。それが一番早いわ」

マル

ヨハネ「nの値によって分岐してるわ。nが1ならルビィ、2ならマル、3ならヨハネ、それ以外なら千歌よ」
マル「えーと、上から順番に見ていって、2だからマルを出力して、おしまい。どれか1つが選ばれるんだな」
ルビィ「==っていうのは?」
ヨハネ「それは比較演算子の1つよ。左辺と右辺が等しければ真、trueを返すの。真になればそのifの中身が実行されるのよ」
マル「真?true?」
ヨハネ「簡単なブール代数よ。Rubyにはtruefalseという擬似変数があって、trueが真、falseが偽よ。これはこの先も出てくるはずだから覚えておくことね」
マル「・・・まあとにかく、ifとかelsifとかの式が真になったら中身が実行されるってことだな」
ヨハネ「比較演算子はいろいろあるからまとめておくわね」

演算子 意味
== 等しい
< より小さい
> より大きい
<= 以下
>= 以上
!= 等しくない

ヨハネ「この条件は複数組み合わせることもできるわ。&&||!があればね」

ヨハネ「これは2つの条件の両方を満たした場合、という分岐ね」
マル「何のランクずら・・・」
ルビィ「えっと、ルビィはhが154で、bが7・・・はわわ、なに言わせるのっ!?」
ヨハネ「ちっ、惜しかったわね」

ヨハネ「&&は論理積で2つの条件が両方真なら真、||は論理和で2つの条件のどちらかが真なら真。!は否定で条件が偽なら真よ」
マル「数学ちゃんとやってれば大丈夫な話ずら」


unless

ヨハネ「このifの動きを完全に逆にしたのがunlessよ」

ヨハネ「条件が偽になったら、この場合hが160以下だったら中の処理が実行されるわ」
マル「なんかいまいち直感的じゃないずら・・・」


case

ヨハネ「caseを使った別の書き方もあるわ。最初に見せた例はcaseを使うと

ヨハネ「こう書き直せるのよ」
マル「nが1だったら、2だったら、3だったら・・・ifと同じずら」
ヨハネ「範囲じゃなくて値に基づいた分岐をしたい場合にはこれで書いた方がすっきりすることが多いわね」


式修飾子

ヨハネ「ifunlessについてはまだあるわよ」

ヨハネ「こういう書き方をすると、nが1の場合にだけ代入が行われるわ。これが式修飾子」
ルビィ「ifの前の式に条件を付ける感じ?」
ヨハネ「そうね。この書き方、Rubyだとよく見かけるわ。unlessにしても同じね。条件が成り立たない場合だけ代入が行われる」
マル「なんか、いっぱいあるなあ」


条件演算子

ヨハネ「さらにっ!三項演算子とか条件演算子とかいって、ifelseを1行で書くような構文もあるわ」

ヨハネ「これはif/elseで書くと」

ヨハネ「こういうことよ」
ルビィ「短く書けるのはいいけど、ちょっと読みにくいね」
ヨハネ「これを駆使すれば複雑な黒魔術を組み上げられるのよっ!」
マル「そんなコードはマルがお祓いしてリファクタリングするからな」


マル「結構たくさんあったな・・・」
ヨハネ「同じことを実現するにもいろんな書き方ができるのがRubyの特徴みたいね」
ルビィ「慣れるまではif/elsif/elseを覚えればいいのかな。これ使えば全部書けるもんね」


LINEで送る
Pocket


返信を残す

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