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
KernelArraymé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.concatlugar de<<. Además, no debería estar obteniendo "no se puede convertir el rango en entero" a menos queordersea un entero, en cuyo caso estaría cambiando de bit, no agregando matriz.(1..10).to_apara 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:$ irbirb(main):001:0> Fixnum.methods.include?(to_a)(irb):1: warning: defaultto_a 'será obsoleto=> falseirb(main):002:0> Fixnum.instance_methods.include?(:to_a)=> falseto_aadvertencia en la primera forma. Es porque está llamando,to_aenselfrealidad no está verificando sito_aes un método de Fixnum. Intenta llamarto_asolo 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_acuál es otra forma de expresar un rango decreciente stackoverflow.com/a/8927009/703903