概要
このブログでは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のイテレータとは何か、イテレータをどう使うかに関して見てみました。また、必要な時、イテレータを作ることもできることを確認しました。今度、配列やハッシュなどと一緒に反復処理をする時、イテレータを活用してもっと効率的に作業をやってみてください。
私のブログが役に立ちましたか?下にコメントを残してください。それは私にとって大きな大きな力になります!
アプリ広報
今見てるブログを作成た
興味がある方はアプリをダウンロードしてアプリを使ってくれると本当に助かります。
Deku
が開発したアプリを使ってみてください。Deku
が開発したアプリはFlutterで開発されています。興味がある方はアプリをダウンロードしてアプリを使ってくれると本当に助かります。