Inicializo una matriz de esta manera:
array = Array.new
array << '1' << '2' << '3'
¿Es posible hacer eso en un solo paso? ¿Si es así, cómo?
ruby
arrays
initialization
user502052
fuente
fuente
array = Array.new << 1 << 2 << 3
)1
a'1'
.Respuestas:
Puede usar un literal de matriz:
También puede utilizar un rango:
Para matrices de cadenas delimitadas por espacios en blanco, puede usar la sintaxis de cadena de porcentaje :
También puede pasar un bloque a
Array.new
para determinar cuál será el valor de cada entrada:Finalmente, aunque no produce la misma matriz de tres cadenas que las otras respuestas anteriores, tenga en cuenta también que puede usar enumeradores en Ruby 1.8.7+ para crear matrices; por ejemplo:
fuente
to_a
([*'1'..'3']
).Array[ "1","2","3"] #=> ["1","2","3"]
(no creo que este método tenga nada que ver con el constructor literal de matriz). También puede usar el Kernel # Array de nivel superior (el nombre del método parece un nombre de clase)Array(1..5) #=> [1,2,3,4,5]
Un trazador de líneas:
o
o
o
o
fuente
[1,2,3]
que hace una sola inicialización. Además, el tuyo es más personajes. Además, ha creado una matriz de Fixnums mientras que el OP estaba preguntando por una matriz de cadenas.Junto con las respuestas anteriores, también puede hacer esto
fuente
>> [*?1..?5] #=> ["1", "2", "3", "4", "5"]
.Para demostrar que hay más de
unaseis formas de hacerlo:Si 1.método (: +) no fuera posible, también podría hacerlo
Claro, es exagerado en este escenario, pero si
plus_1
fuera una expresión muy larga, es posible que desee ponerla en una línea separada de la creación de la matriz.fuente
Tu puedes hacer
Como han señalado otros, también puede inicializar una matriz con la notación% w así:
o
Tenga en cuenta que en ambos casos cada elemento es una cadena, en lugar de un número entero. Entonces, si desea una matriz cuyos elementos sean números enteros, no debe envolver cada elemento con apóstrofos:
Además, no es necesario poner una coma entre los elementos (lo cual es necesario cuando se crea una matriz sin esta notación% w). Si hace esto (que a menudo hice por error), como en:
sus elementos serán tres cadenas ---- "1,", "2,", "3". Entonces, si lo hace:
la salida será:
que no es lo que queremos aquí.
¡Espero que esto ayude a aclarar el punto!
fuente
Para crear una matriz de este tipo, puede hacer:
fuente
Si tiene una matriz de cadenas, también puede inicializarla así:
array = %w{1 2 3}
simplemente separe cada elemento con cualquier espacio en blanco
fuente
Puede inicializar una matriz en un paso escribiendo los elementos
[]
así:fuente
Simplemente puede hacer esto con
%w
notación en matrices ruby.Agregará los valores de la matriz 1, 2, 3 a la matriz e imprimirá la salida como
["1", "2", "3"]
fuente