Что делает Ruby's Array # shift? - PullRequest
       0

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

80 голосов
/ 15 сентября 2010

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

Ответы [ 5 ]

89 голосов
/ 15 сентября 2010

Просмотр документации Ruby

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"] 
48 голосов
/ 15 сентября 2010

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]
8 голосов
/ 15 сентября 2010

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

2 голосов
/ 15 сентября 2010

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

1 голос
/ 15 сентября 2010

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

Таким образом, смещение [1,2,3,4,5]

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

More здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...