Ruby のブロック付きメソッド
Ruby ではブロック付きメソッドを使って、繰り返し操作を自分のためにカスタマイズすることができます。繰り返しのためのブロック付きメソッドは、「イテレータ」と呼ばれます。例えば下のイテレータは、配列に対する each_with_index
メソッドのような働きをしますが、配列の中身が入る第一引数はありません。str
は繰り返す配列で、|i|
には繰り返している番号が入ります。
class Array def eachnum for j in 0..(self.length - 1) yield(j) end end end str = %w(a i u e o) str.eachnum do |i| puts str[i] end
順番に「a i u e o」が出力されます。ここから、each
メソッドに等価なイテレータを作ることもできます。上の yield(j)
のところを、yield(self[j])
に替えるだけです。