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?
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.