Di CoffeeScript, bagaimana Anda menambahkan nilai ke Array?

98

Apa cara yang ditentukan untuk menambahkan nilai ke Array di CoffeeScript? Saya telah memeriksa buku PragProg CoffeeScript tetapi hanya membahas pembuatan, pemotongan dan penyambungan, dan pengulangan, tetapi tidak menambahkan.

Dave Sag
sumber

Jawaban:

49

Jauh lebih baik adalah menggunakan pemahaman daftar.

Misalnya daripada ini:

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

lakukan ini sebagai gantinya:

things = (x.color for x in list)
suranyami
sumber
23
Itu tidak menambahkan nilai dari daftar ke hal-hal. Itu menggantikan array hal sepenuhnya. Saya baru saja mengujinya juga.
ajsie
Baiklah, ajsie pasti, kamu benar, itu menggantikannya, bukan menambahkan. Intinya adalah, bagaimanapun, biasanya ketika Anda mendorong, Anda sering melakukan sesuatu seperti pemahaman array. Memang tidak semua kasus, tapi sering kali.
suranyami
3
@suranyami Sebaliknya, saya tidak bisa memikirkan manfaat yang baik untuk itu. Saya lebih suka melakukannya things = list, itu jauh lebih ringkas.
Michael Dorst
@suranyami Linknya sudah mati.
derekdreery
@anthropomorphic Nah, tentu saja. Itu adalah contoh yang dibuat-buat. Katakanlah itu sesuatu seperti ini: colors = (item.color for item in list)
suranyami
2

Jika Anda merangkai panggilan maka Anda ingin append mengembalikan larik daripada panjangnya. Dalam hal ini Anda dapat menggunakan .concat ([newElement])

Harus [newElement] karena concat mengharapkan sebuah array seperti yang digabung dengannya. Tidak efisien tetapi terlihat keren dalam pengaturan yang tepat.

Paul Schooling
sumber
Panggilan berantai lebih merupakan gaya yang dapat Anda lakukan, namun, saat Anda menyatakan "metode tidak efisien" - concatmengembalikan array baru yang dibangun dari elemen array A + array B. Referensi ke objek disimpan sehingga perubahan pada objek yang direferensikan baik dalam larik A, larik B, atau hasil concat akan tercermin dalam larik lainnya juga.
SidOfc