Es scheint, als würde CoffeeScript automatisch das letzte Element in einem Bereich zurückgeben. Kann ich diese Funktionalität vermeiden?
Es scheint, als würde CoffeeScript automatisch das letzte Element in einem Bereich zurückgeben. Kann ich diese Funktionalität vermeiden?
Antworten:
Sie müssen explizit nichts zurückgeben oder einen Ausdruck, der ausgewertet wird, am Ende Ihrer Funktion undefiniert lassen:
fun = ->
doSomething()
return
Oder:
fun = ->
doSomething()
undefined
Dies ist, was der Arzt empfiehlt, wenn er Verständnis verwendet:
Stellen Sie sicher, dass Sie in diesen Fällen nicht versehentlich die Ergebnisse des Verständnisses zurückgeben, indem Sie am Ende Ihrer Funktion einen aussagekräftigen Rückgabewert - wie true - oder null hinzufügen .
Sie könnten jedoch einen Wrapper wie folgt schreiben:
voidFun = (fun) ->
->
fun(arguments...)
return
(Beachten Sie den Splat-Operator hier ( ...))
Und verwenden Sie es so, wenn Sie Funktionen definieren:
fun = voidFun ->
doSomething()
doSomethingElse()
Oder so:
fun = voidFun(->
doSomething()
doSomethingElse()
)
returnsollen . Das Hinzufügen scheint mir jedoch aus irgendeinem Grund falsch zu sein. Habe ich Recht, wenn ich davon ausgehe, dass es die schlechteste Wahl unter den dreien ist? undefinednullnull
undfinedam Ende zu belassen. Die Verwendung einer leeren returnAnweisung scheint die Rückgabe nichts Besseres auszudrücken als das Verlassen einer undefinedam Ende der Funktion, daher returnscheint die leere die bessere Option zu sein.
fun(arguments...)wäre es besser anzurufen fun.apply(this, arguments).
Ja, mit a returnals letzte Zeile einer Funktion.
Beispielsweise,
answer = () ->
42
extrovert = (question) ->
answer()
introvert = (question) ->
x = answer()
# contemplate about the answer x
return
Wenn Sie sehen möchten, wozu der Kaffee kompiliert wird, versuchen Sie es mit http://bit.ly/1enKdRl . (Ich habe Coffeescript Redux für mein Beispiel verwendet)
Nur etwas Spaß (ctional)
suppressed = _.compose Function.prototype, -> 'do your stuff'
Function.prototypeselbst ist eine Funktion, die immer nichts zurückgibt. Sie können compose verwenden, um Ihren Rückgabewert in dieses Blackhole zu leiten, und die komponierte Funktion gibt niemals etwas zurück.
Es scheint, dass Funktionen in CoffeeScript immer etwas zurückgeben müssen, auch nicht null. In C haben Sie voidals Rückgabetyp.
->, die leere Funktion, wird kompiliert und (function() {})ist daher die einzige Funktion, die nichts zurückgibt.
return;funktioniert in C, JavaScript und CoffeeScript, um einen ungültigen Wert zurückzugeben.