forは配列や「範囲オブジェクト」の値を1個ずつ取り出しながら、各値に対して処理を行うために使います。「範囲オブジェクト」について、ここでは詳しく説明しませんが、サンプルコードからその意味は読み取れると思います。
sample16.rbは、配列から値を1個ずつ取り出して出力する例です。変数「str」に取り出した値が代入されます。
for str in ["alice", "in", "wonderland"] puts str end
$ ruby sample16.rb alice in wonderland
sample17.rbは範囲オブジェクトを使った例で、1から10までの値を1個ずつ取り出しながら出力しています。
for i in 1..10 puts i end
$ ruby sample17.rb 1 2 3 4 5 6 7 8 9 10
redoはnextに似た制御構文ですが、nextは次のループに移行するのに対し、redoはそのループをもう一度実行します。従って、sample18.rbは「無限ループ」となります。実行を止める場合は、[Ctrl]+[C]キーを押して強制終了してください。
for i in 1..10 puts i redo end
ここでforループについて説明しましたが、配列やハッシュに定義されているeachメソッドとブロックを用いる方が「Rubyらしい」コードとなります。sample16.rbをeachメソッドを用いて書き換えたものをsample19.rbに示します。
["alice", "in", "wonderland"].each do |str| puts str end
$ ruby sample19.rb alice in wonderland
eachメソッドとブロックについては、以降の連載で詳しく説明します。
最後に、コメントについて説明します。
Rubyでは、1行コメントには「#」を使います。
# this line is not executed. puts "this line is executed."
$ ruby sample20.rb this line is executed.
また、「=begin」と「=end」に囲まれた部分は、複数行のコメントとして扱われます。
=begin these lines are not executed. =end puts "this line is executed."
$ ruby sample21.rb this line is executed.
今回は、変数とオブジェクト、定数、リテラル、式と演算子、制御構文について学習しましたが、いかがでしたでしょうか。今回のサンプルコードは、こちらからダウンロードできます。
次回は組み込みライブラリや標準ライブラリについて学習します。ライブラリについて学ぶことで、さらに高度なプログラムを書けるようになります。お楽しみに!
麻田 優真(Rails技術者認定シルバー試験問題作成者)
イタリア、ローマ生まれ。中学生のころHSPに初めて触れ、プログラミングの楽しさを知る。オープンソースやハッカーカルチャーを好む。C#からRubyに転向したときに、動的型付け言語の柔軟性やメタプログラミングの魅力に感動し、Rubyとともにプログラマーとしての人生を歩む決意を固める。
現在は奈良先端科学技術大学院大学で学生として所属するかたわら、株式会社アジャイルウェアでプログラマーとして従事。Ruby on Railsによるコンシューマー向けのWebサービスの開発などに尽力している。
好きなメソッドは、define_method。
Twitter:@Mozamimy、ブログ:http://blog.quellencode.org/
山根 剛司(Ruby業務開発歴7年)
兵庫県生まれ。1997年からベンチャー系のパッケージベンダーで10年間勤務。当時、使用していた言語はJavaとサーバーサイドJavaScript。
2007年よりITコンサル会社に転職し、Rubyと出会って衝撃を受ける。基幹システムをRuby on Railsで置き換えるプロジェクトに従事。それ以来Ruby一筋で、Ruby on Railsのプラグインやgemも開発。
2013年より、株式会社アジャイルウェアに所属。アジャイルな手法で、Ruby on Railsを使って企業向けシステムを構築する業務に従事。
Ruby関西所属。
Twitter:@spring_kuma、Facebook:山根 剛司
Copyright © ITmedia, Inc. All Rights Reserved.