我有一个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
。
有没有办法让理解跳过像这样的值?
答案 0 :(得分:1)
您可以在循环中使用when
子句,但the fine manual仅在某些示例中包含它。 when
允许您在循环体执行之前将条件应用于循环变量。
如果您想跳过不在param
中的args
,那么
for param in paramNames when param !of args
args[param]