Issue #10095 has been updated by Jihwan Song.


I think the goal is always to keep Ruby language beautiful.
The original request was done with certain motive. What is desired is to find a Ruby way, targetting the original motive. Simply following requests will end up with hairy language, I am afraid...

Not tha what I suggest must be the ideal way, but it is worth going through thisconversation to find the Ruby way.

Anyways.. I thought yield was good word for it, then later it could be thought of a unnamed method - then yield may not be the word.
I simply could not figure out a good name for it... 

I also want to point out that this language structure is mostly for some simple stuff, i would imagine. Then allowing parameterized block may be overkill for it. Then we end up with a block with no parameter, the object being passed into the block implicitly, where the subject of all the verbs in the block being the object passed. - in this case, yield is okay for the name... This may be more convinient because in this cae, using other objects defined outside the block is no issue, unlike unnamed method approach.



----------------------------------------
Feature #10095: Object#as
https://bugs.ruby-lang.org/issues/10095#change-49032

* Author: Akira Matsuda
* Status: Open
* Priority: Normal
* Assignee: 
* Category: core
* Target version: current: 2.2.0
----------------------------------------
We've had so many times of feature requests for a method similar to Object#tap that doesn't return self but returns the given block's execution result (e.g. #7388, #6684, #6721 ).

I'm talking about something like this in Ruby of course:
Object.class_eval { def as() yield(self) end }

IIRC Matz is not against introducing this feature but he didn't like any of the names proposed in the past, such as embed, do, identity, ergo, reference, yield_self, itself, apply, map, tap!, etc.

So, let us propose a new name, Object#as today.
It's named from the aspect of the feature that it gives the receiver a new name "as" a block local variable.
For instance, the code reads so natural and intuitive like this:

(1 + 2 + 3 + 4).as {|x| x ** 2}
=> 100

Array.new.as {|a| a << 1; a << 2}
=> [1, 2]

---Files--------------------------------
itself-block.patch (1.35 KB)


-- 
https://bugs.ruby-lang.org/