Comment passer deux fonctions anonymes comme arguments dans CoffeScript?

Je souhaite passer deux fonctions anonymes comme arguments pour le vol stationnaire de jQuery, de la manière suivante:

$('element').hover( function() { // do stuff on mouseover }, function() { // do stuff on mouseout } ); 

C'est facile avec un seul – hover -> – mais quelle est la syntaxe appropriée dans CoffeeScript pour deux? J'ai essayé ...hover -> , ...hover( ->... , etc. mais rien ne m'invite à la structure ci-dessus.

Mettez des parenthèses autour des fonctions anonymes.

Je pense que le problème consiste à utiliser des commentaires en ligne unique // . Les commentaires en ligne se trouvant dans /* .. */ semblent fonctionner correctement. Voici un exemple équivalent avec quelque chose d'autre qu'un commentaire.

 $('element').hover( -> console.log("first") -> console.log("second") ) 

Ou avec des commentaires utilisant /* .. */ .

 $('element').hover( -> /* first */ -> /* second */ ) 

Vous pouvez essayer ces exemples sous l'onglet Try CoffeeScript . CoffeeScript ajoute une déclaration pour renvoyer la dernière expression de la fonction. Si vous vouliez des fonctions bare-bones qui ne font rien et ne contiennent pas de return à la fin, essayez:

 $('element').hover( () -> () -> ) // $('element').hover(function() {}, function() {}); 

Une autre façon consiste à utiliser la barre oblique inverse après la fonction d'appelant, la virgule devrait être indentée correctement.

 $('element').hover \ -> # do stuff on mouseover , -> # do stuff on mouseout 

Sans parenthèse ou avec une barre oblique inverse :

 f -> 0 , -> 1 

Sortie sur 1.7.1:

 f(function() { return 0; }, function() { return 1; });