From: guyren@... Date: 2016-08-21T06:09:05+00:00 Subject: [ruby-core:76995] [Ruby trunk Bug#10856] Splat with empty keyword args gives unexpected results Issue #10856 has been updated by Guyren Howe. I believe this behavior is wrong and should be fixed. This gets in the way of simple functional programming idioms. eg "Call each of these functions with these args until one doesn't fail" ~~~ ruby class FnSeries def initialize(*fns) @fns = fns end def call(*args, **kwargs) @fns.each do |fn| begin return fn.call(*args, **kwargs) rescue Exception => e end end end ~~~ If one of the fns takes no args, this will fail even if that function would otherwise succeed. ---------------------------------------- Bug #10856: Splat with empty keyword args gives unexpected results https://bugs.ruby-lang.org/issues/10856#change-60219 * Author: Sean Griffin * Status: Open * Priority: Normal * Assignee: * ruby -v: ruby 2.2.0p0 (2014-12-25 revision 49005) [x86_64-darwin13] * Backport: 2.0.0: UNKNOWN, 2.1: UNKNOWN, 2.2: UNKNOWN ---------------------------------------- When keyword args are passed to a method with splat, and there are no keyword args, an empty hash is sent. I would expect no argument to be given, same as splat with an empty array. For example: def foo end foo(**{}) This causes an argument error, as an empty hash is passed. I would expect the same behavior as def foo end foo(*[]) -- https://bugs.ruby-lang.org/ Unsubscribe: