如何在 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 中显式返回对象的主要内容,如果未能解决你的问题,请参考以下文章