Coffeescript后缀运算符与else

时间:2014-09-15 17:48:06

标签: coffeescript

我试图尽可能地把事情写得很好和语义,但是我遇到了一个问题,我不确定如何简洁地表达自己。我在节点的回调中执行以下操作:

    res.send(500, { error: err }) if err?
    res.send(resource) if resource?
    res.send 404
    return

然而,我把头部已经发送错误扔到了所有地方...理想情况下我想做的事情如下:

    res.send(500, { error: err }) if err? else
        res.send(resource) if resource? else
            res.send 404
    return

   res.send(500, { error: err }) if err?
   else res.send(resource) if resource?
   else res.send 404

我可以保持简洁易懂的地方。遗憾的是,这会导致编译器爆炸。因此,不幸的是,我遇到了类似的问题:

    if err?
        res.send 500, error: err
    else 
        if resource
            res.send resource
        else
            res.send 404

对我来说咖啡没有感觉,我几乎可以写正常的javascript。

所以我很感激能帮助我找到一种更好的方式来以更漂亮的方式做这样的逻辑树的人。

1 个答案:

答案 0 :(得分:1)

考虑一下你在做什么。最终,您的目标是根据一系列规则发送内容:错误,成功或未找到。 Coffeescriptly,我最终写了:

res.send.apply null, if err then [500, {error: err}] else if resource then [resource] else [404]

不可否认,这有点长,但这就是我们拥有IDE的目的。

[编辑]

r = if err then [500, {error: err}] else if resource then [resource] else [404]
res.send.apply null, r

在那里,现在两行都少于80个字符。