I am playing with an example in the ruby cookbook where a shuffle function is added to the array class: class Array def shuffle! each_index do |i| j = rand(length-i) + i self[j], self[i] = self[i], self[j] end end def shuffle dup.shuffle! end end What I don't understand is the line "dup.shuffle!" What is the dup object? Dave.
on 2007-01-16 18:26
on 2007-01-16 18:32
On 1/16/07, David Madden <firstname.lastname@example.org> wrote: > end > dup returns a copy (duplicate) of the object. In the above code, it is used to let you get back a shuffled copy of the Array, without shuffling the original. type: ri Object#dup for more info.
on 2007-01-16 20:17
On 1/16/07, Wilson Bilkovich <email@example.com> wrote: > > self[j], self[i] = self[i], self[j] > > > > What is the dup object? > > > I think a wordier but equivalent way of doing that is: > return self.dup.shuffle! That just means "duplicate myself, shuffle the duplicate, then return it."
on 2007-01-16 20:31
>> > > dup returns a copy (duplicate) of the object. In the above code, it is > used to let you get back a shuffled copy of the Array, without > shuffling the original. > > type: > ri Object#dup > for more info. > Thanks, Dave.