Comment initialiser un tableau en une seule étape à l'aide de 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 oui, comment?
- +1 juste pour le roman d'une seule ligne répété à pousser. 🙂
- légèrement plus courte:
array = Array.new << 1 << 2 << 3
😉 - Qui crée un tableau de Fixnums au lieu d'un tableau de chaînes de caractères.
- je voulais juste mentionner qu'il peut même être plus courte. Vous avez juste à changer
1
à'1'
.
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser un littéral de tableau:
Vous pouvez également utiliser une gamme:
Pour les tableaux des espaces délimités par des chaînes, vous pouvez utiliser Pour cent syntaxe de la Chaîne de:
Vous pouvez également passer d'un bloc à
Array.new
pour déterminer la valeur de chaque entrée sera: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:
to_a
([*'1'..'3']
).Array[ "1","2","3"] #=> ["1","2","3"]
(je ne pense pas que cette méthode n'a rien à voir avec le littéral de tableau constructeur). Vous pouvez également utiliser le haut-niveau du Noyau#Array (nom de la méthode ressemble à un nom de classe)Array(1..5) #=> [1,2,3,4,5]
Oneliner:
ou
ou
ou
ou
[1,2,3]
qui ne une seule initialisation. Aussi, le vôtre est plus de caractères. Aussi, vous avez créé un tableau de Fixnums alors que l'OP a une question sur un tableau de chaînes de caractères.Avec les réponses ci-dessus , vous pouvez le faire aussi
>> [*?1..?5] #=> ["1", "2", "3", "4", "5"]
.Pour le prouver Il n'y a Plus De
OnSix Façons De le Faire:Si 1.méthode(:+) n'était pas possible, vous pouvez également faire de
Sûr, c'est exagéré dans ce scénario, mais si
plus_1
était vraiment une expression longue, vous pouvez la mettre sur une ligne distincte de la création de la matrice.Si vous avez un Tableau de chaînes de caractères, vous pouvez également initialiser comme ceci:
array = %w{1 2 3}
juste séparer chaque élément à n'importe quel espace
Pour créer un tableau que vous pouvez faire:
Vous pouvez faire
Comme d'autres l'ont noté, vous pouvez également initialiser un tableau avec des %w notation comme suit:
ou
Veuillez noter que dans les deux cas, chaque élément est une chaîne de caractères, plutôt que d'un nombre entier.
Donc, si vous voulez un tableau dont les éléments sont des entiers, vous ne devriez pas envelopper chaque élément avec des apostrophes:
Aussi, vous n'avez pas besoin de mettre une virgule entre les éléments (ce qui est nécessaire lors de la création d'un tableau sans cette %w notation). Si vous faites ceci (qui je le faisais souvent par erreur), comme dans:
ses éléments seront trois cordes ---- "1,", "2,", "3". Donc, si vous n':
la sortie sera:
qui n'est pas ce que nous voulons ici.
Espère que cela aide à clarifier le point!
Vous pouvez initialiser un tableau en une seule étape par écrit les éléments de la
[]
comme ceci:Vous pouvez simplement le faire avec
%w
notation en ruby tableaux.Il va ajouter de la matrice des valeurs 1,2,3 à la arrayand imprimer la sortie comme
["1", "2", "3"]