2014-11-23 86 views
0

如何使用CoffeeScript來調用具有多個函數作爲參數的函數?例如,如果我想編譯這個JavaScriptCoffeeScript用於將多個函數參數轉換爲另一個函數

outerFunction(function(innerFunction1) { 
     console.log('argument 1'); 
    }, 
    function(innerFunction2) { 
     console.log('argument 2'); 
    }, 
    argument3 
); 

我會用什麼CoffeeScript代碼?假設2個空格的縮進,即使我使用了4來使其在StackOverflow上看起來更好。說實話,獲得JavaScript縮進權也很難。無論如何,我都試過

outerFunction (innerFunction1) -> 
    console.log 'argument 1' 
(innerFunction2) -> 
    console.log 'argument 2' 
argument3 

但由此產生的JavaScriptinnerFunction2處於同一水平outerFunction,而不是作爲一個孩子。使用逗號也沒有幫助。有在同一條線上兩個函數是這樣的:

outerFunction (innerFunction1) -> 
     console.log 'argument 1', (innerFunction2) -> 
     console.log 'argument2, 
    argument3 

有相反的問題:innerFunction2成爲innerFunction1一個孩子。

因此如何讓多個函數成爲單個函數的參數CoffeeScript

+0

我沒有第一個參數沒有看到這個問題,可能是因爲我沒有把它們想象成「匿名函數」。無論如何,沒有冒犯,但這不是一個很好的問題,也沒有很多好的答案。 – trysis 2014-11-23 22:42:46

回答

2

這裏是你想要的東西:

outerFunction (innerFunction1) -> 
    console.log 'argument 1' 
, (innerFunction2) -> 
    console.log 'argument 2' 
, argument3 

不幸的是,你不能把它寫在CoffeeScript中不使用逗號或括號:

outerFunction(
    (innerFunction1) -> 
    console.log 'argument 1' 
    (innerFunction2) -> 
    console.log 'argument 2' 
    argument3 
) 

除非你有這不是一個匿名函數

outerFunction argument1, 
    (innerFunction2) -> 
    console.log 'argument 2' 
    (innerFunction3) -> 
    console.log 'argument 3' 
    argument4 
+0

謝謝。我不喜歡用逗號編程,但是如果我想繼續寫'CoffeeScript',我想我必須習慣它。 – trysis 2014-11-23 21:43:09

1

我懷疑你是用縮進來混合空格,或者你的縮進是關閉的。因爲你發佈的CoffeeScript變成了很好的JavaScript。

outerFunction -> 
    innerFunction1 -> 
     console.log 'argument 1' 
    innerFunction2 -> 
     console.log 'argument 2' 
    argument3 

編譯爲:

outerFunction(function() { 
    innerFunction1(function() { 
    return console.log('argument 1'); 
    }); 
    innerFunction2(function() { 
    return console.log('argument 2'); 
    }); 
    return argument3; 
}); 

其也還算很難知道你想要什麼,因爲你的例子:

outerFunction(function() { 
    innerFunction1() { 
     console.log('argument 1'); 
    }, 
    innerFunction2() { 
     console.log('argument 2'); 
    }, 
    argument3 
); 

不是有效的JavaScript

15警告

  • 2缺少分號。
  • 4預期標識符,而是看到','。
  • 4預期分配或函數調用,而是看到一個表達式。
  • 4缺少分號。
  • 5缺少分號。
  • 7預期標識符,而是看到','。
  • 7預期分配或函數調用,而是看到一個表達式。
  • 7缺少分號。
  • 8預期分配或函數調用,而是看到一個表達式。
  • 8缺少分號。
  • 9預期標識符,而是看到')'。
  • 9預期分配或函數調用,而是看到一個表達式。
  • 1無與倫比的'{'。
  • 9預期')',而是看到''。
  • 9缺少分號。

四個未定義的變量

  • 1 outerFunction
  • 2 innerFunction1
  • 5 innerFunction2
  • 8參數3
+0

你說得對,我試圖使用的JavaScript與問題中的不同。我糾正了它,但我可能需要再調整一下。 – trysis 2014-11-23 20:41:34

+0

我的JavaScript也不完美,但是你的短信有一些誤報。我的JavaScript可能會混淆它。 – trysis 2014-11-23 20:46:36