[ruby-core:118742] [Ruby master Feature#20657] Allow Enumerable#map(&:method) and #each accept additional parameters for method
From:
"matz (Yukihiro Matsumoto) via ruby-core" <ruby-core@...>
Date:
2024-07-30 13:53:15 UTC
List:
ruby-core #118742
Issue #20657 has been updated by matz (Yukihiro Matsumoto).
As @bkuhlmann mentioned, there's room for the language enhancement here to provide arguments to the method for a block. But not this way.
Because the arguments belong to the method, not the method call (each or map in the example).
Matz.
----------------------------------------
Feature #20657: Allow Enumerable#map(&:method) and #each accept additional parameters for method
https://bugs.ruby-lang.org/issues/20657#change-109281
* Author: ukolovda (Dmitry Ukolov)
* Status: Open
----------------------------------------
I can use `#map` (or `#each`) with short method name, for example:
``` ruby
a = ["a1", "b1", "c1"]
b = a.map(&:length)
# or
a.each(&:some_method)
```
But with additional arguments I must use yield:
```ruby
c = a.map { |item| item.ljust(10) }
# or
a.each { |item| item.some_method(arg1, arg2) }
```
Direct sending allow make the code more simple:
```ruby
c = a.map(&:ljust, 10) # Now give syntax error, unexpected ',', expecting ')'
# or
a.each(&:some_method, arg1, arg2) # Now give syntax error, unexpected ',', expecting ')'
```
--
https://bugs.ruby-lang.org/
______________________________________________
ruby-core mailing list -- ruby-core@ml.ruby-lang.org
To unsubscribe send an email to ruby-core-leave@ml.ruby-lang.org
ruby-core info -- https://ml.ruby-lang.org/mailman3/lists/ruby-core.ml.ruby-lang.org/