Coffeescript数组理解跳过值

时间:2014-04-18 15:55:06

标签: javascript node.js coffeescript for-comprehension

我有一个RPC库,我正在移植到coffeescript。它必须做的一件事是重新排序函数调用参数,以确保它们的顺序正确。为此,我编写了一个“数组理解”,如下所示:

argValues = for param in paramNames
                if param of args
                    args[param]
                else if param isnt 'cb'
                    throw new Error "Missing argument for paramater '#{param}' of procedure '#{func}'"
        argValues[-1..-1] = cb

所有远程过程都采用'cb'参数来通过回调提供结果。这需要通过理解来跳过,因为客户端不提供此回调(服务器这样做以便可以编码和编写结果以返回到客户端)。我的问题是理解是为此设置值'undefined',所以我必须使用笨重的[-1..-1]语法用我的回调替换undefined。我宁愿做的是跳过它并致电argValues.push cb

有没有办法让理解跳过像这样的值?

1 个答案:

答案 0 :(得分:1)

您可以在循环中使用when子句,但the fine manual仅在某些示例中包含它。 when允许您在循环体执行之前将条件应用于循环变量。

如果您想跳过不在param中的args,那么

for param in paramNames when param !of args
    args[param]