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も無くていいみたいだ。
if 式
end
thenをつける必要があるのは一行に記述するとき
 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も出力される。点々の数が多いほうが範囲が狭いってのもなんか直感的じゃあないなあと思ってしまうんだが。

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
目安箱バナー