2012-12-14 40 views
0

我有以下數組賦值:更多的CoffeeScript數組賦值

advances = if advance == 0 then [advance] else [advance, (0 - advance)] 

我不知道是否有這樣做的更CoffeeScript的方式嗎?

+1

我想你可以說'is',而不是''==如果你真的想要。他們都意味着'===' – asawyer

+1

許多人避免使用'is'並使用普通的老式'=='。這樣你就可以與大多數開發人員更加兼容。我還傾向於使用'if then then x else y'(JavaScript對''「,undefined,false,null,0'進行魔術檢查),這在很多地方都能正常工作。 – Juve

回答

0

我認爲你自己的建議非常好。它很簡單,清晰且功能齊全。

,如果你認爲減少標點符號的CoffeeScript的方式的一部分,那麼你可以刪除括號

advances = if advance == 0 then [advance] else [advance, 0 - advance] 
0

您可能在考慮列表解析,但我無法想象如何在這裏使用它們。我相信你會得到利用underscore.js更好的結果(或一些其他圖書館提供集合工具類):

advances = _.uniq([advance, (0 - advance)]) 

http://underscorejs.org/#uniq

1

什麼:

advances = [advance] 
advances.push (0 - advance) if advance != 0 

我覺得這是一個有點更具可讀性。但我想這是一個品味的問題。 它還使用了咖啡腳本的很好的if-end-end功能,這使得像這種「有條件的數組增長」這樣的語句更具可讀性(至少對我而言)。

PS:我也將== 0更改爲!= 0以避免unless聲明。閱讀代碼時,它讓我感到困惑。

PPS:不要把所有東西都放在一條線上(即使咖啡劇本擅長)。總是想到最可讀的(和良好的)代碼。

+1

我不確定'除非'是個問題,我其實很喜歡。另外,使用'is'有助於閱讀:) 'advance.push(0 - advance)除非advance是0' –

+0

不,我不喜歡那種方式。無論如何,很難告訴我的同事咖啡劇本。爲'=='和'if'這些非常常見的東西添加新單詞就會打開地獄之門。 ;) – Juve

+0

是的,你在這裏有一個點。無論如何,這並不是一個真正的問題,你的回答很好。 –