[#89806] [Ruby trunk Bug#15306] Generate prelude.c using miniruby — v.ondruch@...
Issue #15306 has been reported by vo.x (Vit Ondruch).
3 messages
2018/11/15
[ruby-core:89807] [CommonRuby Feature#13581] Syntax sugar for method reference
From:
alex.wayfer@...
Date:
2018-11-15 10:02:27 UTC
List:
ruby-core #89807
Issue #13581 has been updated by AlexWayfer (Alexander Popov).
zverok (Victor Shepelev) wrote:
> @nobu
>
> > If `.:` will be introduced, I think it should obey that syntax too, and allowing it without the receiver feels confusing.
>
> Can you please show some example of confusing statements? I can't think of any from the top of my head, it seems that (if the parser can handle it), the context for `.:something` and `.something` is always clearly different.
>
> I am concerned about receiver-less version because in our current codebase we found this idiom to be particularly useful:
>
> ```ruby
> # in a large data-processing class
> some_input
> .compact
> .map(&method(:process_item)) # it is private method of current class
> .reject(&method(:spoiled?))
> .tap(&method(:pp)) # temp debugging statement
> .group_by(&method(:grouping_criterion))
> .yield_self(&method(:postprocess))
>
> # which I'd be really happy to see as
> some_input
> .compact
> .map(&.:process_item)
> .reject(&.:spoiled?)
> .tap(&.:pp)
> .group_by(&.:grouping_criterion)
> .then(&.:postprocess)
>
> ```
> Having to explicitly state `map(&self.:process_item)` is much less desirable.
Just an opinion:
```ruby
processed =
some_input
.compact
.map { |element| ProcessingItem.new(element) } # or `.map(&ProcessingItem.method(:new))`
.reject(&:spoiled?)
.each(&:pp) # temp debugging statement
.group_by(&:grouping_criterion)
postprocess processed
```
Or you can even use `ProcessingItems` collection class. With itself state and behavior. Instead of bunch of private methods in a processing class with the same (collection) argument.
----------------------------------------
Feature #13581: Syntax sugar for method reference
https://bugs.ruby-lang.org/issues/13581#change-74869
* Author: americodls (Americo Duarte)
* Status: Open
* Priority: Normal
* Assignee:
* Target version:
----------------------------------------
Some another programming languages (even Java, in version 8) has a cool way to refer a method as a reference.
I wrote some examples here: https://gist.github.com/americodls/20981b2864d166eee8d231904303f24b
I miss this thing in ruby.
I would thinking if is possible some like this:
~~~
roots = [1, 4, 9].map &Math.method(:sqrt)
~~~
Could be like this:
~~~
roots = [1, 4, 9].map Math->method
~~~
What do you guys thinking about 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>