27 votes

Comment initialiser un tableau en une seule étape en utilisant Ruby?

J'initialise un tableau de cette façon:

 array = Array.new
array << '1' << '2' << '3'
 

Est-il possible de le faire en une seule étape? Si c'est le cas, comment?

81voto

Phrogz Points 112337

Comme d'autres l'ont noté, vous pouvez utiliser un littéral de tableau:

array = [ '1', '2', '3' ]

Vous pouvez également, pour votre exemple, l'utilisation d'une gamme:

array = ('1'..'3').to_a  # parentheses are required
# or
array = *('1'..'3')      # parentheses not required, but included for clarity

Pour les tableaux de beaucoup d'espace délimité par des cordes, le plus simple est de cette notation:

array = %w[ 1 2 3 ]

En général, vous pouvez passer d'un bloc à un Tableau.nouvelle et l'utiliser pour déterminer la valeur de chaque entrée sera:

array = Array.new(3){ |i| (i+1).to_s }

Enfin, bien que cela ne produit pas le même tableau de trois cordes que les autres réponses ci-dessus, notez également que vous pouvez utiliser des agents recenseurs en Ruby 1.8.7+ pour créer des tableaux; par exemple:

array = 1.step(17,3).to_a
#=> [1, 4, 7, 10, 13, 16]

4voto

Andrew Grimm Points 22996

Pour prouver Il y a plus d'un Six façons de le faire:

 plus_1 = 1.method(:+)
Array.new(3, &plus_1) # => [1, 2, 3]
 

Si la méthode 1. (: +) n'était pas possible, vous pourriez aussi faire

 plus_1 = Proc.new {|n| n + 1}
Array.new(3, &plus_1) # => [1, 2, 3]
 

Bien sûr, c'est exagéré dans ce scénario, mais si plus_1 était une expression vraiment longue, vous voudrez peut-être la mettre sur une ligne distincte de la création du tableau.

3voto

John Douthat Points 28189

Si vous avez un tableau de chaînes, vous pouvez également l'initialiser comme ceci:

array = %w{1 2 3}

il suffit de séparer chaque élément avec n'importe quel espace

3voto

RameshVel Points 24472

Avec les réponses ci-dessus, vous pouvez également le faire

     =>  [*'1'.."5"]   #remember *
    => ["1", "2", "3", "4", "5"]
 

2voto

Reese Moore Points 6213

Pour créer un tel tableau, vous pouvez faire:

 array = ['1', '2', '3']
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X