Ruby Basics: Pop-methode in array

Ik ben bezig met het online leren van ruby the Hard Way; Ik ben zojuist klaar met de 26e oefening die een "test" was waarbij je de gebroken code van iemand hebt gecorrigeerd.

Mijn probleem kwam met het gebruik van een argument met de pop-methode. Ik ben bekend met de basis, maar het juiste antwoord betekende het veranderen van het argument van "-1" in "1", en ik weet niet zeker wat het precies betekent.

De regel in kwestie is:

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

Ik neem aan dat het het tweede element uit de array tevoorschijn haalt, maar ik wil graag bevestiging of hulp, afhankelijk van wat geschikt is.

Hartelijk dank voor het lezen!

5
Ga er niet vanuit, gebruik ri Array.pop .
toegevoegd de auteur the Tin Man, de bron

2 antwoord

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

Volgens dat geeft het argument aan hoeveel elementen, te rekenen vanaf de achterkant van de array, moeten worden verwijderd.

Het enige verschil tussen pop() en pop (1) is dat de eerste een enkel element retourneert (de verwijderde), terwijl de laatste een array retourneert met een enkel element (nogmaals, de verwijderde).

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.

3
toegevoegd
Uitstekend antwoord, is helemaal logisch. Het was de eerste keer dat ik zoiets had gezien, dus ik was in de war. (Bedankt voor de link naar de documenten, hopelijk zal ik nu de vragen van de stoooopid eruit halen.)
toegevoegd de auteur helipacter, de bron

Het argument geeft aan hoeveel items moeten knallen. Als u een argument opgeeft, wordt een array geretourneerd, terwijl het niet opgeven van een argument alleen het element retourneert:

ruby-1.8.7-p352 :006 > a = [1,2,3]
=> [1, 2, 3] 
ruby-1.8.7-p352 :007 > a.pop(1)
=> [3] 
ruby-1.8.7-p352 :008 > a = [4,5,6]
=> [4, 5, 6] 
ruby-1.8.7-p352 :009 > a.pop(2)
=> [5, 6]
ruby-1.8.7-p352 :010 > a.pop
=> 4 
2
toegevoegd
Bedankt ook voor de hulp! Waardeer het erg!
toegevoegd de auteur helipacter, de bron