From: "alexeymuranov (Alexey Muranov)" Date: 2012-07-10T22:26:04+09:00 Subject: [ruby-core:46299] [ruby-trunk - Feature #6717] Method like #instance_eval that returns self (like #tap) Issue #6717 has been updated by alexeymuranov (Alexey Muranov). =begin It seems to me that the main question is if to allow other method that act like (({instance_eval})), or call it under the hood. The advantage in my opinion is the possibility to use (({self})), instead of choosing and declaring a local variable like in: room_numbers = {}.tap { |h| (1..10).each { |n| h[n] = 100 + n } } and that the object itself can be modified. ((({tap})) will modify in place.) =end ---------------------------------------- Feature #6717: Method like #instance_eval that returns self (like #tap) https://bugs.ruby-lang.org/issues/6717#change-27920 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/