CoffeeScript'te bir Array'e nasıl değer eklersiniz?


98

CoffeeScript'te bir Array'e değer eklemenin öngörülen yolu nedir? PragProg CoffeeScript kitabını kontrol ettim ama sadece oluşturma, dilimleme ve ekleme ve yinelemeyi tartışıyor, eklemeyi değil.

Yanıtlar:



49

Çok daha iyisi, liste anlayışlarını kullanmaktır.

Örneğin bunun yerine:

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

bunun yerine şunu yapın:

things = (x.color for x in list)

23
Bu, listeden şeylere değer eklemez. Bu, things dizisini tamamen değiştirir. Ben de test ettim.
ajsie

Tabii ajsie, haklısın, onun yerini alır, ekleme değil. Ancak asıl mesele şu ki, genellikle zorladığınızda, yine de genellikle bir dizi anlayışı gibi bir şey yapıyorsunuz . Kuşkusuz her durumda değil, ama çoğu zaman.
suranyami

3
@suranyami Aksine, bunun için iyi bir kullanım düşünemiyorum. Sadece yapmayı tercih ederim things = list, çok daha kısa ve öz.
Michael Dorst

@suranyami Bağlantı öldü.
derekdreery

@antropomorfik Tabii ki. Bu uydurma bir örnek. Bunun yerine bunun gibi bir şey olduğunu varsayalım: colors = (item.color for item in list)
suranyami

2

Çağrıları zincirliyorsanız, eklentinin diziyi uzunluğu yerine döndürmesini istersiniz. Bu durumda .concat ([newElement]) kullanabilirsiniz.

Concat, bitiştirildiği gibi bir dizi beklediği için [newElement] olmalıdır. Verimli değil, ancak doğru ortamda harika görünüyor.


Çağrıları zincirleme, daha şık bir şeydir, ancak "yöntem verimli değildir" dediğin gibi - concatA + dizisi B dizisinin öğelerinden oluşturulmuş yeni bir dizi döndürür. A dizisinde, dizi B'de veya concat sonucu diğer dizilere de yansıtılır.
SidOfc
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.