from _The Ruby Programming Language_ : In Ruby 1.9, the selection methods described previously are augmented by first, take, drop, take_while, and drop_while. first returns the first element of an Enumerable object, or, given an integer argument n, an array containing the first n elements. take and drop expect an integer argument.take behaves just like first; it returns an array of the first n elements of the Enumerable receiver object. drop does the opposite; it returns an array of all elements of the Enumerable except for the first n: p (1..5).first(2) # => [1,2] p (1..5).take(3) # => [1,2,3] p (1..5).drop(3) # => [4,5] So it looks like it's acting exactly as defined. I think the behavior your expecting is delete arr = [1,2,3] arr.delete(1) # => 1 arr # => [2, 3] On Jul 19, 2008, at 11:28 AM, Robert Dober wrote: > Is it just me, or is there general confusion? > > First of all #drop is not receiver modifying as is e.g. shift. > > 507/7 > ruby1.9 -e 'x=[1,2,3];x.drop(1);p x' > [1, 2, 3] > > And then drop (n) is not returning the first n elements of an array > but all but the first n > > 512/12 > ruby1.9 -e 'p [1,2,3].drop(1)' > [2, 3] > > thus the workaround implementation of 1.8.7.pred would rather be: > class Array > def drop n; self[n..-1] end > end > > HTH > Robert > -- > http://ruby-smalltalk.blogspot.com/ > > --- > AALST (n.) One who changes his name to be further to the front > D.Adams; The Meaning of LIFF >