2012-02-16 8 views
8

CoffeeScriptですぐに関数を呼び出す方法を教えてもらえますか?私はこのJSオブジェクトリテラルに似た何かを達成しようとしています。すぐにCoffeeScriptで呼び出された関数

WEBAPP = { 
    maxHeight : function(){ 
     /* Calc stuff n' stuff */ 
     WEBAPP.maxHeight = /* Calculated value */ 
    }(), 
    someProperty : '' 
    /* ... */   
} 

回避策はありますか?

答えて

18

WEBAPP = 
    maxheight: do -> 1+1 
    someProperty: '' 

にコンパイル
var WEBAPP; 

WEBAPP = { 
    maxheight: (function() { 
    return 1 + 1; 
    })(), 
    someProperty: '' 
}; 
+0

' - > 1 + 1)()は' do - > 1 + 1'と同じことをします。 –

1

なぜこのようなことを試してみませんか?

square = (x) -> x * x 

WEBAPP = { 
    maxHeight: square(3), 
    someProperty: '' 
} 

UPDATEところで

:これは、他の回避策です

doあり
WEBAPP = { 
    maxHeight: (() -> 
     1 + 2 
    )() 
} 
2

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

do recursivelyPrint = (a=0) -> 
    console.log a 
    setTimeout (-> recursivelyPrint a + 1), 1000 
関連する問題