Rubyのループいろいろ

PHPとほんのちょっとのJavaScriptしか使えないロプロスですが、最近Rubyはじめたんですよ、Ruby。なんか楽しいとかモテるとかいう話を聞いたんで。

で、せっかく勉強しているんだから、その記録をブログにも書いていこうかと思いまして。ってか、書いておかないとすぐ忘れちゃうんで、ほとんど自分用メモなんですけどね。

とりあえずはループから。PHPとはずいぶん違いますね。かなり簡単に書けるものもあるんですねー。このあたりが「楽しい」と言われる所以なのかしら?

while
i=1
while i<=10
    puts i
    i += 1
end
until
i=1
until i>10
    puts i
    i += 1
end
for
for i in 1..10
    puts i
end

ar = [1,2,3,4,5,6,7,8,9,10]
for i in ar
    puts i
end

それぞれ、iの内容を1から10まで増やしながらループします。
whileのほうは書き方が違うだけでPHPと同じなんだけど、forの使い方が全然違いますね。
untilってのもPHPにはないんだけど、これはwhileとは逆で式が真になったらループを終了します。
あと、変数の内容を1増やすのにi++とか++iとかはやれないみたい。

times upto downto step

それぞれ、Integerクラスのメソッド

10.times do |i|
    puts i
end

1から10までループ。なにこれ、超簡単!

5.upto(20) do |i|
    puts i
end
20.downto(5) { |i|
    puts i
}

それぞれ、5から20までカウントアップ、20から5までカウントダウン。
ブロックはdo〜endで囲んでも{}で囲んでもいいみたい。

10.step(100,5) { |i|
    puts i
}

10から5づつ100(を超えない数値)までループ

配列、ハッシュのループ
ar = [1,2,4,8,16,32]
ar.each do |i|
    puts i
end
hs = {"ropross"=>"ロプロス","rodem"=>"ロデム","poseidon"=>"ポセイドン"}
hs.each do |key,val|
    puts key,val
end

PHPのforeachみたいな感じ。配列のインデックスだけ取り出すときはeach_index、ハッシュのキーだけ取り出すときはeach_keyを使います。


それから、ループを抜けるときはPHPと同じbreakなんだけど、ループの先頭に戻るときはcontinueじゃなくてnextを使います。あと、ループの条件をチェックせずに、繰り返しをやり直すredoってのもあるんだけど、使うかな?


と、まあ、こんな感じで勉強したことをちょっとずつメモしていこう。