Issue #16261 has been updated by knu (Akinori MUSHA).
I agree this feature would be a nice addition.
Actually I had exactly the same idea, presented at Rails Developer Meetup 2019: https://www.slideshare.net/akinorimushaevolution-of-enumerator
There's a subtle difference between Hash#each/map and Hash#select/reject in how they yield each key-value pair.
```ruby
{a:1,b:2}.select{|x|p x}
# :a
# :b
{a:1,b:2}.each{|x|p x}
# [:a, 1]
# [:b, 2]
```
I guess this was an unintended difference, but we cannot fix it by now for compatibility reasons, and each_splat would be one way to work around it.
----------------------------------------
Feature #16261: Enumerable#each_splat and Enumerator#splat
https://bugs.ruby-lang.org/issues/16261#change-82848
* Author: zverok (Victor Shepelev)
* Status: Open
* Priority: Normal
* Assignee:
* Target version:
----------------------------------------
**UPD:** After discussion in comments, method names changed to "splat"-based.
New methods proposal.
Prototype code:
```ruby
module Enumerable
def each_splat
return to_enum(__method__) unless block_given?
each_entry { |item| yield(*item) } # unpacking possible array into several args
end
end
class Enumerator
def splat
return to_enum(:splat) unless block_given?
each_entry { |item| yield(*item) }
end
end
```
Supposed documentation/explanation:
> For enumerable with Array items, passes all items in the block provided as a separate arguments. t could be useful if the provided block has lambda semantics, e.g. doesn't unpack arguments automatically. For example:
```ruby
files = ["README.md", "LICENSE.txt", "Contributing.md"]
content = [fetch_readme, fetch_license, fetch_contributing] # somehow make a content for the files
files.zip(content).each_splat(&File.:write) # writes to each file its content
```
> When no block passed, returns enumerator of the tuples:
```ruby
[1, 2, 3].zip([4, 5, 6]).each_splat.map(&:+) # => [5, 7, 9]
```
--
https://bugs.ruby-lang.org/
Unsubscribe: <mailto:[email protected]?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>
lmpx.com only provides a reader for public news (NNTP) servers. It is not
affiliated with the servers or forums shown here and is not responsible for
the content of articles, which is written by their respective authors.