お薦め ページ


メニュー

ハワイ島 遊覧飛行ツアー

ハワイ島 B&B・ホテル

ハワイ島 不動産情報

ハワイ島 情報・観光ガイド

ブログ(Blog)

その他

関連サイト

: 日付別 アーカイブ :

2006年12月 1日

2006年12月 1日

Ruby の イテレータ

Ruby の解説記事などで 言語の特徴について書かれている場合、 必ずと言ってよいほど「イテレータ」という言葉にお目にかかる。 実は私も、Rubyについて調査・研究を始めるまで聞いたことがなかった。 それでは、「イテレータ」とはいったい何なのだろうか?

まずは英語のお勉強から。「イテレータ」は「iterator」であり、 その原型の動詞「iterate」とは「 〜を 繰り返す」という意味。 また、ウィキペディアでの 「イテレータ」ページ での定義を引用させてもらうと、
イテレータ(Iterator)とは、プログラミング言語において配列やそれに類似するデータ構造の各要素に対する繰返し処理の抽象化である。 実際のプログラミング言語では、オブジェクトまたは文法などとして現れる。 反復するためのものの意味で反復子(はんぷくし)と訳される。
となっている。 また、Rubyリファレンスマニュアル の「イテレータとは何ですか」では
イテレータは制御構造(特にループ)の抽象化のために用いられるメソッド の一種です。
と定義付けされている。 Rubyでも繰り返しの記述方法は何通りもあるが、 繰り返したいブロックをメッソドの引数として与える記述が可能である。 そのメソッドのことを「イテレータ」と呼んでいる。

では Rubyとしての「イテレータ」の具体例を挙げてみよう。
3.times do
   print "A"
end
これは 整数クラスの「3」というオブジェクトの 「times」というメッソドに 「do ... end 」のブロックを引数として与えていることになる。 処理としてはこの場合、「do ... end 」のブロックを3回繰り返すことになる。 これを実行してみると、結果は
AAA
となる。

「do ... end 」のブロックの中へ 何回目の繰り返しかを 変数で引き渡す方法。
3.times do |i|
   print i, " "
end
前述のスクリプト例との違いは、 ブロックの開始 do の直後に「 |i| 」という このブロックへの引数を受け取るローカル変数「i」の定義があり、 ブロック内では このローカル変数「i」が参照されていること。 この実行結果は
0 1 2 
となる。

また、配列の場合であれば、
data = [5, 10, 15]
data.each do |i|
  print i, " "
end
というような記述になり、結果が
5 10 15 
となる。

【参考リンク】

カテゴリー: Ruby     22:13 | コメント (0) | トラックバック (0)

 
ハワイ島での遊覧飛行ツアーとB&Bのスペシャリスト、スカイメリカ
Copyright © 2003,2009 Skymerica Corp. All rights reserved.