今日使ったもの

Hash.each_pair {|key, value| ... }

http://www.ruby-lang.org/ja/man/html/Hash.html
each_pairはハッシュのkey と value を引数としてブロックを評価するメソッド。eachとの違いはブロックパラメータの受け渡し方。

{:a=>1, :b=>2}.each_pair {|k, v| p [k, v]}


# => [:a, 1]
[:b, 2]


ruby 1.8 feature:
each と each_pair ではブロックパラメータの受渡し方が異なります。


each: yield([key, val])
each_pair: yield(key, val)


このことにより、each_pair のブロックパラメータに一つの変数を指定した場合、以下のように警告が出ます。詳細は、 yield を参照してください。


{:a=>1, :b=>2}.each_pair {|a| p a }
# => -:1: warning: multiple values for a block parameter (2 for 1)
from -:1
[:a, 1]
-:1: warning: multiple values for a block parameter (2 for 1)
from -:1
[:b, 2]