有没有更简洁的 Coffeescript 成语呢?

Posted

技术标签:

【中文标题】有没有更简洁的 Coffeescript 成语呢?【英文标题】:Is there a more concise Coffeescript idiom for this? 【发布时间】:2014-11-24 07:50:22 【问题描述】:

我正在尝试翻译这段 javascript 代码:

if(error) 
    foo();
    return null;

bar()

进入 Coffeescript 代码,这里bar() 是另一段我不想缩进的长代码

还有比这更好的方法吗?

if error
    foo()
    return null
bar()

【问题讨论】:

也许你可以展示更多的功能?我怀疑这是一个节点回调,为此需要简化许多模式。 是的,这是 Node 回调的第一个 sn-p,但它如何改变问题?我要求一个通用的方法。否则,你有什么建议? @mattecapu 你期待什么更好的方式? @mattecapu:我建议使用 Promise。或者,取决于 foo 是什么,围绕回调的一些通用高阶包装器。 当然,这是一个可行的选择,但作为咖啡脚本的新手,我想看看如何操作这些表达式。除此之外,无论如何我都会使用 Promise。 【参考方案1】:

怎么样

if error
    foo()
else
    bar()

(可能是with a trailing return

【讨论】:

查看编辑后的答案,这里bar()确实是一段更大的代码 那么真的没有什么更简洁的了(虽然我看不出缩进bar有什么问题)【参考方案2】:

你可以用另一种形式重写它(在符号上略有不同,因为你返回的是 foo() 的结果):

return foo() if error

【讨论】:

【参考方案3】:

您的代码对我来说看起来不错。

不过,如果你真的希望它是单行的,你可以利用括号:

return (foo(); null) if error

【讨论】:

这就是我想要的。但是也许过于简洁了?你觉得它的可读性差吗?

以上是关于有没有更简洁的 Coffeescript 成语呢?的主要内容,如果未能解决你的问题,请参考以下文章

Coffeescript 中等效的 Ruby .times

Coffeescript 中的条件运算符

要关于兔子的神话和传说,成语,动画片,来历都写短一点,简洁一点,不要太多字。

Webstorm 中的 coffeescript-react (.cjsx) 支持

JavaScript ES6箭头函数指南

安全布尔成语 - 我找到了更简单的方法,还是我错过了啥?