皆さん添字付きの繰り返し処理はご存知でしょうか?
添字付きの繰り返し処理とは、each_with_indexメソッドやwith_indexメソッドのことです。
これらを使うことで、人間にわかりやすく配列を表現したりするなど、情報の使い方にレパートリーが増えるので、是非理解してみてください!
each_with_indexを解説!
each_with_indexとは、配列の要素に添字をいれることのできるメソッドです。
とは言っても、これだとわかりにくいので、コードを確認してみましょう。
fruits = ['orange', 'apple', 'melon']
# 下のブロックの引数のiには0,1,2...と要素の添字が入る
fruits.each_with_index {|fruit, i| puts "#{i}: #{fruits}"}
#=> 0: apple
# 1: orange
# 2: melon
まず、fruitsという変数に配列を渡します。
そして、fruitsにeach_with_indexメソッドを使用し、doとendを省略したブロックを定義します。
それを出力すると、各要素に定義した通り添字が入るという流れです。
putsブロック内のputs以降をうまく定義してあげることで、人間にわかりやすい内容を出力することができます。
いろんな組み合わせができるwith_indexを解説!
実は、each_with_indexメソッドのような方法以外にも、配列の要素に添字をつけることができる方法があります。
それはwith_indexメソッドです。
このメソッドはeach以外に、mapやdelete_ifなどのメソッドに適用することができます。そして、それらのメソッドを使用する際に添字をつけることができます。
使用する方法はeach_with_indexとほとんど変わりません。
fruits = ['orange', 'apple', 'melon']
fruits.delete_if.with_index {|fruits, i| fruit.include?('a') && i.odd?}
#=> ["apple", "melon"]
このように、delete_ifなどのメソッドにwith_indexメソッドを使用するだけです。
まとめ
どうでしたでしょうか。
このようなメソッドも使うこともあるかもしれないので、知っておくと便利かもしれません。
これからも1日1記事を目標に、初心者に向けて基本的な知識を記事にしていくので、よろしくお願いします。