「初めてのRuby」を読むの続き
6章 変数と式
6.3 制御式
から
■6.3 制御式
・制御文と呼べないのは、値を返すから
■6.3.1 if式
・条件が満たされたときだけ、被制御式(then節)を実行する
→thenは条件と被制御式があいまいにならない限り省略可能
→偽の場合の処理も書ける→elseに書く
・elsif
条件が成立しない場合の条件判断を重ねて書く
→elsifであり、else ifでもelseifでもelifでも”ない!”
・if修飾子
do_something if condition
→改行、then,endが不要
→条件と制御される式の順序が逆になっている点に注意
・unless
→if notとわずかに表記が違うだけ
→elseやelsifもある(elsunlessはない)
■6.3.2 case式
・値による多岐分岐を提供
case value
when 1 then
do_something
when 2,3 then
do_something
else
do_something
end
・まずvalueを評価、それとwhenが一致するか比較、
マッチしたらthen以下を実行し、最後の式が値
どこにもマッチしなかったら、else句が実行
・範囲分岐
when 1..9 then
と書いた場合、1..9のRangeオブジェクトと一致するという意味
でなく、その範囲に値があるということ
・正規表現による分岐
正規表現を利用した分岐もよく行われる
・case比較演算子
=== 値が範囲のレンジ内にあるときに、trueを返す
■6.3.3 case式その2
caseのあとのvalueを書かず、whenに条件を書くことも出来る
■6.3.4 While式
・条件が成立している間だけ、被制御部を繰り返し実行する
while condition do
do_something
end
doは省略可能
・後置while
begin
do_something
end while condition
と書くと、最初の一回は評価せずに実行する
・while修飾子
もかける。1行で
・until
ifに対してunlessがあるように、whileに対してもuntilがある
■6.3.5 for文
・配列などの要素に対して、被制御部を繰り返す
・ただし、eachイテレーターとたいして違わない
→内部でeachイテレーターを呼んでいる
■6.3.6 イテレーター
・loop
無限ループする
脱出式がないと、困ったことに!
・times
Integerオブジェクトがあらわす回数だけブロック実行
カウンタを利用することも可能
・upto
カウントアップする
・downto
カウントダウンする
■6.3.7 脱出
・break
現在の繰り返しから脱出
入れ子の場合、最も内側から脱出
breakに引数をつけられる
→脱出したときの繰り返し構造の値となる
・next
残りの部分をスキップして、次の繰り返しへ
・redo
今の繰り返しをもう一度はじめからやり直す。