def yield_two_args
p yield 1, 2
end
def yield_array
p yield [1, 2]
end
この2つのメソッドの違いを確認します。
ブロック引数が2つの場合
yield_two_args
とyield_array
は同じ挙動なので、この使い方をする限り利用する側には2メソッドの違いが見えない
yield_two_args {|a, b| a + b } #=> 3
yield_array {|a, b| a + b } #=> 3
ブロック引数が1つの場合
このときに挙動が異なる
yield_two_args {|a| a } #=> 1
yield_array {|a| a } #=> [1, 2]
Hash#each
ちなみに、Hash#each
はkeyとvalueのペアがブロックに渡ってきますが、
{ key: "value" }.each {|a| p a} #=> [:key, "value"]
ということで、yield [key, val]
形式です