Issue #13559 has been updated by dunrix (Damon Unrix).


I can see it just as an alternate way of expressing an identity function, not something foreign what would require standalone method. Just an optional modifier of received self. Thus more "logical", from my point of view I admit. Reusing already existing method instead of adding (yet another) new one find "cleaner".

Concerning static analysis objection, I'm not quite sure I understand the point. There are lot of methods in Ruby core, like in `Enumerable`, with block as an optional argument. What would be the difference to `itself` then ? Associativity precedence for the Ruby parser would be the same. Do you mean some code linters ?

Thank You.

Take care


----------------------------------------
Feature #13559: Change implementation of Feature #6721
https://bugs.ruby-lang.org/issues/13559#change-64789

* 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>