どなブロ

Ruby, Rails, その他気になったこととか思ったこととか

【Ruby】Hashのeach.with_indexで引数2つ渡す

2つの引数を()で囲っちゃうだけなんだけど、忘れるので。

hash = {"hoge":100, "fuga":200, "piyo":300}

hash.each.with_index do |(key, val), index|
  puts "key: #{key}, val: #{val}, index: #{index}"
end

# => 
# key: hoge, val: 100, index: 0
# key: fuga, val: 200, index: 1
# key: piyo, val: 300, index: 2

()で囲ってあげない|key, val, index|みたいに書くとkeyにハッシュのkeyとvalueが、valにindexが入っちゃいます。

参考

instance method Enumerator#with_index (Ruby 2.1.0)

以上