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 モジュールのメソッドは多分全部この仕様だと思う。