diff options
| author | Jun Hiroe <[email protected]> | 2013-07-01 23:34:56 +0900 |
|---|---|---|
| committer | Jun Hiroe <[email protected]> | 2013-07-01 23:53:03 +0900 |
| commit | 2f8e9b474f41d1fe72cbdc626fc990f2a7544a9e (patch) | |
| tree | 9bb9855efac108838550c910dcbf10d7f4fa3684 /src | |
| parent | 997c073627c32e292b36a488b8e9711daa6e4592 (diff) | |
| download | mruby-2f8e9b474f41d1fe72cbdc626fc990f2a7544a9e.tar.gz mruby-2f8e9b474f41d1fe72cbdc626fc990f2a7544a9e.zip | |
Refactor mrb_ary_equal() func in array.c.
Diffstat (limited to 'src')
| -rw-r--r-- | src/array.c | 35 |
1 files changed, 11 insertions, 24 deletions
diff --git a/src/array.c b/src/array.c index 92359b033..a22730776 100644 --- a/src/array.c +++ b/src/array.c @@ -1056,39 +1056,26 @@ static mrb_value mrb_ary_equal(mrb_state *mrb, mrb_value ary1) { mrb_value ary2; - mrb_bool equal_p; + mrb_int i; mrb_get_args(mrb, "o", &ary2); - if (mrb_obj_equal(mrb, ary1, ary2)) { - equal_p = 1; - } - else if (mrb_special_const_p(ary2)) { - equal_p = 0; - } - else if (!mrb_array_p(ary2)) { + if (mrb_obj_equal(mrb, ary1, ary2)) return mrb_true_value(); + if (mrb_special_const_p(ary2)) return mrb_false_value(); + if (!mrb_array_p(ary2)) { if (!mrb_respond_to(mrb, ary2, mrb_intern2(mrb, "to_ary", 6))) { - equal_p = 0; + return mrb_false_value(); } else { - equal_p = mrb_equal(mrb, ary2, ary1); + return mrb_bool_value(mrb_equal(mrb, ary2, ary1)); } } - else if (RARRAY_LEN(ary1) != RARRAY_LEN(ary2)) { - equal_p = 0; - } - else { - mrb_int i; - - equal_p = 1; - for (i=0; i<RARRAY_LEN(ary1); i++) { - if (!mrb_equal(mrb, ary_elt(ary1, i), ary_elt(ary2, i))) { - equal_p = 0; - break; - } + if (RARRAY_LEN(ary1) != RARRAY_LEN(ary2)) return mrb_false_value(); + for (i=0; i<RARRAY_LEN(ary1); i++) { + if (!mrb_equal(mrb, ary_elt(ary1, i), ary_elt(ary2, i))) { + return mrb_false_value(); } } - - return mrb_bool_value(equal_p); + return mrb_true_value(); } /* 15.2.12.5.34 (x) */ |
