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.

<pre><code class="ruby">
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
</code></pre>

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/