Comment écrire cela dans coffeescript?
f = (function(){
// something
})();
Merci pour tous les conseils :)
Bien que vous puissiez simplement utiliser des parenthèses (par exemple, (-> foo)()
, vous pouvez les éviter en utilisant le mot clé do
:
do f = -> console.log 'this runs right away'
L'utilisation la plus courante de do
est la capture de variables dans une boucle. Par exemple,
for x in [1..3]
do (x) ->
setTimeout (-> console.log x), 1
Sans la do
, vous imprimeriez simplement la valeur de x
après la boucle 3 fois.
Si vous voulez "aliaser" les arguments passés à la fonction d'auto-invocation dans CoffeeScript, et disons que c'est ce que vous essayez d'atteindre:
(function ( global, doc ) {
// your code in local scope goes here
})( window, document );
Alors, do (window, document) ->
ne vous laissera pas faire cela. Le chemin à parcourir est avec parens alors:
(( global, doc ) ->
# your code here
)( window, document )
c'est ridicule facile dans le café:
do ->
reviendra
(function() {})();
Vous pouvez également combiner le mot clé do
avec les paramètres de fonction par défaut pour créer des "fonctions auto-initiantes" récursives avec une valeur initiale. Exemple:
do recursivelyPrint = (a=0) ->
console.log a
setTimeout (-> recursivelyPrint a + 1), 1000
essayez d'utiliser
do ($ = jQuery) ->
do ->
#your stuff here
Cela créera une fermeture à exécution automatique, ce qui est utile pour la portée.
Toutes mes excuses, je l'ai résolu:
f = (
() -> "something"
)()
CA devrait etre
f = () ->
# do something