From: Corey Haines Date: 2007-08-19T23:38:42+09:00 Subject: Re: Adding to an array question Thanks for the tips, Stefan. I like your tip on doing .dup, as well. Thanks again! -Corey On 8/18/07, Stefan Rusterholz wrote: > Corey Haines wrote: > > I need to add a string to the end of an array count number of times. I > > was wondering if I could get some advice on the prefered way to do it > > in Ruby. > > > > @bucket is the array > > > > > > def add_person(count, name) > > @bucket += Array.new(count, name) > > end > > > > or some other ideas > > > > def add_person(count, name) > > count.times {@bucket << name } > > end > > # or some variation of looping > > > > Personally, I like the adding a new array to the @bucket array. I > > realize (at least I assume) that it creates a temporary Array, but I > > think it is more understandable? > > > > Thoughts? > > Thanks, I'm just learning Ruby > > -Corey > > def add_person(name, count=1) # I assume adding once as a default is > rather safe > @bucket.concat(Array.new(count) {name.dup }) # a) this will create a > new string object everytime > @bucket.concat(Array.new(count, name) # b) this will use the *same* > string object everytime > end > > Use either a) or b). Be aware that with b) if you do e.g. > @bucket.last.upcase!, it will reflect on all slots that contain the same > object. > As to why I prefer this concat solution over array +=: it doesn't create > throw away objects everytime. > > Regards > Stefan > -- > Posted via http://www.ruby-forum.com/. > > -- http://www.coreyhaines.com