Issue #6717 has been updated by alexeymuranov (Alexey Muranov).


=begin
Another idea: how about "associating" this method with "public self" requested in #6373?

 class Object
   def the_self
     self
   end

   def the_self!(&block)
     instance_eval(&block)
     self
   end
 end

 room_numbers = {}.the_self! { (1..10).each { |n| store(n, 100 + n) } }
=end

----------------------------------------
Feature #6717: Method like #instance_eval that returns self (like #tap)
https://bugs.ruby-lang.org/issues/6717#change-27926

Author: alexeymuranov (Alexey Muranov)
Status: Open
Priority: Normal
Assignee: 
Category: 
Target version: 


=begin
How about adding a method that acts like (({#instance_eval})), but returns (({self}))?

Call it (({Object#instance_tap})) for example, or (({Object#tweak!})):

 class Object
   def tweak!(*args, &block)
     instance_eval(*args, &block); self
   end
 end

This can be used to initialize a hash.  Instead of:

 room_numbers = (1..10).each_with_object({}) { |n, o| o[n] = 100 + n }

one would write:

 room_numbers = {}.tweak! { (1..10).each { |n| self[n] = 100 +n } }

Googling for this kind of method gave me this:
http://yuroyoro-blog.tumblr.com/post/24113917395/ruby-tap-instance-eval-tapeval
=end



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