listas bidimensionales arreglos array ruby syntax

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]