From: Dave Thomas Date: 2000-04-07T14:54:47-05:00 Subject: [ruby-talk:02384] Re: Iterator into array matz@netlab.co.jp (Yukihiro Matsumoto) writes: > I think it may be uglier, but for the idea: > > def iterated_values(method, *args) > result = [] > method.call(*args) do |x| > result.push(x) > end > result > end > > p iterated_values([1,2].method(:each)) Do you ever sleep ;-) Part of the motivation for this is the code examples in the book. Right now is I write Let's look at an example: \begin{ruby}[comment] a = 1 b = 2 a + b \end{ruby} the text gets preprocessed, and the final output will look something like: Let's look at an example: a = 1 b = 2 a + b -> 3 The preprocessor looks for statements that return a meaningful value, captures that value, and adds it to the text. However, when I'm documenting iterators, this is more difficult. I'd like to be able to write something that gives. def fibUpTo(max) i1, i2 = 1, 1 while i1 <= max yield i1 i1, i2 = i2, i1+i2 end end fibUpTo(20) -> [1,1,2,3,5,8,13] Although I could wrap the methods, it would obscure the thing I'm trying to show. I was hoping I'd forgotten some obvious Ruby feature that would make this easy. (How about it - a method that yields with no associated block returns an array of yielded values?) Regards Dave