# [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