Jak w CoffeeScript dodać wartość do tablicy?

98

Jaki jest zalecany sposób dołączania wartości do tablicy w CoffeeScript? Sprawdziłem książkę PragProg CoffeeScript, ale omawia ona tylko tworzenie, cięcie i splicing oraz iterację, ale nie dołączanie.

Dave Sag
źródło

Odpowiedzi:

49

O wiele lepiej jest używać list składanych.

Na przykład zamiast tego:

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

zrób to zamiast tego:

things = (x.color for x in list)
suranyami
źródło
23
To nie dodaje wartości z listy do rzeczy. To całkowicie zastępuje tablicę rzeczy. Właśnie to przetestowałem.
ajsie
Cóż, jasne ajsie, masz rację, zastępuje go, a nie dodaje. Chodzi jednak o to, że zwykle kiedy pchasz, i tak często robisz coś podobnego do zrozumienia tablicowego. Trzeba przyznać, że nie we wszystkich przypadkach, ale często.
suranyami
3
@suranyami Wręcz przeciwnie, nie przychodzi mi do głowy żaden dobry użytek z tego. Wolałbym po prostu to zrobić things = list, jest o wiele bardziej zwięzły.
Michael Dorst
@suranyami Link nie działa.
derekdreery
@anthropomorphic Cóż, oczywiście. To wymyślony przykład. Powiedzmy, że to coś takiego: colors = (item.color for item in list)
suranyami
2

Jeśli łączysz wywołania w łańcuch, chcesz, aby append zwrócił tablicę, a nie jej długość. W tym przypadku możesz użyć .concat ([newElement])

Musi być [newElement], ponieważ concat oczekuje tablicy, takiej jak ta, do której dokonuje konkatenacji. Nie wydajne, ale wygląda fajnie w odpowiednim ustawieniu.

Paul Schooling
źródło
Łączenie wywołań jest bardziej stylową rzeczą, którą możesz zrobić, ponieważ stwierdziłeś, że metoda nie jest wydajna - concatzwraca nową tablicę zbudowaną z elementów tablicy A + tablica B. Odniesienia do obiektów są zachowywane, więc zmiany w obiekcie, do którego się odwołuje w każdej tablicy A, tablicy B lub wyniku konkatowania zostaną również odzwierciedlone w innych tablicach.
SidOfc