From: "trans (Thomas Sawyer)" Date: 2012-12-24T04:15:23+09:00 Subject: [ruby-core:51100] [ruby-trunk - Feature #7612] Enumerators take a proc Issue #7612 has been updated by trans (Thomas Sawyer). =begin Use `&`: e.each(&p1) e.each(&m2) e.each(&p2) =end ---------------------------------------- Feature #7612: Enumerators take a proc https://bugs.ruby-lang.org/issues/7612#change-35034 Author: pedz (Perry Smith) Status: Open Priority: Normal Assignee: Category: Target version: If there is already a clean syntax for this, I apologize. I sure could not find it. class Foo def initialize @inst = 18 end def meth(a, b) puts "method #{@inst} #{a} #{b}" end end foo = Foo.new e = %w{a b c}.each_with_index p1 = Proc.new { |a, b| puts "proc #{a} #{b}" } m2 = foo.method(:meth) p2 = m2.to_proc # Current Syntax possibilities e.each { |a, b| puts "direct #{a} #{b}" } e.each { |a, b| foo.meth(a, b) } e.each { |a, b| p1.call(a,b) } e.each { |a, b| m2.call(a,b) } e.each { |a, b| p2.call(a,b) } # Proposed Addition e.each(p1) # same as e.each { |a, b| p1.call(a,b) } e.each(m2) # same as e.each { |a, b| m2.call(a,b) } e.each(p2) # same as e.each { |a, b| p2.call(a,b) } # In the case of a method or lambda, the arguments are checked and possible errors thrown. # In the case of a proc, the proc "tricks" apply To add readability, an "apply_to" method could be added: e.apply_to(p1) The extra "each" bothers me since the enumerator already has an "each" associated with it. -- http://bugs.ruby-lang.org/