Array#insert: simpler (and faster) implementation; ref #2107

This commit is contained in:
Yukihiro "Matz" Matsumoto
2014-04-23 00:25:50 +09:00
parent a48e0018fd
commit 68027317b0
+3 -11
View File
@@ -504,17 +504,9 @@ class Array
# a.insert(2, 99) #=> ["a", "b", 99, "c", "d"]
# a.insert(-2, 1, 2, 3) #=> ["a", "b", 99, "c", 1, 2, 3, "d"]
def insert(idx, *obj)
def insert(idx, *args)
idx += self.size + 1 if idx < 0
ary = []
before_ary = self[0, idx]
after_ary = self[idx, self.size]
before_ary.each {|val| ary << val} unless before_ary == nil
while ary.size < idx
ary << nil
end
obj.each {|val| ary << val} unless obj == nil
after_ary.each {|val| ary << val} unless after_ary == nil
self.replace(ary)
self[idx, 0] = args
self
end
end