diff options
author | akr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2010-03-12 14:00:49 +0000 |
---|---|---|
committer | akr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2010-03-12 14:00:49 +0000 |
commit | 73fc3b5a34edb7a681e0000d2879cb4a79772945 (patch) | |
tree | 7764295ba27ca206dcc7a6aa3789de399ef45e2a /enum.c | |
parent | 1eca24b1a5e029605241828a630ed9b83572ea0c (diff) | |
download | ruby-73fc3b5a34edb7a681e0000d2879cb4a79772945.tar.gz |
rdoc update.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@26892 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'enum.c')
-rw-r--r-- | enum.c | 21 |
1 files changed, 12 insertions, 9 deletions
@@ -2418,15 +2418,18 @@ slicebefore_i(VALUE yielder, VALUE enumerator, int argc, VALUE *argv) * * If the block needs to maintain state over multiple elements, * local variables can be used. - * For example, monotonically increasing elements can be chunked as follows. - * - * a = [3,1,4,1,5,9,2,6,5,3,5] - * n = 0 - * p a.slice_before {|elt| - * prev, n = n, elt - * prev > elt - * }.to_a - * #=> [[3], [1, 4], [1, 5, 9], [2, 6], [5], [3, 5]] + * For example, three or more consecutive increasing numbers can be squashed + * as follows: + * + * a = [0,2,3,4,6,7,9] + * prev = a[0] + * p a.slice_before {|e| + * prev, prev2 = e, prev + * prev2 + 1 != e + * }.map {|es| + * es.length <= 2 ? es.join(",") : "#{es.first}-#{es.last}" + * }.join(",") + * #=> "0,2-4,6,7,9" * * However local variables are not appropriate to maintain state * if the result enumerator is used twice or more. |