From: stephen.celis@... Date: 2014-07-17T18:38:53+00:00 Subject: [ruby-core:63806] [ruby-trunk - Bug #8507] Keyword splat does not convert arg to Hash Issue #8507 has been updated by Stephen Celis. Another issue with keyword args and consistency with args: - *args are immutable - **kwargs are mutable def splat *args args << 'foobar' end arr = [] splat(*arr) arr # => [] def double_splat **kwargs kwargs[:foo] = 'bar' end hash = {} double_splat(**hash) hash # => {:foo=>"bar"} ---------------------------------------- Bug #8507: Keyword splat does not convert arg to Hash https://bugs.ruby-lang.org/issues/8507#change-47837 * Author: Stephen Celis * Status: Feedback * Priority: Normal * Assignee: Yukihiro Matsumoto * Category: syntax * Target version: current: 2.2.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 ---------------------------------------- =begin 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()}))? =end ---Files-------------------------------- to-hash-kwarg.patch (939 Bytes) -- https://bugs.ruby-lang.org/