From: TOYOFUKU Chikanobu Date: 2008-03-17T20:56:49+09:00 Subject: [ruby-dev:34074] Re: Array#take,take_while,drop,drop_whlie 豊福です。 take と drop という言葉につられてついコードを見てしまった。 In message "Re: [ruby-dev:34067] Array#take,take_while,drop,drop_whlie" on Sun, 16 Mar 2008 14:53:41 +0900, "Yusuke ENDOH" writes: > +rb_ary_take(VALUE obj, VALUE n) > +{ > + return rb_ary_subseq(obj, 0, FIX2LONG(n)); > +} ... > +rb_ary_take_while(VALUE ary) > +{ ... > + result = rb_ary_new2(RARRAY_LEN(ary)); > + for (i = 0; i < RARRAY_LEN(ary); i++) { > + if (!RTEST(rb_yield(RARRAY_PTR(ary)[i]))) break; > + rb_ary_push(result, rb_ary_elt(ary, i)); > + } rb_ary_take_while が rb_ary_take のように rb_ary_subseq を 使っていないのはどうしてなんですか? ところで enum.c の enum_drop は - args[0] = rb_ary_new2(args[1]); + args[0] = rb_ary_new(); ですか。 ---