Ruby の Hash#map に渡すブロックは引数の数によって受け取り方が異なる
Hash#map
は渡したブロックの引数の数によって受け取り方が異なります。
homu = { name: :homu, age: 14 } # 引数が2つの場合はキーと値が別々に渡される homu.map { |key, value| "#{key} : #{value}" } # => ["name : homu", "age : 14"] # 引数が1つの場合は、[キー, 値]の配列が渡される homu.map { |item| "#{item[0]} : #{item[1]}" } # => ["name : homu", "age : 14"] # 可変長引数の場合は、引数が1つの時と同じ挙動になる homu.map { |*args| "#{args[0][0]} : #{args[0][1]}" } # => ["name : homu", "age : 14"]
この挙動は Hash#each に依存してるようなので Enumerable
モジュールのメソッドは多分全部この仕様だと思う。