English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Rubyのイテレータ

簡単に言えば:迭代(iterate)とは同じことを繰り返すこと、そのためのものがイテレータ(iterator)です。

イテレータは集合サポートするメソッドがあります。データメンバーのグループを保存するオブジェクトを集合と呼びます。Rubyでは、配列(Array)やハッシュ(Hash)を集合と呼びます。

イテレータは集合のすべての要素を一つずつ返します。ここでは、二つのイテレータについて説明します。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 イテレータは常にブロックに関連しています。それがブロックに配列の各値を一つずつ返します。値は変数 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