CoffeeScriptはスコープ内の最後のアイテムを自動的に返すようです。この機能を回避できますか?
明示的に何も返さないか、関数の下部で未評価に評価される式を残す必要があります。
fun = ->
doSomething()
return
または:
fun = ->
doSomething()
undefined
これは、内包表記を使用するときにドキュメントが推奨するものです。
これらの場合、意味のある戻り値を追加することにより、理解の結果を誤って返さないように注意してください— true —またはnull、関数の一番下に。
ただし、次のようなラッパーを作成できます。
voidFun = (fun) ->
->
fun(arguments...)
return
( splat operator here(...
))
そして、関数を定義するときに次のように使用します。
fun = voidFun ->
doSomething()
doSomethingElse()
またはこのように:
fun = voidFun(->
doSomething()
doSomethingElse()
)
はい、関数の最終行としてreturn
を使用します。
例えば、
answer = () ->
42
extrovert = (question) ->
answer()
introvert = (question) ->
x = answer()
# contemplate about the answer x
return
コーヒーがどのjsにコンパイルされるかを確認するには、 http://bit.ly/1enKdRl を試してください。 (私の例ではcoffeescript reduxを使用しました)
ただ何か楽しい(ctional)
suppressed = _.compose Function.prototype, -> 'do your stuff'
Function.prototype
自体は、常に何も返さない関数です。 composeを使用して戻り値をこのブラックホールにパイプすると、composed関数は何も返しません。
longRunningFunctionWithNullReturn = ->
longRunningFunction()
null
CoffeeScriptの関数は、null
であっても常に何かを返さなければならないようです。 Cでは、戻り型としてvoid
があります。 ->
(空の関数)は(function() {})
にコンパイルされるため、何も返さない唯一の関数です。