Rubyメモ
制御文
最終更新:
匿名ユーザー
-
view
if文
式が真(0,nil,false以外の値)だったら(A)の部分を実行。
if 式 [then] .... <---(A) end
式が真(0,nil,false以外の値)だったら(A)の部分を実行、それ以外は(B)を実行。
if 式 [then] .... <---(A) elsif .... <---(B) end
Cなどの場合
if (式){ }
という感じに()で式を囲うけどRubyは必要なし。
また複数の文の場合ブロックで囲うけれど、(Cなら{})Rubyの場合doとかbeginとか{ブロックの開始をつけない。
thenも無くていいみたいだ。
また複数の文の場合ブロックで囲うけれど、(Cなら{})Rubyの場合doとかbeginとか{ブロックの開始をつけない。
thenも無くていいみたいだ。
if 式 end
thenをつける必要があるのは一行に記述するとき
if a == 1 then puts "a is one" end
if a == 1 then puts "a is one" end
ま、確かに少し記述がらくだけどviで%とか押すクセが付いてるのでちょっと困惑する私…
while文
式が真の間(A)の部分を繰り返し実行する。
while 式 .... <----(A) end
for文
C等のforよりUnixのシェルスクリプトのforeachに近い感覚。
for i in 0...10 do puts i end
とか
array = ['A', 'B', 'C'] for i in array do puts i end
みたいな使い方。コンテナっぽいのから要素を一つづつ取り出して実行。
ちなみに...のかわりに..を使うと10も出力される。点々の数が多いほうが範囲が狭いってのもなんか直感的じゃあないなあと思ってしまうんだが。
ちなみに...のかわりに..を使うと10も出力される。点々の数が多いほうが範囲が狭いってのもなんか直感的じゃあないなあと思ってしまうんだが。
for i in 0..10 do puts i end
どうもinの後におくオブジェクトにeachメソッドが実装されていればforに使える模様。っていうか単に
aObject.each do |i| end
と
for i in aObject do end
はほぼ同じと考えていいみたい。
制御文ではないけれどループの処理をするときに以下のようなやり方もRubyでは良くつかう。ここまで文法でイテレータをサポートしてくれているとイテレータもありがたみを感じやすい。(IteraterではなくてVisiterなのか)
array.each do |i| puts i end
10.times do |i| puts i end