115 votes

Y a-t-il un moyen de ne pas retourner quelque chose en utilisant CoffeeScript?

Il semble que CoffeeScript renvoie automatiquement le dernier élément d'une portée. Puis-je éviter cette fonctionnalité?

149voto

arnaud576875 Points 35281

Vous devez renvoyer explicitement à rien, ou à quitter une expression de l'évaluation à l'indéfini au bas de votre fonction:

fun = ->
    doSomething()
    return

Ou:

fun = ->
    doSomething()
    undefined

C'est ce que le doc recommande, lors de l'utilisation des inclusions:

Être prudent que vous n'êtes pas accidentellement retournant les résultats de la compréhension dans ces cas, en ajoutant un sens de la valeur de retour comme vrai ou null, vers le bas de votre fonction.


Vous pouvez, cependant, écrire un wrapper comme ceci:

voidFun = (fun) ->
    ->
        fun(arguments...)
        return

(Avis de la splat opérateur ici (...))

Et de l'utiliser comme ceci lors de la définition des fonctions:

fun = voidFun ->
    doSomething()
    doSomethingElse()

Ou comme ceci:

fun = voidFun(->
    doSomething()
    doSomethingElse()
)

10voto

gprasant Points 2124

Oui, avec un `` la dernière ligne d’une fonction.

Par exemple,

Si vous souhaitez voir ce que js compile le café, essayez http://bit.ly/1enKdRl. (Pour mon exemple, j’ai utilisé coffeescript redux)

5voto

lightblade Points 1145

Juste quelque chose d'amusant (ctional)

 suppressed = _.compose Function.prototype, -> 'do your stuff'
 

Function.prototype lui-même est une fonction qui ne renvoie toujours rien. Vous pouvez utiliser compos pour diriger votre valeur de retour dans ce trou noir et la fonction composée ne renverra jamais rien.

1voto

yfeldblum Points 42613
longRunningFunctionWithNullReturn = ->
  longRunningFunction()
  null

0voto

L01man Points 695

Il semble que les fonctions dans CoffeeScript doivent toujours renvoyer quelque chose, même null . En C, vous avez void comme type de retour. -> , la fonction vide, compile en (function() {}) , c'est donc la seule fonction qui ne retourne rien.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X