web-dev-qa-db-ja.com

Coffeescript ---自己開始型の匿名関数を作成する方法は?

これをcoffeescriptで書く方法は?

f = (function(){
   // something
})();

ヒントをありがとう:)

86
user537339

かっこだけを使用できます(例:(-> foo)()doキーワードを使用してそれらを回避できます。

do f = -> console.log 'this runs right away'

doの最も一般的な使用法は、ループで変数をキャプチャすることです。例えば、

for x in [1..3]
  do (x) ->
    setTimeout (-> console.log x), 1

doがなければ、ループの後にxの値を3回出力するだけです。

160
Trevor Burnham

CoffeeScriptの自己呼び出し関数に渡される引数を「エイリアス」したい場合、これがあなたが達成しようとしていることだとしましょう:

_(function ( global, doc ) {
  // your code in local scope goes here
})( window, document );
_

その場合、do (window, document) ->はそれを許可しません。行く方法は、括弧付きです:

_(( global, doc ) -> 
  # your code here
)( window, document ) 
_
19
Misha Reyzlin

コーヒーではとんでもなく簡単です。

do ->

戻ります

(function() {})();
16
mart7ini

doキーワードをデフォルトの関数パラメーターと組み合わせて、再帰的な「自己開始関数」に初期値をシードすることもできます。例:

do recursivelyPrint = (a=0) ->
  console.log a
  setTimeout (-> recursivelyPrint a + 1), 1000

使用してみてください

do ($ = jQuery) ->
5
Pavel Blagodov
do ->
    #your stuff here

これにより、自己実行型のクロージャーが作成されます。これはスコーピングに役立ちます。

3
Jordan Checkman

謝罪、私はそれを解決しました:

f = (
    () -> "something"
)()
1
user537339

そのはず

f = () ->
  # do something