立即调用CoffeeScript中的函数

时间:2012-02-16 07:39:12

标签: coffeescript

有人可以告诉我如何立即调用CoffeeScript中的函数。我正在尝试完成类似于这个JS对象文字的东西。

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

可行或有什么办法吗?

3 个答案:

答案 0 :(得分:20)

do

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

编译为

var WEBAPP;

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

答案 1 :(得分:2)

对于遇到此问题的任何其他人,您还可以将do关键字与默认函数参数组合,以便为递归"立即调用的函数"具有初始值。例如:

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

答案 2 :(得分:1)

为什么你不尝试这样的事情?

square = (x) -> x * x

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

<强>更新

BTW:这是其他解决方法

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