Мне сложно понять, что делают методы сдвига и смещения класса Array в Ruby. Может ли кто-нибудь помочь мне понять, что они делают?
Что делает Ruby Array # shift?
Ответ 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]
.
Подробнее здесь.