[ruby-core:77069] [Ruby trunk Bug#12706] Hash#each yields inconsistent number of args
From:
alxtskrnk@...
Date:
2016-08-25 18:43:28 UTC
List:
ruby-core #77069
Issue #12706 has been reported by bug hit.
----------------------------------------
Bug #12706: Hash#each yields inconsistent number of args
https://bugs.ruby-lang.org/issues/12706
* Author: bug hit
* Status: Open
* Priority: Normal
* Assignee:
* ruby -v:
* Backport: 2.1: UNKNOWN, 2.2: UNKNOWN, 2.3: UNKNOWN
----------------------------------------
```ruby
def foo(a, b)
p [a, b]
end
def bar(a, b = 2)
p [a, b]
end
foo_lambda = method(:foo).to_proc
bar_lambda = method(:bar).to_proc
{a: 1}.each(&foo_lambda)
{a: 1}.each(&bar_lambda)
```
From #12705, yielding to method lambdas uses lambda/method arg semnatics
the yield to foo produces `[:a, 1]` suggesting that each is yielding two values `yield key, value`
but yield to bar produces `[[:a, 1], 2]` suggesting that each is yielding one value `yield [key, value]`
it would be better if you always knew what to expect from it
--
https://bugs.ruby-lang.org/
Unsubscribe: <mailto:ruby-core-request@ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>