[#139] ruby 0.97 available — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろ@トヨタケーラムです.
1 message
1996/02/13
[#145] Re: The black face. — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろ@トヨタケーラムです.
1 message
1996/02/14
[#182] Re: DOS port — Kazuhiko Iwama <iwama@...>
■ [ruby-list:178] Re: DOS port
1 message
1996/02/20
[#184] Re: DOS port — Kazuhiko Iwama <iwama@...>
■ [ruby-list:181] Re: DOS port
1 message
1996/02/20
[#185] Re: DOS port — Kazuhiko Iwama <iwama@...>
■ [ruby-list:183] Re: DOS port
1 message
1996/02/20
[#196] Re: DOS port — Kazuhiko Iwama <iwama@...>
■ [ruby-list:183] Re: DOS port
1 message
1996/02/26
[#198] Re: DOS port — Kazuhiko Iwama <iwama@...>
■ [ruby-list:197] Re: DOS port
1 message
1996/02/26
[#201] Re: ruby for JPower — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろ@トヨタケーラムです.
1 message
1996/02/26
[ruby-list:146] TUTORIAL - control structure
From:
matz@... (Yukihiro Matsumoto)
Date:
1996-02-14 02:49:24 UTC
List:
ruby-list #146
まつもと ゆきひろ@トヨタケーラムです.
チュートリアルの8回目は「制御構造」です.
--
* rubyの制御構造
rubyの制御構造について見てみよう.既に`if'と`while'と`break'
については説明した.それ以外のrubyの制御構造を解説しよう.
まず`if'修飾子と同じように`while'修飾子も存在する.
ruby> i = 0; print i+=1, "\n" while i < 3
1
2
3
nil
複数の条件を一度に検査するためには`case'文がある.こんな感じ
で使う.
ruby> case i
ruby| when 1, 2..5
ruby| print "1..5\n"
ruby| when 6..10
ruby| print "6..10\n"
ruby| end
6..10
nil
`2..5'は「2から5までの範囲」を表すオブジェクトを返す式である.
この「範囲内かどうか」は
(2..5) === i
の結果をもとに判断している.つまり,caseは`==='という演算子
を使った比較を一度に行う文ということになる.rubyのオブジェク
ト指向機能でオブジェクトに合わせた処理が選択されるので,数だ
けでなく,いろいろなデータに対して使える.例えば,
ruby> case 'abcdef'
ruby| when 'aaa', 'bbb'
ruby| print "aaa or bbb\n"
ruby| when /def/
ruby| print "includes /def/\n"
ruby| end
includes /def/
nil
のように文字列と文字列の比較や,文字列と正規表現との比較にも
使える.
ループから脱出するための制御構造が三つある.`break'と
`continue'はC言語と同じだ.`break'はループの途中から抜け出し,
`continue'はループの次の繰り返しをはじめる.rubyにはもうひと
つ`redo'というものもあり,これはループの現在の繰り返しをもう
一度実行する.C言語が分かる人のためにCで記述するとこうなる.
label_continue:
while (condithion) {
label_redo:
goto label_continue /* continue */
goto label_break /* break */
goto label_redo /* redo */
}
label_break:
;
脱出といえば`return'がある.これが評価されると関数(メソッド)
から抜ける.引数は戻り値になるが,省略されると`nil'を指定し
たと見なされる.
もうひとつ`for'という繰り返しのための制御構造がある.こんな
感じで使う.
for i in obj
...
end
for文は複数の要素を持っているobjの各要素を変数iに代入して,
endまでの文を順に実行する.これは後で説明するイテレータの別
形式で,そちらではこういう感じになる.
obj.each {|i|
...
}
意味は同じなんだけど,なんとなくforの方が一目でなにをやって
いるか分かるような気がするだろう.forはその目的のための文だ.