Array.prototype.splice в Ruby

Друг спросил меня, какой из Ruby лучший и эффективный способ добиться эффекта метода JavaScript splice в Ruby. Это означает отсутствие итераций для самого массива или копий.

«начать с начала индекса, удалить элементы длины и (необязательно) вставить элементы. Наконец, вернуть удаленные элементы в массив». Это вводит в заблуждение, см. Пример JS ниже.

http://www.mennovanslooten.nl/blog/post/41

Быстрый хак, который не имеет необязательного ] замена:

from_index     = 2
for_elements   = 2
sostitute_with = :test
initial_array  = [:a, :c, :h, :g, :t, :m]
# expected result: [:a, :c, :test, :t, :m]
initial_array[0..from_index-1] + [sostitute_with] + initial_array[from_index + for_elements..-1]

Какая у вас? Одна строка лучше.

Обновление:

// JavaScript
var a = ['a', 'c', 'h', 'g', 't', 'm'];
var b = a.splice(2, 2, 'test'); 
> b is now ["h", "g"]
> a is now ["a", "c", "test", "t", "m"]

Мне нужен результирующий массив «a», а не «b».

6
задан kain 31 July 2011 в 22:29
поделиться