Obtener todos los elementos de un array menos el primero

Hola, supongamos que tengo un array tal que:

a = [“aaa”,“bbb”,“ccc”]

¿Qué método de Array puedo usar para obtener un array igual pero sin
el primer elemento?
He encontrado “fetch” pero no me sirve pues lo que hace es quitar el
primer elemento (definitivamente modifica el array) y devuelve dicho
elemento (y yo quiero precisamente el resto).

Claro que puedo hacer chapucillas pero seguro que hay algo más
elegante. He probado con lo típico:

a[1…XXX]

pero no veo qué puedo poner en vez de XXX para que coja los elementos
hasta el final.

PD: Justo justo ahora he encontrado que esto fucniona:

a[1…-1]

aunque no es muy muy bonito, ¿no?

Gracias.

El día 11/03/08, Iñaki Baz C. [email protected] escribió:

Hola, supongamos que tengo un array tal que:

a = [“aaa”,“bbb”,“ccc”]

¿Qué método de Array puedo usar para obtener un array igual pero sin
el primer elemento?

a.shift
http://www.ruby-doc.org/core/classes/Array.html#M002193

2008/3/11, Jaime I. [email protected]:

¿Qué método de Array puedo usar para obtener un array igual pero sin
el primer elemento?

a.shift
class Array - RDoc Documentation

Perdón, cuando hablé de que había probado “fetch” en realidad me
refería a “shift”, y no me sirve porque lo que hace es quitar el
primer elemento (definitivamente modifica el array) y devuelve dicho
elemento (y yo quiero precisamente el resto).

2008/3/11, Xavier N. [email protected]:

a[1…-1]

Sí, justo al final de mi correo inicial ya he puesto que había
encontrado esa forma, pero me preguntaba si había alguna más “bonita”
XD

On Mar 11, 2008, at 14:50 , Iñaki Baz C. wrote:

Claro que puedo hacer chapucillas pero seguro que hay algo más
elegante. He probado con lo típico:

a[1…XXX]

pero no veo qué puedo poner en vez de XXX para que coja los elementos
hasta el final.

a[1…-1]

On Mar 11, 2008, at 15:29 , Iñaki Baz C. wrote:

a[1…-1]

Sí, justo al final de mi correo inicial ya he puesto que había
encontrado esa forma, pero me preguntaba si había alguna más “bonita”
XD

Ouch, disculpa Iñaki al ver lo del “a[1…XXX]” no pense que hubiera
mas sobre eso y respondi demasiado rapido.

En Lisp existe (rest a) por ejemplo, pero en Ruby no hay nada mucho
mejor que a[1…-1] de fabrica.

Facets ofrece tail:

irb(main):002:0> require 'facets'
=> true
irb(main):003:0> [1,2,3].tail
=> [2, 3]

Y en versiones recientes de Rails tienes como shortcut mas cercano

a.from(1)

– fxn

El 11/03/08, Xavier N. [email protected] escribió:

Y en versiones recientes de Rails tienes como shortcut mas cercano

a.from(1)

Gracias. De momento es para un programita en Ruby a secas y prefiero
no sobrecargarlo con más librerías y clases, tiraré de [1…-1].

También me he dado cuenta de que para quitar los dos primeros
elementos de un Array hay que hacer:

Array[2…-1]

Qué raro…

Gracias.

El Martes, 11 de Marzo de 2008, Daniel R.
Troitiño escribió:> > También me he dado cuenta de que para quitar los dos primeros

elementos de un Array hay que hacer:

Array[2…-1]

Qué raro…

Por lo que array[1…-1] le estás pidiendo a Ruby que te devuelva todos
los elementos entre el segundo (índice 1) y el último (índice 1 desde
el final, es decir, -1). array[2…-1] sería desde el tercer elemento
al último y array[2…-2] desde el tercer elemento al penúltimo.

Vale, entendido, me había liado porque creo recordar que en algún otro
lenguaje no se usaba “-1” para referirse al último elemento del array…
creo…

Gracias.

2008/3/11 Iñaki Baz C. [email protected]:

Array[2…-1]

Qué raro…

Gracias.


Iñaki Baz C.
[email protected]

¿Raro?.. para nada, una vez que lo entiendes.

La sintaxis array[x…y] hace una rodaja (slice) del array y te lo
devuelve como un nuevo array. La x indica el comienzo (incluido) y la
y el final (también incluido).

El primer elemento del array es el 0, el segundo el 1 y el tercero el
2… pero desde el final el -1 es el último, el -2 el penultimo y
asi…

Por lo que array[1…-1] le estás pidiendo a Ruby que te devuelva todos
los elementos entre el segundo (índice 1) y el último (índice 1 desde
el final, es decir, -1). array[2…-1] sería desde el tercer elemento
al último y array[2…-2] desde el tercer elemento al penúltimo.

Bai.