English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
簡単に言えば:迭代(iterate)とは同じことを繰り返すこと、そのためのものがイテレータ(iterator)です。
イテレータは集合サポートするメソッドがあります。データメンバーのグループを保存するオブジェクトを集合と呼びます。Rubyでは、配列(Array)やハッシュ(Hash)を集合と呼びます。
イテレータは集合のすべての要素を一つずつ返します。ここでは、二つのイテレータについて説明します。each および collect。
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 中,それがスクリーンに表示されます。
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