Rubyのイテレータ

2020-10-05 hit count image

Rubyで配列をもっと簡単に使えるためイテレータの使い方を説明します。

概要

このブログではRubyでイテレータとは何か、配列をとっと簡単に使えるためイテレータを使う方法について説明します。

イテレータ

イテレータ(iterator)とは配列ように複数の要素があるオブジェクトを反復処理する時使えるメソッドです。今回のブログではよく使えるイテレータを紹介します。

eachメソッド

配列の各要素が|変数|へ入れてループを実行します。

配列.each { |変数|
  反復処理
}

次のようにeachを使えます。

fruits = ['apple', 'banana', 'orange']
fruits.each {|fruit|
  puts fruit
}

timesメソッド

反復する回数が決めてある時はtimesメソッドを使います。

4.times {
  puts 'Hello world'
}

Rubyでは数値もオブジェクトなので上のようにtimesメソッドを使えます。

loopメソッド

loopメソッドは終了なしで反復を実行します。

i = 0
loop {
  i += 1
  puts 'Hello world'
  if i == 4
    break
  end
}

上の例ようにbreakを使ってloopメソッドを終了させない場合は、無限ループへ入るので注意する必要があります。

イテレータの活用

配列を処理する時イテレータを使うともっと便利に使えることができます。

each_with_indexメソッド

配列の要素以外にIndexが必要な場合、each_with_indexメソッドを活用することができます。

fruits = ['apple', 'banana', 'orange']
fruits.each_with_index {|fruit, i|
  puts "#{i}: #{fruit}"
}

ハッシュ

配列と同じようにハッシュにもイテレータを使うことができます。

fruits = {:Apple => 'apple', :Banana => 'banana', :Orange => 'orange'}
fruits.each {|key, value|
  puts "#{key}: #{value}"
}

ファイル

Fileクラスでもイテレータを使うことができます。ファイルでイテレータを使うとテキストファイルの一列を要素として取って来ることができます。

file = File.open("test.txt")
file.each {|line|
  puts line
}
file.close

イテレータを定義する

メソッドを定義する時、yieldを使うとイテレータを定義することができます。

def temp
  yield 10
  yield 'Hello'
end

temp {|value|
  puts value * 2
}
# 20
# HelloHello

完了

これでRubyのイテレータとは何か、イテレータをどう使うかに関して見てみました。また、必要な時、イテレータを作ることもできることを確認しました。今度、配列やハッシュなどと一緒に反復処理をする時、イテレータを活用してもっと効率的に作業をやってみてください。

私のブログが役に立ちましたか?下にコメントを残してください。それは私にとって大きな大きな力になります!

Posts