较短的理解语法是否需要范围作为源?

时间:2015-06-23 00:36:24

标签: javascript arrays coffeescript list-comprehension

我想创建一个初始化为全零的数组,其长度与另一个数组相同。我听说不推荐new Array(baz.length),因为数组构造函数不明确。 (参见this answer)无论如何,因为CoffeeScript具有漂亮的数组理解能力!例如,这有效:

foo = (0 for i in baz)

这是可读和简洁的,我很高兴。 (Hooray CoffeeScript!)但在这种情况下我真的不需要当前的迭代值。我只需要baz中每个元素的元素。 CoffeeScript documentation声明

  

如果您不需要当前的迭代值,可以省略它:

     

browser.closeCurrentTab() for [0...count]

所以我应该可以说

foo = (0 for baz)

但是我在编译器中遇到unexpected )错误。奇怪的是,更复杂的版本确实有效:

foo = (0 for [0...(baz.length)])

来自文档的此规则是否仅适用于具有范围作为来源的理解?这个任务有更清洁的选择吗?

1 个答案:

答案 0 :(得分:0)

我实际上认为new Array baz.length是写它的最简洁方式。由于baz.length总是一个数字,所以不会出现歧义。

我倾向于同意你的观点,但文档暗示0 for baz应该有效。可能值得一个错误报告?