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: <mailto:ruby-core-request / ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>