基本的な構文を覚えよう (2/4)
作成:2012-08-13 10:13
更新:2012-08-13 10:13
更新:2012-08-13 10:13
■caseによる分岐
ifの他にも条件分岐の構文はあります。それは「case」というものです。このcaseは、あらかじめ指定しておいた値をチェックし、その値がいくつかによって実行する処理を変更することができます。これは以下のような形で記述します。
caseの後に、変数など値が得られるものを指定します。Rubyを実行した時、このcaseのところまでくると、その値をチェックし、その後の文からその値が指定されているwhenを探しだし、そこにある処理を実行します。
もしwhenが見つからなければ、elseにある処理を実行します。ただし、このelse部分はオプションなので用意しなくともかまいません。その場合は、値が見つからなければ何もせずに次に進みます。
caseで指定する値は、どんなものでもかまいません。またwhenに用意する値も同じです。数字でもテキストでも真偽値でも使うことができます。実は、そうした単純な数字以外も使うことができるのがcase文の面白いところです。
(正確には範囲指定というより0~5の間の数列を示すものなのですが……とりあえずここではそう考えておいてOKです)
注意しておきたいのは、その値が当てはまるwhenが複数あった場合の挙動です。これは「一番最初にあるwhenが実行される」のです。たとえば、
下に利用例を挙げておきます。変数aに設定した月数から季節を表示します。aの数字をいろいろと変更して動作を試してみて下さい。
case チェックする値
when 値1
……値1のときの処理……
when 値2
……値2のときの処理……
……必要なだけwhenを用意……
else
……その他のときの処理……
end
caseの後に、変数など値が得られるものを指定します。Rubyを実行した時、このcaseのところまでくると、その値をチェックし、その後の文からその値が指定されているwhenを探しだし、そこにある処理を実行します。
もしwhenが見つからなければ、elseにある処理を実行します。ただし、このelse部分はオプションなので用意しなくともかまいません。その場合は、値が見つからなければ何もせずに次に進みます。
caseで指定する値は、どんなものでもかまいません。またwhenに用意する値も同じです。数字でもテキストでも真偽値でも使うことができます。実は、そうした単純な数字以外も使うことができるのがcase文の面白いところです。
when 0..5例えば、こんな具合に書くと、0~5の数字であればこのwhenを実行するようになります。このように「A..B」というように書くと、A~Bの範囲を指定することができます。非常に便利な書き方ですね。
(正確には範囲指定というより0~5の間の数列を示すものなのですが……とりあえずここではそう考えておいてOKです)
注意しておきたいのは、その値が当てはまるwhenが複数あった場合の挙動です。これは「一番最初にあるwhenが実行される」のです。たとえば、
a = 5こんな具合に実行すると、when 0..5とwhen 3..7の両方が当てはまりますが、実際に実行されるのはwhen 0..5の文だけです。最初に見つけたものを実行し、終わったら構文を抜けて次に進んでしまうのですね。
case a
when 0..5
……略……
when 3..7
……略……
end
下に利用例を挙げておきます。変数aに設定した月数から季節を表示します。aの数字をいろいろと変更して動作を試してみて下さい。
(by. SYODA-Tuyano.)
※プログラムリストが表示されない場合
AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。
●プログラム・リスト●
a = 8 case a when 1..2 puts('冬だよ') when 3..5 puts('春です') when 6..8 puts('夏だぁ') when 9..11 puts('秋なのだ') when 12 puts('今年も終わり') else puts('なんか違う値だよ') end
※関連コンテンツ