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

Does the shorter comprehension syntax require a range as a source?

本文关键字:一个 范围 语法 是否      更新时间:2023-09-26

我想创建一个初始化为全零的数组,其长度与另一个数组相同。我听说不推荐使用new Array(baz.length),因为数组构造函数不明确。(看这个答案)没关系,因为CoffeeScript有漂亮的数组理解!例如,这是有效的:

foo = (0 for i in baz)

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

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

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

所以我应该可以说

foo = (0 for baz)

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

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

文档中的此规则是否仅适用于以范围为源的理解?这项任务有更清洁的选择吗?

实际上,我认为new Array baz.length是写它的最简单的方法。不可能出现歧义,因为baz.length永远是一个数字。

我倾向于同意您的观点,尽管文档暗示0 for baz应该起作用。可能值得一份错误报告?