0

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

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”参数通过回调提供结果。这需要被理解跳过,因为客户端不提供此回调(服务器这样做是为了可以对结果进行编码和写入以返回给客户端)。[-1..-1]我的问题是理解为此输入了值“未定义”,因此我必须使用笨拙的语法将未定义替换为我的回调。我宁愿跳过它并调用argValues.push cb.

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

4

1 回答 1

1

有一个when子句可以与循环一起使用,但精美的手册仅在某些示例中包含它。when允许您在执行循环体之前对循环变量应用条件。

如果你想跳过param不在的 sargs

for param in paramNames when param !of args
    args[param]
于 2014-04-18T16:33:46.833 回答