Actions
Bug #10994
closedInconsistent behavior when mixing optional argument and keyword splat
Status:
Closed
Assignee:
-
Target version:
-
ruby -v:
ruby 2.2.1p85 (2015-02-26 revision 49769) [x86_64-darwin13]
Description
The following code produces inconsistent behavior:
def foo(x=nil, **kw)
x
end
h = { "a" => 1 }
foo(h) # => {"a"=>1}
foo(h).equal?(h) # => false
foo(h, y: 1).equal?(h) # => true
It seems that in this very specific case, foo is returning a copy of h instead of returning h itself. I guess this is an edge case in the keyword extraction process.
Thank you for your time.
Updated by jeremyevans0 (Jeremy Evans) over 5 years ago
- Related to Feature #14183: "Real" keyword argument added
Updated by jeremyevans0 (Jeremy Evans) over 5 years ago
- Status changed from Open to Closed
With the acceptance of #14183, you now get:
foo(h)
# => {"a"=>1}
foo(h).equal?(h)
# => true
foo(h, y: 1).equal?(h)
# => true
Actions
Like0
Like0Like0