Что делает Ruby Array # shift?

Мне сложно понять, что делают методы сдвига и смещения класса Array в Ruby. Может ли кто-нибудь помочь мне понять, что они делают?

Ответ 1

Глядя на Ruby Documentation

Array.shift удаляет первый элемент из массива и возвращает его

a = [1,2,3] 
puts a.shift
 => 1 
puts a
 => [2, 3] 

Unshift добавляет предоставленное значение к фронту массива, перемещая все остальные элементы на один

a=%w[b c d]
 => ["b", "c", "d"] 
a.unshift("a")
 => ["a", "b", "c", "d"] 

Ответ 2

shift и unshift действует так же, как pop и push: они предназначены для использования массивов в виде стеков, к которым вы можете добавлять и удалять элементы (обычно один за раз). Разница заключается только в том, что shift и unshift добавить/удалить элементы в начале Array, фактически переместив все остальные элементы, а pop и push добавить/удалить элементы в конце Array, поэтому сохраняем индексы других элементов.

Примеры:

                      # Spacing for clarity:
a = [2, 4, 8]    # a =>       [2, 4, 8]
a.push(16, 32)   # a =>       [2, 4, 8, 16, 32]
a.unshift(0, 1)  # a => [0, 1, 2, 4, 8, 16, 32]
a.shift          # a =>    [1, 2, 4, 8, 16, 32]
a.pop            # a =>    [1, 2, 4, 8, 16]

Ответ 3

Он захватывает первый элемент, удаляет его из массива и возвращает удаленный элемент. Это в основном способ обработки массива вроде стека: shift - pop, unshift - push.

Ответ 4

Если вы можете думать о том, что массив похож на очередь значений, подлежащих обработке, вы можете взять следующее (переднее) значение и "сдвинуть" другую оценку, чтобы занять свободное пространство. unshift возвращает значения обратно - возможно, вы не готовы обработать некоторые из них или разрешите их использовать более поздний код.

Ответ 5

Он возвращает первый элемент массива и удаляет его из массива, перемещая элементы обратно на одно место.

Итак, смещение [1,2,3,4,5]

возвращает 1 и устанавливает массив как [2,3,4,5].

Подробнее здесь.