Dans CoffeeScript, comment ajouter une valeur à un tableau?

98

Quelle est la manière prescrite d'ajouter une valeur à un tableau dans CoffeeScript? J'ai vérifié le livre PragProg CoffeeScript, mais il ne traite que de la création, du découpage et de l'épissage, et de l'itération, mais pas de l'ajout.

Dave Sag
la source

Réponses:

49

Il est préférable d’utiliser la compréhension de liste.

Par exemple plutôt que ceci:

things = []
for x in list
  things.push x.color

faites ceci à la place:

things = (x.color for x in list)
suranyami
la source
23
Cela n'ajoute pas les valeurs de la liste aux choses. Cela remplace entièrement le tableau des choses. Je viens de le tester aussi.
ajsie
Eh bien, bien sûr ajsie, vous avez raison, il le remplace, pas l'ajout. Le fait est, cependant, que généralement, lorsque vous poussez, vous faites souvent quelque chose comme une compréhension de tableau de toute façon. Pas dans tous les cas, certes, mais la plupart du temps.
suranyami
3
@suranyami Au contraire, je ne peux penser à aucune bonne utilisation de cela. Je préfère things = listde loin le faire , c'est beaucoup plus succinct.
Michael Dorst
@suranyami Le lien est mort.
derekdreery
@anthropomorphic Eh bien, bien sûr. C'est un exemple artificiel. Disons que c'est quelque chose comme ça à la place: colors = (item.color for item in list)
suranyami
2

Si vous chaînez des appels, vous souhaitez que l'ajout renvoie le tableau plutôt que sa longueur. Dans ce cas, vous pouvez utiliser .concat ([newElement])

Doit être [newElement] car concat attend un tableau comme celui auquel il concatène. Pas efficace mais a l'air cool dans le bon cadre.

École Paul
la source
Le chaînage des appels est plus une chose élégante que vous pouvez faire cependant, comme vous l'avez déclaré "la méthode n'est pas efficace" - concatretourne un nouveau tableau construit à partir des éléments du tableau A + tableau B. Les références aux objets sont conservées afin que les modifications apportées à un objet référencé dans le tableau A, le tableau B ou le résultat de concat seront également reflétés dans les autres tableaux.
SidOfc