2011-12-06 8 views
5

Pracuję przez Naukę Ruby the Hard Way online; Właśnie skończyłem 26 ćwiczenie, które było "testem", dzięki któremu naprawiłeś czyjś zepsuty kod.Ruby Basics: Pop Method in Array

Mój problem przyszedł z wykorzystaniem argumentu z metodą pop. Znam podstawy, ale poprawna odpowiedź oznaczała zmianę argumentu z "-1" na "1" i nie jestem pewien, co to dokładnie znaczy.

Linia w pytaniu:

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

Zakładam, że wyskakuje drugi element z tablicy, ale chciałbym potwierdzenia lub pomocy, w zależności co jest właściwe.

Wielkie dzięki za przeczytanie!

+1

Nie zakładaj, użyj 'ri Array.pop'. –

Odpowiedz

3

Najlepszym potwierdzeniem można było w dokumentacji Array # pop: http://rubydoc.info/stdlib/core/1.9.3/Array:pop

Według że argument określa, jak wiele elementów, licząc od tyłu tablicy, aby usunąć.

Jedyna różnica między pop() i pop(1) polega na tym, że pierwsza z nich zwróci pojedynczy element (usunięty), podczas gdy drugi zwróci tablicę z pojedynczym elementem (ponownie, usunięty).

Edit: Przypuszczam, że powodem testy stosowane -1 jest nauczyć się o różnicę między dostępem tablicy z #[], gdzie -1 oznaczałoby ostatni element, i podobne metody pop, że spodziewa się ilość, a nie pozycja , jako ich argument.

+0

Doskonała odpowiedź, całkowicie ma sens. Po raz pierwszy zobaczyłem coś takiego, więc byłem zdezorientowany. (Dzięki za link do Docsów, mam nadzieję, że teraz rozwiążę teraz te stoooopid pytania.) – helipacter

2

Argument określa liczbę przedmiotów do pop. Jeśli podasz argument, to zwróci tablicę, ale nie podając argumentu zwraca tylko element:

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 
+0

Dziękuję również za pomoc! Naprawdę to doceniam! – helipacter