Array#insert: simpler (and faster) implementation; ref #2107
authorYukihiro "Matz" Matsumoto <[email protected]>
Tue, 22 Apr 2014 15:25:50 +0000 (23 00:25 +0900)
committerYukihiro "Matz" Matsumoto <[email protected]>
Tue, 22 Apr 2014 15:25:50 +0000 (23 00:25 +0900)
mrbgems/mruby-array-ext/mrblib/array.rb

index df7635e..49d0db0 100644 (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