如何在 CoffeeScript 中显式返回对象

Posted

技术标签:

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

这行得通:

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

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

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

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

【问题讨论】:

见github.com/jashkenas/coffee-script/issues/1263。 你最好不要显式地返回它,因为咖啡脚本总是隐式地返回东西。明确地这样做不仅是多余的,而且可能会诱使读者相信它会有所作为,并且没有明确返回值的函数会像在 JS 中一样返回 undefined @flyingsheep “不仅是多余的,而且可能会诱使读者相信它会有所作为”这是一个关键点,适用于许多不同的地方。 你不应该假设每个人都是白痴。有经验的 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'
  )

【讨论】:

以上是关于如何在 CoffeeScript 中显式返回对象的主要内容,如果未能解决你的问题,请参考以下文章

如何在使用 IMAPI 创建的 ISO 文件中显式创建目录结构?

JavaScript中显式原型和隐式原型的联系

如何在 Django 中显式重置模板片段缓存?

如何在opencv中显式访问mjpeg后端进行视频捕获

是否需要在C ++析构函数中显式销毁结构中固定大小的数组?

如何在 lapply (R) 中显式定义附加参数