On Oct 4, 2007, at 7:51 AM, Mike Ho wrote: > Stefano Crocco wrote: > >> >> require 'generator' >> >> class Array >> >> def *(other) >> SyncEnumerator.new(self, other).map{|x, y| x*y} >> end >> >> end >> >> Regarding errors, you I think you can check the size of the two >> array at >> the >> beginning of the method and raise TypeError if they're different. >> >> I hope this helps >> >> Stefano > > Thanks for the replies guys. > > The SyncEnumerator looks elegant but when I tried it I got the > following > error > > in `*': undefined method `*' for nil:NilClass (NoMethodError) > > for the line > > SyncEnumerator.new(self, other).map{|x, y| x*y} > > > I call the method by... > > a1=[2, 4, 6] > a2= [2, 2, 2] > > puts a1*a2 > > I put some debug in like this > > def *(other) > SyncEnumerator.new(self, other).map do |x,y| > puts "x #{x} y #{y}" > x*y > end > end > > and the output I get is this > x 2 y 2 > x 4 y 2 > x 6 y 2 > x y > C:/ruby_work/test/scratch.rb:23:in `*': undefined method `*' for > nil:NilClass (NoMethodError) > So it seems to 'run off the end' > > Any thoughts ? > > Thanks > > -- > Posted via http://www.ruby-forum.com/. > some things probably shouldn't be overridden. it's not C++ but try getting similar functionality with a function or method approach...