From: Kenneth McDonald Date: 2008-09-10T09:36:43+09:00 Subject: Re: yield/block question Very elegant, with the drawback that it requires flattening a potentially large array structure. But that was carelessness in my lack of specifications. A nice solution, thank you. Ken On Sep 9, 2008, at 7:11 PM, Martin DeMello wrote: > On Tue, Sep 9, 2008 at 5:04 PM, Kenneth McDonald > wrote: >> This is something I know how to do in Python, but it's got me >> flummoxed in >> Ruby--I still haven't fully gotten my head around the Ruby way. >> ("yield" >> means something very different in Python and in Ruby. >> >> Let's say I have a data structure consisting of nested Arrays and >> numbers, >> for example [[1,2], 3, [[4]]]. I want to write an extension to Array, >> "each_leaf", which takes a block that will be applied to each number >> sequentially in that nested array. For example, if arr is the given >> array, >> then >> >> result = 0 >> arr.each_leaf {|n| result += n} >> >> would end with result being equal to 1+2+3+4 >> >> Could anyone help out? Much appreciated. > > array.flatten.each {|i| yield i} > > martin >