更多coffeescript数组分配

更多coffeescript数组分配,coffeescript,Coffeescript,我有以下数组分配: advances = if advance == 0 then [advance] else [advance, (0 - advance)] 我想知道是否有一种更具咖啡脚本风格的方法可以做到这一点?您可能正在考虑列表理解,但我无法想象如何在这里使用它们。我相信使用下划线.js(或其他一些提供集合实用程序的库)会获得更好的结果: 关于: advances = [advance] advances.push (0 - advance) if advance != 0 我认为

我有以下数组分配:

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

我想知道是否有一种更具咖啡脚本风格的方法可以做到这一点?

您可能正在考虑列表理解,但我无法想象如何在这里使用它们。我相信使用下划线.js(或其他一些提供集合实用程序的库)会获得更好的结果:

关于:

advances = [advance]
advances.push (0 - advance) if advance != 0
我认为这更具可读性。但我想这是品味的问题。 它还使用了coffee脚本的nice if-at-end特性,这使诸如“条件数组增长”之类的语句更具可读性(至少对我而言)

PS:我还将
==0
更改为
!=0
以避免使用
除非
语句。读代码的时候我很困惑


PPS:不要为了它而把所有的东西都放在一行上(即使是咖啡脚本也很擅长)。始终考虑最可读(且性能最好)的代码。

我认为您自己的建议非常好。它简单、清晰、功能纯正

如果你认为尽量减少标点符号是咖啡脚本的一部分,那么你可以去掉括号

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

我想如果你真的想说,你可以说
,而不是
=
。这两个词的意思都是说,许多人避免使用“是”这个词,而使用普通的旧词。这样,您与大多数开发人员更加兼容。我也更喜欢使用
if object then x else y
(JavaScript对
”的魔术检查,未定义,false,null,0
),这在很多地方都可以正常工作。我不确定
是否正确,除非
是个问题,否则我真的喜欢它。另外,使用
is
有助于阅读:)
advances.push(0-advance),除非advance为0
不,我不喜欢这种方式。无论如何,要告诉我的同事关于咖啡剧本已经很难了。并为非常常见的事物添加新词,如
==
如果
只是打开了地狱之门是的,你说得有道理。不管怎么说,这不是一个真正的问题,你的答案是很好的。我把问题中的同一段代码分成四行,实际上比我和你在答案中提出的更清晰、更可读。
advances = if advance == 0 then [advance] else [advance, 0 - advance]