bidimensionales - Forma correcta de poblar una matriz con un rango en Ruby
arreglos en ruby (6)
Esta es otra forma:
irb> [* 1..10]
=> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
Estoy trabajando en un libro que da ejemplos de rangos que se convierten a matrices equivalentes utilizando sus métodos "to_a"
Cuando ejecuto el código en irb recibo la siguiente advertencia
warning: default `to_a'' will be obsolete
¿Cuál es la alternativa correcta para usar to_a?
¿Hay formas alternativas de poblar una matriz con un Rango?
Esto funciona para mí en irb:
irb> (1..4).to_a
=> [1, 2, 3, 4]
Noté que:
irb> 1..4.to_a
(irb):1: warning: default `to_a'' will be obsolete
ArgumentError: bad value for range
from (irb):1
Entonces, ¿quizás te estás perdiendo el paréntesis?
(Estoy ejecutando Ruby 1.8.6 patchlevel 114)
Intenté usar rangos de mayor a menor cantidad y obtuve el resultado que no esperaba:
irb(main):007:0> Array(1..5)
=> [1, 2, 3, 4, 5]
irb(main):008:0> Array(5..1)
=> []
Eso es debido a las implementaciones de rangos.
Entonces tuve que usar la siguiente opción:
(1..5).to_a.reverse
Mira esto:
a = [*(1..10), :top, *10.downto( 1 )]
Parece que estás haciendo esto:
0..10.to_a
La advertencia es de Fixnum # a_a, no de Range # to_a. Pruebe esto en su lugar:
(0..10).to_a
Puede crear una matriz con un rango usando splat,
>> a=*(1..10)
=> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
usando el método Kernel
Array
,
Array (1..10)
=> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
o usando to_a
(1..10).to_a
=> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]