Rubyのeach
メソッドはハッシュだとキーが一緒に取得できるが、配列だとインデックスは取得できない。
HashとArray(配列)のeach
Hash
hash = {commander: "Mika", gunner: "Aki", driver: "Mikko"} hash.each{|key, value| puts "#{key} => #{value}" }
Array
arg = ["Mika", "Aki", "Mikko"] arg.each{|value| puts value } # 引数を書いてもエラーにはならないが取得はできない arg.each{|index, value| p index # valueが出力される p value # nil }
each_with_index
each_with_index(*args) { |obj, i| block } → enum click to toggle source
配列をループで回してインデックスも欲しい時はeach_with_index
メソッドを使う。
厳密にはEnumerable
クラスのメソッドになるっぽい。
arg = ["Mika", "Aki", "Mikko"] arg.each_with_index{|value, index| puts "#{index} => #{value}" }
ハッシュの時、each
メソッドの引数は|key, value|
だけど、each_with_index
の引数は|value, index|
と逆なので注意が必要。
each.with_index
という書き方もできるっぽい。
この場合も引数は|value, index|
arg = ["Mika", "Aki", "Mikko"] arg.each.with_index{|value, index| puts "#{index} => #{value}" }
インデックスだけ取得したい時 each_index
each_index { |index| block } → ary
arg = ["Mika", "Aki", "Mikko"] arg.each_index{|index| puts index }
使いドコロがあまり思い浮かばない
key, valueって順番に馴染みがあるので、each_with_indexのvalue, index
って順番は慣れが必要そう。
後、Rubyのループの書き方はdo ~ end
で書くのと{ ... }
で書くのどっちが主流な感じなんでしょうか?
- 作者: 高橋征義,後藤裕蔵,まつもとゆきひろ
- 出版社/メーカー: SBクリエイティブ
- 発売日: 2016/02/26
- メディア: 単行本
- この商品を含むブログ (1件) を見る