Method: Enumerable#each_cons
- Defined in:
- enum.c
#each_cons(n) { ... } ⇒ nil #each_cons(n) ⇒ Object
Iterates the given block for each array of consecutive <n> elements. If no block is given, returns an enumerator.
e.g.:
(1..10).each_cons(3) { |a| p a }
# outputs below
[1, 2, 3]
[2, 3, 4]
[3, 4, 5]
[4, 5, 6]
[5, 6, 7]
[6, 7, 8]
[7, 8, 9]
[8, 9, 10]
1940 1941 1942 1943 1944 1945 1946 1947 1948 1949 1950 1951 1952 |
# File 'enum.c', line 1940 static VALUE enum_each_cons(VALUE obj, VALUE n) { long size = NUM2LONG(n); NODE *memo; if (size <= 0) rb_raise(rb_eArgError, "invalid size"); RETURN_SIZED_ENUMERATOR(obj, 1, &n, enum_each_cons_size); memo = NEW_MEMO(rb_ary_new2(size), 0, size); rb_block_call(obj, id_each, 0, 0, each_cons_i, (VALUE)memo); return Qnil; } |