Eu inicializo um array desta maneira:
array = Array.new
array << '1' << '2' << '3'
É possível fazer isso em uma etapa? Se sim, como?
ruby
arrays
initialization
user502052
fonte
fonte
array = Array.new << 1 << 2 << 3
)1
para'1'
.Respostas:
Você pode usar um literal de matriz:
Você também pode usar um intervalo:
Para matrizes de strings delimitadas por espaços em branco, você pode usar a sintaxe de string de porcentagem :
Você também pode passar um bloco para
Array.new
determinar qual será o valor de cada entrada:Finalmente, embora não produza o mesmo array de três strings que as outras respostas acima, observe também que você pode usar enumeradores em Ruby 1.8.7+ para criar arrays; por exemplo:
fonte
to_a
([*'1'..'3']
).Array[ "1","2","3"] #=> ["1","2","3"]
(não acho que esse método tenha algo a ver com o construtor literal de array). Você também pode usar o Kernel # Array de nível superior (o nome do método se parece com um nome de classe)Array(1..5) #=> [1,2,3,4,5]
Oneliner:
ou
ou
ou
ou
fonte
[1,2,3]
fazer uma única inicialização. Além disso, o seu é mais personagens. Além disso, você criou um array de Fixnums enquanto o OP estava perguntando sobre um array de strings.Junto com as respostas acima, você também pode fazer isso
fonte
>> [*?1..?5] #=> ["1", "2", "3", "4", "5"]
.Para provar que há mais de
umseis maneiras de fazer isso:Se 1. método (: +) não fosse possível, você também poderia fazer
Claro, é um exagero neste cenário, mas se
plus_1
for uma expressão muito longa, você pode querer colocá-la em uma linha separada da criação do array.fonte
Você pode fazer
Como outros notaram, você também pode inicializar uma matriz com a notação% w assim:
ou
Observe que em ambos os casos cada elemento é uma string, em vez de um número inteiro. Portanto, se você deseja uma matriz cujos elementos são inteiros, não deve envolver cada elemento com apóstrofos:
Além disso, você não precisa colocar vírgulas entre os elementos (o que é necessário ao criar um array sem esta notação% w). Se você fizer isso (o que eu costumava fazer por engano), como em:
seus elementos serão três strings ---- "1,", "2,", "3". Então, se você:
a saída será:
que não é o que queremos aqui.
Espero que isso ajude a esclarecer o ponto!
fonte
Para criar tal array, você pode fazer:
fonte
Se você tem uma matriz de strings, também pode inicializá-la assim:
array = %w{1 2 3}
apenas separe cada elemento com qualquer espaço em branco
fonte
Você pode inicializar uma matriz em uma etapa escrevendo os elementos
[]
assim:fonte
Você pode simplesmente fazer isso com
%w
notação em matrizes de rubi.Ele adicionará os valores da matriz 1,2,3 à matriz e imprimirá a saída como
["1", "2", "3"]
fonte