From: zverok.offline@... Date: 2017-05-13T13:50:40+00:00 Subject: [ruby-core:81141] [Ruby trunk Feature#13559] Change implementation of Feature #6721 Issue #13559 has been updated by zverok (Victor Shepelev). To be honest, the selected name for the method dozens of peoples wanted for 5 years looks really bad. It is like instead of `map` Ruby'd had a method named like, I don't know, `yield_each_and_return_result`. I always believed Ruby's method names are carefully selected to produce idiomatic, readable code. So, I'd vote for `itself` too: ```ruby url.itself # return itself url.itself { |u| open(u).read } # return "itself -> fetch from the network" ``` There are some other good options (listed, for ex., [here](https://bugs.ruby-lang.org/issues/12760#note-5)), that are easy to read, like `apply`, `as`, `chain`, that will produce the code you could read "naturally". `yield_self` is definitely the ugliest of them. It looks like ruby-core devs saying "we don't think we need this method, but OK, if you ask so frequently... take that!" ---------------------------------------- Feature #13559: Change implementation of Feature #6721 https://bugs.ruby-lang.org/issues/13559#change-64790 * Author: dunrix (Damon Unrix) * Status: Feedback * Priority: Normal * Assignee: * Target version: ---------------------------------------- Hi, please reconsider implementation of feature request #6721 planned for Ruby 2.5.0 . Instead of introducing new method `Object#yield_self`, just reuse existing `Object#itself` by taking an optional block argument. Find it much clearer and more logical solution, not superfluous polluting of API space. `Object#itself` just returns target object, optional block would return alternative value with target object passed as block argument. Prototyped sol. in Ruby: ~~~ class Object def itself block_given? ? yield(self) : self end end ~~~ Not aware of any case, where it would break backward compatibility. -- https://bugs.ruby-lang.org/ Unsubscribe: