Estoy trabajando en un libro que da ejemplos de rangos que se convierten en matrices equivalentes utilizando sus métodos "to_a"
Cuando ejecuto el código en irb me sale la siguiente advertencia
warning: default `to_a' will be obsolete
¿Cuál es la alternativa correcta al uso de to_a?
¿Hay formas alternativas de llenar una matriz con un rango?
Respuestas:
Puede crear una matriz con un rango usando splat,
utilizando el
Kernel
Array
método,o usando to_a
fuente
order = 1
? Entoncesorder << (2.25).to_a
. Pero esto crea otra matriz dentro de la matriz, simplemente quiero el rango de 2 a 25. Sin embargo, si lo intentoorder << (2.25)
, obtengo el error no puede convertir el rango en entero.concat
lugar de<<
. Además, no debería estar obteniendo "no se puede convertir el rango en entero" a menos queorder
sea un entero, en cuyo caso estaría cambiando de bit, no agregando matriz.(1..10).to_a
para compatibilidad con versiones anteriores[*1..10]
.Esto funciona para mí en irb:
Me doy cuenta de que:
¿Entonces quizás te estás perdiendo los paréntesis?
(Estoy ejecutando Ruby 1.8.6 patchlevel 114)
fuente
Fixnum.methods.include?(to_a)
en ruby 1.9.2, notará que el método to_a ya no está definido, de ahí que recibiera ese mensaje de depreciación en 08Fixnum.instance_methods.include?(:to_a)
methods.include?
es más informativo:$ irb
irb(main):001:0> Fixnum.methods.include?(to_a)
(irb):1: warning: default
to_a 'será obsoleto=> false
irb(main):002:0> Fixnum.instance_methods.include?(:to_a)
=> false
to_a
advertencia en la primera forma. Es porque está llamando,to_a
enself
realidad no está verificando sito_a
es un método de Fixnum. Intenta llamarto_a
solo y verás la misma advertencia.Parece que estás haciendo esto:
La advertencia es de Fixnum # to_a, no de Range # to_a. Intenta esto en su lugar:
fuente
Mira esto:
fuente
Esta es otra forma:
fuente
Solo intenté usar rangos de mayor a menor cantidad y obtuve el resultado que no esperaba:
Eso se debe a las implementaciones de rangos.
Entonces tuve que usar la siguiente opción:
fuente
5.downto(1).to_a
cuál es otra forma de expresar un rango decreciente stackoverflow.com/a/8927009/703903