Сразу же вызванные функции в CoffeeScript - PullRequest
9 голосов
/ 16 февраля 2012

Может кто-нибудь показать мне, как немедленно вызвать функцию в CoffeeScript.Я пытаюсь сделать что-то похожее на этот литерал объекта JS.

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

Возможно ли это или какие обходные пути?

Ответы [ 3 ]

20 голосов
/ 16 февраля 2012

Существует do:

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

, который компилируется в

var WEBAPP;

WEBAPP = {
  maxheight: (function() {
    return 1 + 1;
  })(),
  someProperty: ''
};
2 голосов
/ 05 июня 2014

Для всех, кто сталкивался с этим вопросом, вы также можете объединить ключевое слово do с параметрами функции по умолчанию, чтобы заполнить рекурсивные «немедленно вызываемые функции» с начальным значением. Пример:

do recursivelyPrint = (a=0) ->
  console.log a
  setTimeout (-> recursivelyPrint a + 1), 1000
1 голос
/ 16 февраля 2012

почему бы вам не попробовать что-нибудь подобное?

square = (x) -> x * x

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

ОБНОВЛЕНИЕ

Кстати: это другой обходной путь

WEBAPP = {
   maxHeight: (() -> 
       1 + 2
   )()
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...