2012-01-06 8 views

Respuesta

90

last toma un argumento:

@numbers = [ 1, 2, 3, 4, 5, 6, 7, 8 ] 
@numbers.last(2) # => [7,8] 

Si desea quitar los dos últimos artículos:

@numbers.pop(2) #=> [7, 8] 
p @numbers #=> [1, 2, 3, 4, 5, 6] 
+0

+1, esto es algo que siempre olvido por alguna razón, aunque se lee mucho más amigable que la versión de índice ... –

+2

Hombre, eso está limpio. Gracias, Ruby. –

+2

Amo a Ruby tanto. – danielricecodes

13

matrices se definen mediante [] no {}. Puede utilizar índices negativos y rangos de hacer lo que quiere:

>> @numbers = [ 1, 2, 3, 4, 5, 6, 7, 8 ] #=> [1, 2, 3, 4, 5, 6, 7, 8] 
>> @numbers.last #=> 8 
>> @numbers[-2..-1] #=> [7, 8] 
+2

No debería ser ed, que va desde el límite negativo ** FAIL **, si la matriz contiene menos de un número dado de elementos, entonces: '@numbers [-9 ..- 1] # => nil', en lugar de devolver el existente 8 elementos. 'last' se comporta mucho mejor en este sentido. '@ numbers.last (9)' devolvería la matriz de 8 elementos. – nightingale

1

Try

@numbers = [ 1, 2, 3, 4, 5, 6, 7, 8 ] 
length = @numbers.length 
@numbers[length - 2..length - 1] => [7, 8] 
Cuestiones relacionadas