From: Perry Smith Date: 2012-12-24T04:40:32+09:00 Subject: [ruby-core:51103] Re: [ruby-trunk - Feature #7612] Enumerators take a proc Great! I tried something similar but I must have botched it somehow. Oh.... I bet I tried e(&p1) On Dec 23, 2012, at 1:15 PM, trans (Thomas Sawyer) wrote: > > 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/ >