Ruby イテレータ

簡単に言うと、反復(iterate)とは同じことを繰り返すことを指します。つまり、イテレータ(iterator)は同じことを何度も繰り返すために使われます。

イテレータはコレクションがサポートするメソッドです。データメンバーのグループを格納するオブジェクトをコレクションと呼びます。Rubyでは、配列(Array)とハッシュ(Hash)をコレクションと呼ぶことができます。

イテレータはコレクションのすべての要素を1つずつ返します。ここでは、2種類のイテレータについて説明します。eachとcollect。

Ruby eachイテレータ

each イテレータは、配列またはハッシュのすべての要素を返します。

構文

collection.each do |variable| code end

ためにコレクション内の各要素に対して実行code。ここでは、コレクションは配列またはハッシュにすることができます。

例

#!/usr/bin/ruby ary = [1,2,3,4,5] ary.each do |i| puts i end

試してみる »

上記の例の実行結果は次のとおりです。

1
2
3
4
5

eachイテレータは常にブロックと関連付けられます。イテレータは配列の各値を1つずつブロックに返します。値は変数に格納されi、その後画面に表示されます。

Ruby collectイテレータ

collectイテレータはコレクションのすべての要素を返します。

構文

collection = collection.collect

collectメソッドは常にブロックと関連付ける必要はありません。collectメソッドは、配列であろうとハッシュであろうと、コレクション全体を返します。

例

例

#!/usr/bin/ruby a = [1,2,3,4,5] b = Array.new b = a.collect{ |x|x } puts b

試してみる »

上記の例の実行結果は次のとおりです。

1
2
3
4
5

注意:collectメソッドは配列間のコピーを行う正しい方法ではありません。ここに、別のメソッドがあります。cloneこのメソッドは、配列を別の配列にコピーするために使用されます。

各値に対して何らかの操作を行い、新しい配列を取得したい場合、通常は collect メソッドを使用します。例えば、次のコードは、a の各値の10倍を値とする配列を生成します。

例

#!/usr/bin/ruby a = [1,2,3,4,5] b = a.collect{|x| 10*x} puts b

試してみる »

上記の例の実行結果は次のとおりです。

10
20
30
40
50
その他の拡張