【问题标题】:How to return object explicitly in CoffeeScript如何在 CoffeeScript 中显式返回对象
【发布时间】:2011-06-21 21:54:55
【问题描述】:

这行得通:

myfunc = () ->
    id: 3
    name: 'myname'

但我想明确说明返回对象。

myfunc = () ->
    return
        id: 3
        name: 'myname'

但我收到“意外的'INDENT'”错误。上面的代码有什么问题?

【问题讨论】:

  • 你最好不要显式地返回它,因为咖啡脚本总是隐式地返回东西。明确地这样做不仅是多余的,而且可能会诱使读者相信它会有所作为,并且没有明确返回值的函数会像在 JS 中一样返回 undefined
  • @flyingsheep “不仅是多余的,而且可能会诱使读者相信它会有所作为”这是一个关键点,适用于许多不同的地方。
  • 你不应该假设每个人都是白痴。有经验的 CoffeeScript 用户经常使用显式的返回语句。就个人而言,我只对以单个表达式作为主体的函数使用隐式返回,这是一种流行的方法。不使用语言特性是因为你假设人们会被一些基本的东西弄糊涂,这是一些真正糟糕的代码的秘诀。

标签: coffeescript


【解决方案1】:

我认为最好的方法是

myFunc = ->
  return (
    id: 3
    name: 'myname'
  )

因为它符合函数式编程的哲学。

【讨论】:

    【解决方案2】:

    前面的答案都是正确的。这也有效:

    myFunc = () -> 
        {
            id: 3
            name: 'myname'
        }
    

    【讨论】:

      【解决方案3】:
      myFunc = ->
        return {
          id   : 3
          name : 'myname'
        }
      
      myFunc = ->
        return {} =
          id   : 3
          name : 'myname'
      
      myFunc = ->
        # return
        id   : 3
        name : 'myname'
      

      【讨论】:

      • 我特别是。像最后一个;-)
      • 是的,第三个很棒/很搞笑
      • 我喜欢第二个。
      【解决方案4】:

      您应该将返回值放在同一行或将其包装在() 中:

      myFunc = () ->
        return id:3, name:'myname'
      
      myFunc = () ->
        return (
          id: 3
          name: 'myname'
        )
      

      【讨论】:

        猜你喜欢
        • 2012-08-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-11-10
        • 2012-12-29
        • 1970-01-01
        • 1970-01-01
        • 2011-11-17
        相关资源
        最近更新 更多