From: "matz (Yukihiro Matsumoto)" Date: 2013-06-10T14:47:36+09:00 Subject: [ruby-core:55399] [ruby-trunk - Bug #8507] Keyword splat does not convert arg to Hash Issue #8507 has been updated by matz (Yukihiro Matsumoto). You didn't explain why "it is nice". Could elaborate? Do we really need it? FYI, in the early stage of Ruby, types are more flexible; integers can be treated as strings, nil can be treated as empty array. nil.to_a => [] is a left-over of the old days. For consistency's sake, I'd rather remove nil.to_a if we don't see compatibility problems. Matz. ---------------------------------------- Bug #8507: Keyword splat does not convert arg to Hash https://bugs.ruby-lang.org/issues/8507#change-39823 Author: stephencelis (Stephen Celis) Status: Feedback Priority: Normal Assignee: matz (Yukihiro Matsumoto) Category: syntax Target version: current: 2.1.0 ruby -v: ruby 2.0.0p195 (2013-05-14 revision 40734) [x86_64-darwin12.3.0] Backport: 1.9.3: UNKNOWN, 2.0.0: UNKNOWN A single splat is useful to convert an object to an array as it passes from one method to the next, so I expected the double-splat to do the same and convert the object to a hash.

def splat *args
  p args
end
def double_splat **kwargs
  p args
end
splat(*nil)  # []
splat(**nil) # TypeError: no implicit conversion of nil into Hash
For the sake of consistency, wouldn't it make sense to wrap the double-splatted arg with Hash() the same way a single-splatted arg is wrapped with Array()? -- http://bugs.ruby-lang.org/