Keyword arguments unpacking (splat) in Ruby
问题 What is happening below seems a little strange to me. def f(a, b) puts "#{a} :: #{b}" end f(*[1, 2], **{}) # prints "1 :: 2" hash = {} f(*[1, 2], **hash) ArgumentError: wrong number of arguments (3 for 2) f(*[1, 2], **Hash.new) ArgumentError: wrong number of arguments (3 for 2) Is this a compiler optimization feature? 回答1: That is a Ruby's bug that has been reported several times (for example here by me) but has not been fixed. I guess that since the keyword argument feature has been