有没有办法不使用CoffeeScript返回的东西?
看起来CoffeeScript自动返回范围中的最后一个项目。 我可以避免这个function吗?
你不得不明确地返回任何东西,或者让函数底部的expression式评估为undefined:
fun = -> doSomething() return
要么:
fun = -> doSomething() undefined
在使用理解时,这是文档build议的内容:
要小心的是,在这些情况下,你不会意外返回理解的结果,在函数的底部 添加一个有意义的返回值 – 比如true或null。
不过,你可以写一个这样的包装:
voidFun = (fun) -> -> fun(arguments...) return
(注意这里的splat操作符 ( ...
))
在定义函数时使用它:
fun = voidFun -> doSomething() doSomethingElse()
或者像这样:
fun = voidFun(-> doSomething() doSomethingElse() )
是的, return
作为函数的最后一行。
例如,
answer = () -> 42 extrovert = (question) -> answer() introvert = (question) -> x = answer() # contemplate about the answer x return
如果您想查看咖啡编译的内容,请尝试http://bit.ly/1enKdRl 。 (我用coffeescript redux为例)
只是有趣的(ctional)
suppressed = _.compose Function.prototype, -> 'do your stuff'
Function.prototype
本身是一个总是不返回的函数。 你可以使用compose来将你的返回值传递给这个黑洞,而组合的函数将永远不会返回任何东西。
longRunningFunctionWithNullReturn = -> longRunningFunction() null
看来CoffeeScript中的函数必须总是返回一些东西,甚至是null
。 在C中,你有void
作为返回types。 ->
,空函数编译为(function() {})
,所以它是唯一不返回任何东西的函数。