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()
)
return
sollen . 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? undefined
null
null
undfined
am Ende zu belassen. Die Verwendung einer leeren return
Anweisung scheint die Rückgabe nichts Besseres auszudrücken als das Verlassen einer undefined
am Ende der Funktion, daher return
scheint die leere die bessere Option zu sein.
fun(arguments...)
wäre es besser anzurufen fun.apply(this, arguments)
.
Ja, mit a return
als 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.prototype
selbst 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 void
als 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.