[前][次][番号順一覧][スレッド一覧]

ruby-changes:68348

From: Nobuyoshi <ko1@a...>
Date: Sun, 10 Oct 2021 11:46:07 +0900 (JST)
Subject: [ruby-changes:68348] e2017f8c7c (master): Unify iteration arguments

https://git.ruby-lang.org/ruby.git/commit/?id=e2017f8c7c

From e2017f8c7cc2066286ab8047d4de47704f871a28 Mon Sep 17 00:00:00 2001
From: Nobuyoshi Nakada <nobu@r...>
Date: Sun, 10 Oct 2021 11:45:50 +0900
Subject: Unify iteration arguments

---
 range.c | 16 ++--------------
 1 file changed, 2 insertions(+), 14 deletions(-)

diff --git a/range.c b/range.c
index cb86f540d8..96c059b806 100644
--- a/range.c
+++ b/range.c
@@ -463,6 +463,7 @@ range_step(int argc, VALUE *argv, VALUE range) https://github.com/ruby/ruby/blob/trunk/range.c#L463
     }
 
     step = check_step_domain(step);
+    VALUE iter[2] = {INT2FIX(1), step};
 
     if (FIXNUM_P(b) && NIL_P(e) && FIXNUM_P(step)) {
 	long i = FIX2LONG(b), unit = FIX2LONG(step);
@@ -490,10 +491,6 @@ range_step(int argc, VALUE *argv, VALUE range) https://github.com/ruby/ruby/blob/trunk/range.c#L491
 
     }
     else if (SYMBOL_P(b) && (NIL_P(e) || SYMBOL_P(e))) { /* symbols are special */
-	VALUE iter[2];
-	iter[0] = INT2FIX(1);
-	iter[1] = step;
-
 	b = rb_sym2str(b);
 	if (NIL_P(e)) {
 	    rb_str_upto_endless_each(b, sym_step_i, (VALUE)iter);
@@ -522,12 +519,7 @@ range_step(int argc, VALUE *argv, VALUE range) https://github.com/ruby/ruby/blob/trunk/range.c#L519
 	tmp = rb_check_string_type(b);
 
 	if (!NIL_P(tmp)) {
-	    VALUE iter[2];
-
 	    b = tmp;
-	    iter[0] = INT2FIX(1);
-	    iter[1] = step;
-
 	    if (NIL_P(e)) {
 		rb_str_upto_endless_each(b, step_i, (VALUE)iter);
 	    }
@@ -536,15 +528,11 @@ range_step(int argc, VALUE *argv, VALUE range) https://github.com/ruby/ruby/blob/trunk/range.c#L528
 	    }
 	}
 	else {
-	    VALUE args[2];
-
 	    if (!discrete_object_p(b)) {
 		rb_raise(rb_eTypeError, "can't iterate from %s",
 			 rb_obj_classname(b));
 	    }
-	    args[0] = INT2FIX(1);
-	    args[1] = step;
-	    range_each_func(range, step_i, (VALUE)args);
+	    range_each_func(range, step_i, (VALUE)iter);
 	}
     }
     return range;
-- 
cgit v1.2.1


--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]