Основы Ruby: поп-метод в массиве - PullRequest
5 голосов
/ 07 декабря 2011

Я работаю над изучением Ruby the Hard Way онлайн; Я только что закончил 26-е упражнение, которое было «тестом», в ходе которого вы исправили чей-то сломанный код.

Моя проблема возникла с использованием аргумента с методом pop. Я знаком с основами, но правильный ответ означал изменение аргумента с «-1» на «1», и я не уверен, что это означает, точно.

Строка, о которой идет речь:

def puts_last_word(words)
    word = words.pop(1)
    puts word
end

Я предполагаю, что он извлекает второй элемент из массива, но я хотел бы получить подтверждение или помощь, в зависимости от того, что подходит.

Большое спасибо за чтение!

Ответы [ 2 ]

3 голосов
/ 07 декабря 2011

Лучшее подтверждение можно получить в документации к Array # pop: http://rubydoc.info/stdlib/core/1.9.3/Array:pop

В соответствии с этим, аргумент указывает, сколько элементов, начиная с задней части массива, нужно удалить.

Единственная разница между pop() и pop(1) заключается в том, что первый вернет один элемент (удаленный), а второй вернет массив с одним элементом (опять же, удаленный).

Редактировать: Я полагаю, причина, по которой тест -1 объясняет разницу между доступом к массиву с #[], где -1 будет означать последний элемент, и такими методами, как pop, которые ожидают сумму, а не позицию, в качестве аргумента.

2 голосов
/ 07 декабря 2011

Аргумент указывает, сколько элементов нужно вытолкнуть.Если вы указываете аргумент, он возвращает массив, тогда как без указания аргумента возвращается только элемент:

...