mirror of
https://github.com/ruby/ruby.git
synced 2025-08-15 13:39:04 +02:00
Fix Enumerable#each_cons
and Enumerable#each_slice
to return a receiver
Co-authored-by: Takashi Kokubun <takashikkbn@gmail.com> Co-authored-by: Nobuyoshi Nakada <nobu@ruby-lang.org>
This commit is contained in:
parent
aa09c8dae0
commit
dfb47bbd17
Notes:
git
2021-10-25 12:14:06 +09:00
Merged: https://github.com/ruby/ruby/pull/1509 Merged-By: nobu <nobu@ruby-lang.org>
4 changed files with 14 additions and 10 deletions
12
enum.c
12
enum.c
|
@ -2961,11 +2961,11 @@ enum_each_slice_size(VALUE obj, VALUE args, VALUE eobj)
|
|||
|
||||
/*
|
||||
* call-seq:
|
||||
* each_slice(n) { ... } -> nil
|
||||
* each_slice(n) { ... } -> self
|
||||
* each_slice(n) -> enumerator
|
||||
*
|
||||
* Calls the block with each successive disjoint +n+-tuple of elements;
|
||||
* returns +nil+:
|
||||
* returns +self+:
|
||||
*
|
||||
* a = []
|
||||
* (1..10).each_slice(3) {|tuple| a.push(tuple) } # => nil
|
||||
|
@ -2997,7 +2997,7 @@ enum_each_slice(VALUE obj, VALUE n)
|
|||
ary = memo->v1;
|
||||
if (RARRAY_LEN(ary) > 0) rb_yield(ary);
|
||||
|
||||
return Qnil;
|
||||
return obj;
|
||||
}
|
||||
|
||||
static VALUE
|
||||
|
@ -3040,11 +3040,11 @@ enum_each_cons_size(VALUE obj, VALUE args, VALUE eobj)
|
|||
|
||||
/*
|
||||
* call-seq:
|
||||
* each_cons(n) { ... } -> nil
|
||||
* each_cons(n) { ... } -> self
|
||||
* each_cons(n) -> enumerator
|
||||
*
|
||||
* Calls the block with each successive overlapped +n+-tuple of elements;
|
||||
* returns +nil+:
|
||||
* returns +self+:
|
||||
*
|
||||
* a = []
|
||||
* (1..5).each_cons(3) {|element| a.push(element) } # => nil
|
||||
|
@ -3072,7 +3072,7 @@ enum_each_cons(VALUE obj, VALUE n)
|
|||
memo = MEMO_NEW(rb_ary_new2(size), dont_recycle_block_arg(arity), size);
|
||||
rb_block_call(obj, id_each, 0, 0, each_cons_i, (VALUE)memo);
|
||||
|
||||
return Qnil;
|
||||
return obj;
|
||||
}
|
||||
|
||||
static VALUE
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue