【问题标题】:Is there a more concise Coffeescript idiom for this?有没有更简洁的 Coffeescript 成语呢?
【发布时间】: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。

标签: javascript coffeescript idioms


【解决方案1】:

怎么样

if error
    foo()
else
    bar()

(可能是with a trailing return

【讨论】:

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

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

return foo() if error

【讨论】:

    【解决方案3】:

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

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

    return (foo(); null) if error
    

    【讨论】:

    • 这就是我想要的。但是也许过于简洁了?你觉得它的可读性差吗?
    猜你喜欢
    • 1970-01-01
    • 2021-04-21
    • 2022-08-19
    • 2014-11-05
    • 2012-09-12
    • 2018-10-28
    • 2023-03-08
    • 2011-04-04
    • 2012-06-30
    相关资源
    最近更新 更多