Ruby Basics: Pop Method in Array

helipacter picture helipacter · Dec 7, 2011 · Viewed 15.8k times · Source

I'm working my way through Learning Ruby the Hard Way online; I've just finished the 26th exercise which was a "test" whereby you fixed someone's broken code.

My problem came with using an argument with the pop method. I'm familiar with the basics but the correct answer meant changing the argument from "-1" to "1", and I'm not sure what it means, exactly.

The line in question is:

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

I assume it pops the second element from the array but I would like confirmation or help, whichever is appropriate.

Answer

Dominik Honnef picture Dominik Honnef · Dec 7, 2011

The best confirmation can be had in the documentation of Array#pop: http://rubydoc.info/stdlib/core/1.9.3/Array:pop

According to that, the argument specifies how many elements, counting from the back of the array, to remove.

The only difference between pop() and pop(1) is that the former will return a single element (the deleted one), while the latter will return an array with a single element (again, the deleted one).

Edit: I suppose the reason the test used -1 is to teach you about the difference between array access with #[], where -1 would mean the last element, and methods like pop, that expect an amount, not a position, as their argument.