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.