From: Juan Matias on 8 Jun 2010 08:28 Robert Klemme wrote: > 2010/6/8 Juan Matias <jmrepetti(a)gmail.com>: >>> >> �[1,2].combine([3,4]).combine([5,6,7]) >> � �end >> � �aux.map {|elem| elem.flatten } >> �end >> end > > I'd rather do this: > > module Enumerable > def combine(enum) > if block_given? > each do |*a| > enum.each do |*b| > yield *a, *b > end > end > self > else > enum_for(:combine, enum) > end > end > end > > [1,2].combine([3,4]) do |*a| > p a > end > > puts "--------------" > > [1,2].combine([3,4]).each do |*a| > p a > end > > puts "--------------" > > [1,2].combine([3,4]).combine([5,6]) do |*a| > p a > end > > puts "--------------" > > [1,2].combine([3,4]).combine([5,6]).each do |*a| > p a > end > > Kind regards > > robert Great, I'll probe it,also I add a fix to my code: class Array def combine(otherArray) aux = [] return otherArray if self.empty? #this line self.each do |self_elem| otherArray.each do |other_elem| aux << [self_elem,other_elem] end end aux.map {|elem| elem.flatten } end end Juan Matias -- Posted via http://www.ruby-forum.com/.
First
|
Prev
|
Pages: 1 2 Prev: Installing Tk Next: Passenger Crashes, It needs an old version of rack |