[Feature:trunk] enhancement of Array#drop

e$B$3$s$K$A$O!"$J$+$`$ie(B(e$B$&e(B)e$B$G$9!#e(B

Rubye$B$G%9%/%j%W%H$r=q$$$F$$$F!“G[Ns$+$i!”$"$k>r7o$K9gCW$9$k@he(B
e$BF,$NMWAG$N$_$r:o=|$9$k!"$H$$$&=hM}$r=q$-$?$$>lLL$K=P2q$C$?$3e(B
e$B$H$,2?EY$+$"$j$^$9!#e(B

e$BL5>r7o$G@hF,$NMWAG$r:o=|$9$k%a%=%C%I$H$7$F$Oe(Bshifte$B$^$?$Oe(Bdrop(1)
e$B$,$"$j!"$^$?!">r7o$K9gCW$7$?A4$F$NMWAG$r:o=|$9$k%a%=%C%I$H$7e(B
e$B$F$Oe(Bdeletee$B$,$"$j$^$9$,!"$"$k>r7o$K9gCW$9$k@hF,$NMWAG$N$_$r:oe(B
e$B=|$7$h$&$H$9$k$H!"0U30$HJ#;($J5-=R$K$J$C$F$7$^$$$^$9!#e(B


e$B$H$$$&OC$re(BIRCe$B$G$7$F$_$?$H$3$m!"$J$+$@$5$s$K!Ve(Bdrope$B$K%V%m%Ce(B
e$B%/0z?t$rDI2C$9$k$N$O$I$&$+!W$H8@$o$l$^$7$?!#e(B

e$BNce(B:
[:a, :b, :a, :b].drop(1){|e| e == :b} #=> [:a, :a, :b]
[:a, :b, :a, :b].drop(2){|e| e == :b} #=> [:a, :a]

e$B$5$i$K!"Bhe(B2e$B0z?t$,;XDj$5$l$?>l9g$O!“e(B{|e| e ===
e$BBhe(B2e$B0z?te(B} e$B$H$_$Je(B
e$B$9$h$&$K$9$l$P$5$i$KJXMx!”$H$b8@$o$l$^$7$?!#e(B

e$BNce(B:
[:a, :b, :a, :b].drop(1, :b) #=> [:a, :a, :b]

e$B;d$H$7$F$O$3$N;EMM$,<B8=$5$l$k$HBgJQJXMx$H;W$&$N$G$9$,!"$$$+e(B
e$B$,$G$7$g$&$+!#e(B

e$B$J$*!"$J$+$@$5$s$,Nc$N$4$H$/4{$K%Q%C%A$r;}$C$F$$$^$9!#e(B

e$B$=$l$G$O!#e(B

e$B$^$D$b$He(B e$B$f$-$R$m$G$9e(B

In message “Re: [ruby-dev:38493] [Feature:trunk] enhancement of
Array#drop”
on Tue, 19 May 2009 15:58:46 +0900, “U.Nakamura”
[email protected] writes:

|Rubye$B$G%9%/%j%W%H$r=q$$$F$$$F!“G[Ns$+$i!”$"$k>r7o$K9gCW$9$k@he(B
|e$BF,$NMWAG$N$$r:o=|$9$k!“$H$$$&=hM}$r=q$-$?$$>lLL$K=P2q$C$?$3e(B
|e$B$H$,2?EY$+$”$j$^$9!#e(B
|
|e$BL5>r7o$G@hF,$NMWAG$r:o=|$9$k%a%=%C%I$H$7$F$Oe(Bshifte$B$^$?$Oe(Bdrop(1)
|e$B$,$“$j!”$^$?!“>r7o$K9gCW$7$?A4$F$NMWAG$r:o=|$9$k%a%=%C%I$H$7e(B
|e$B$F$Oe(Bdeletee$B$,$”$j$^$9$,!“$”$k>r7o$K9gCW$9$k@hF,$NMWAG$N$
$r:oe(B
|e$B=|$7$h$&$H$9$k$H!“0U30$HJ#;($J5-=R$K$J$C$F$7$^$$$^$9!#e(B
|
|… e$B$H$$$&OC$re(BIRCe$B$G$7$F$_$?$H$3$m!”$J$+$@$5$s$K!Ve(Bdrope$B$K%V%m%Ce(B
|e$B%/0z?t$rDI2C$9$k$N$O$I$&$+!W$H8@$o$l$^$7$?!#e(B

drop_whilee$B$H$O0c$&$N$G$9$M!#e(B

|e$B;d$H$7$F$O$3$N;EMM$,<B8=$5$l$k$HBgJQJXMx$H;W$&$N$G$9$,!"$$$+e(B
|e$B$,$G$7$g$&$+!#e(B

drop_whilee$B$K@hF,$$$/$D$^$G$H$$$&0z?t$rDI2C$9$k$H$$$&9M$(J}$be(B
e$B$“$j$^$9$M!#$?$@$7!”$3$N>l9g$Oe(B

|e$B$5$i$K!"Bhe(B2e$B0z?t$,;XDj$5$l$?>l9g$O!“e(B{|e| e === e$BBhe(B2e$B0z?te(B} e$B$H$_$Je(B
|e$B$9$h$&$K$9$l$P$5$i$KJXMx!”$H$b8@$o$l$^$7$?!#e(B

e$B$,<+A3$K<B8=$G$-$^$;$s$,!#e(B

e$B$3$s$K$A$O!"$J$+$`$ie(B(e$B$&e(B)e$B$G$9!#e(B

In message “[ruby-dev:38495] Re: [Feature:trunk] enhancement of
Array#drop”
on May.19,2009 16:20:07, [email protected] wrote:
| |Rubye$B$G%9%/%j%W%H$r=q$$$F$$$F!“G[Ns$+$i!”$"$k>r7o$K9gCW$9$k@he(B
| |e$BF,$NMWAG$N$$r:o=|$9$k!“$H$$$&=hM}$r=q$-$?$$>lLL$K=P2q$C$?$3e(B
| |e$B$H$,2?EY$+$”$j$^$9!#e(B
| |
| |e$BL5>r7o$G@hF,$NMWAG$r:o=|$9$k%a%=%C%I$H$7$F$Oe(Bshifte$B$^$?$Oe(Bdrop(1)
| |e$B$,$“$j!”$^$?!“>r7o$K9gCW$7$?A4$F$NMWAG$r:o=|$9$k%a%=%C%I$H$7e(B
| |e$B$F$Oe(Bdeletee$B$,$”$j$^$9$,!“$”$k>r7o$K9gCW$9$k@hF,$NMWAG$N$
$r:oe(B
| |e$B=|$7$h$&$H$9$k$H!“0U30$HJ#;($J5-=R$K$J$C$F$7$^$$$^$9!#e(B
| |
| |… e$B$H$$$&OC$re(BIRCe$B$G$7$F$_$?$H$3$m!”$J$+$@$5$s$K!Ve(Bdrope$B$K%V%m%Ce(B
| |e$B%/0z?t$rDI2C$9$k$N$O$I$&$+!W$H8@$o$l$^$7$?!#e(B
|
| drop_whilee$B$H$O0c$&$N$G$9$M!#e(B

e$B;d$,40c$$$7$F$J$1$l$P!“e(Bdrop_whilee$B$O!V$”$k>r7o$K9gCW$9$kMWAGe(B
e$B$h$jA0$NMWAG$rA4$F:o=|$9$k!W$G$9$+$i!";d$,M_$7$$J
$H$O0c$&$he(B
e$B$&$G$9!#e(B
e$BLa$jCM$dBP>]L$H/8+;~$NNc30$NM-L5$J$I$rL5;k$9$l$P!";d$,M_$7$$e(B
e$BJ*$Oe(B ary.delete_at(ary.index(elem)) e$B$H=q$1$^$9!#e(B

e$B$=$l$G$O!#e(B

In article [email protected],
Yukihiro M. [email protected] writes:

[:a, :b, :a, :b].drop(1){|e| e == :b} #=> [:a, :a, :b]
[:a, :b, :a, :b].drop(2){|e| e == :b} #=> [:a, :a]

e$B$@$=$&$G$9$+$i!"$3$l$O!V0z?t$G;XDj$7$?HO0OFb$G>r7o$rK~$?$9MWe(B
e$BAG$r:o=|$9$k!W%a%=%C%I$K$J$C$F$$$^$9!#$&$5$5$s$N$[$7$$$b$N$Oe(B
e$B$3$C$A$J$s$G$9$+!)e(B

e$B$3$l$O!"e(B

drop one element which equals :b
drop two elements which equals :b

e$B$HFI$`$s$8$c$J$$$G$9$+$M$'!#e(B

e$B$*$=$i$/!#e(B

e$B$^$D$b$He(B e$B$f$-$R$m$G$9e(B

In message “Re: [ruby-dev:38500] Re: [Feature:trunk] enhancement of
Array#drop”
on Wed, 20 May 2009 00:06:19 +0900, “U.Nakamura”
[email protected] writes:

|| drop_whilee$B$H$O0c$&$N$G$9$M!#e(B
|
|e$B;d$,40c$$$7$F$J$1$l$P!“e(Bdrop_whilee$B$O!V$”$k>r7o$K9gCW$9$kMWAGe(B
|e$B$h$jA0$NMWAG$rA4$F:o=|$9$k!W$G$9$+$i!";d$,M_$7$$J
$H$O0c$&$he(B
|e$B$&$G$9!#e(B

e$B0c$$$^$9!#e(Bdrop_whilee$B$O!V$"$k>r7o$K9gCW$9$k4V!"MWAG$r@hF,$+$ie(B
e$B:o=|$9$k!W$G$9!#e(BRDoce$B$+$iNcBj$r0zMQ$9$k$He(B

a = [1, 2, 3, 4, 5, 0]
a.drop_while {|i| i < 3 }   # => [3, 4, 5, 0]

e$B$G$9!#$3$l$O!"$&$5$5$s$,:G=i$K=q$$$?e(B

Rubye$B$G%9%/%j%W%H$r=q$$$F$$$F!“G[Ns$+$i!”$“$k>r7o$K9gCW$9$k@he(B
e$BF,$NMWAG$N$_$r:o=|$9$k!”$H$$$&=hM}$r=q$-$?$$>lLL$K=P2q$C$?$3e(B
e$B$H$,2?EY$+$"$j$^$9!#e(B

e$B$H$$$&I=8=$K$O9gCW$9$k$H;W$$$^$7$?!#$@$+$i$3$=!"$o$6$o$6e(B
e$B!Ve(Bdrop_while e$B$H$O0c$&$N$G$9$M!W$HJ9$$$?$o$1$G!#e(B

e$B$?$@!"$J$+$@$5$s$,:n$C$?%Q%C%A$N5sF0$,e(B

[:a, :b, :a, :b].drop(1){|e| e == :b} #=> [:a, :a, :b]
[:a, :b, :a, :b].drop(2){|e| e == :b} #=> [:a, :a]

e$B$@$=$&$G$9$+$i!"$3$l$O!V0z?t$G;XDj$7$?HO0OFb$G>r7o$rK~$?$9MWe(B
e$BAG$r:o=|$9$k!W%a%=%C%I$K$J$C$F$$$^$9!#$&$5$5$s$N$[$7$$$b$N$Oe(B
e$B$3$C$A$J$s$G$9$+!)e(B

e$B$=$&$$$&%a%=%C%I$,B8:_$7$F$O$$$1$J$$$H$O8@$$$^$;$s$,!"$@$H$7e(B
e$B$F$b!"e(Bdrope$B$N3HD%$H$7$F$OH?BP$7$^$9!#e(B

  • e$B$^$:%V%m%C%/$rM?$($J$$>l9g$HM?$($?>l9g$G0z?t$N0UL#$,$^$Ce(B
    e$B$?$/0[$J$ke(B(e$BM?$($J$$>l9g$O:o=|$9$kMWAG?t!"M?$($k>l9g$O8!e(B
    e$B:w$9$kHO0Oe(B)

  • drope$B$@$1$=$N$h$&$J%K!<%:$,FC$K9b$$$H$O$K$o$+$K?.$8$i$l$Je(B
    e$B$$!#$d$k$J$i!"$`$7$m!"HO0O$r@)8B$9$k%U%#%k%?$H$J$k$h$&$Je(B
    Enumerator e$B$rJV$9%a%=%C%I$rMQ0U$7$F!"e(B

    ary.xxx(0,1).delete(elem)

    e$B$N$h$&$JBP1~$r$9$Y$-$G$O$J$$$+e(B(xxxe$B$N$H$3$m$K$Oe(Blense$B$H$+e(B
    filtere$B$H$+E,Ev$Ke(B)e$B!#e(B

e$B7k6I!"$&$5$5$s$NK\Ev$K$[$7$$$b$N$,$J$s$J$N$+$h$/$o$+$i$J$$$Ge(B
e$B$$$^$9!#$J$+$@$5$s$,:n$C$?$H$$$&%Q%C%A$O$&$5$5$s$N$[$7$$$b$Ne(B
e$B$NCfESH>C<$J0lHL2=$N$h$&$K$b$_$($^$9!#e(B

|e$BLa$jCM$dBP>]L$H/8+;~$NNc30$NM-L5$J$I$rL5;k$9$l$P!";d$,M_$7$$e(B
|e$BJ*$Oe(B ary.delete_at(ary.index(elem)) e$B$H=q$1$^$9!#e(B

e$B!)!)e(B

e$B$G$b!"$3$l$@$H$R$H$D$7$+<h$j=|$1$^$;$s$,!#$$$d!"BT$F$h!#!V$“e(B
e$B$k>r7o$K9gCW$9$k@hF,$NMWAG$N$_!W$C$F$N$O!V@hF,$+$i>r7o$rK~$?e(B
e$B$9MWAG$r$9$Y$F:o=|$9$k!We(Bdrop_whilee$B$H$O0c$C$F!”!V@hF,$8$c$J$/e(B
e$B$F$b$$$$$+$i>r7o$rK~$?$9:G=i$N$R$H$D$@$1:o=|$9$k!W$C$F$3$H$Ge(B
e$B$9$+!)e(B

e$B$b$7$+$7$F!"$=$&$$$&$3$H!)e(B e$B5$$E$/$N$,CY$$!)e(B

e$B$=$l$J$i!“$[$7$$$b$N$O$$7$m!V:G=i$N$R$H$D$7$+:o=|$7$J$$e(B deletee$B!W$J$s$8$c$J$$$G$9$+!)e(B delete_firste$B$H$+e(Bdelete_oncee$B$H$+e(B e$B$J$s$H$+!#$$7$me(Bdeletee$B$,$R$H$DMWAG$r:o=|$7$F!“e(Bdelete_alle$B$,A4e(B
e$B:o=|$G$”$k$Y$-$@$C$?$h$&$J5$$b$7$^$9$,!”$A$g$C$H<jCY$l$J46$8e(B
e$B$,$7$^$9$M!#e(B

e$B$$$:$l$K$7$F$bCfED%Q%C%A$NF3F~$O;?@.$7$^$;$s!#e(B

                            e$B$^$D$b$He(B e$B$f$-$R$me(B /:|)

e$B%A%1%C%He(B #1492 e$B$,99?7$5$l$^$7$?!#e(B (by Yukihiro M.)

e$B%9%F!<%?%9e(B Opene$B$+$ie(BClosede$B$KJQ99e(B

redundant

http://redmine.ruby-lang.org/issues/show/1492

e$B$^$D$b$He(B e$B$f$-$R$m$G$9e(B

In message “Re: [ruby-dev:38505] Re: [Feature:trunk] enhancement of
Array#drop”
on Wed, 20 May 2009 01:19:11 +0900, Tanaka A. [email protected]
writes:

|>> [:a, :b, :a, :b].drop(1){|e| e == :b} #=> [:a, :a, :b]
|>> [:a, :b, :a, :b].drop(2){|e| e == :b} #=> [:a, :a]
|>
|> e$B$@$=$&$G$9$+$i!"$3$l$O!V0z?t$G;XDj$7$?HO0OFb$G>r7o$rK~$?$9MWe(B
|> e$BAG$r:o=|$9$k!W%a%=%C%I$K$J$C$F$$$^$9!#$&$5$5$s$N$[$7$$$b$N$Oe(B
|> e$B$3$C$A$J$s$G$9$+!)e(B
|
|e$B$3$l$O!"e(B
|
| drop one element which equals :b
| drop two elements which equals :b
|
|e$B$HFI$`$s$8$c$J$$$G$9$+$M$'!#e(B

e$B$$!#$=$s$JFI$_J}$,!#e(B

e$B$=$C$A$NJ}$,0UL#$O$“$j$=$&$G$9$M!#$”$s$^$j;?@.$8$c$J$$$N$OJQe(B
e$B$o$i$J$$$s$G$9$,!#e(B