0

javascriptコードを

someFunction(42, function onSuccess() {}, function onFailure() {})

onSuccessとonFailureを定義するときに、名前を付けたいことに注意してください(必要なためではなく、コードを文書化するため)。ただし、このコードを生成するためのcoffeescriptを取得できません。

匿名関数の受け渡しについては、

someFunction(42,
->
// onsuccess code
->
// onfailure code
)

しかし、これらの関数に名前を付けようとすると、期待どおりにJavascriptに変換されませんでした

someFunction(42,
onSuccess : ->
// onsuccess code
onFailure : ->
// onfailure code
)

に変換されます

someFunction(42, { onSuccess : function () {}, onFailure : function () {} })

別の試み

someFunction(42,
onSuccess ->
// onsuccess code
onFailure ->
// onfailure code
)

に変換されます

someFunction(42, onSuccess(function () {}), onFailure(function () {}))

どうすればよいですか?

4

2 に答える 2

1

CoffeeScriptで名前付き関数を作成する唯一の方法は、以下を使用することclassです。

someFunction 42,
  class onSuccess
    constructor: ->
  class onFailure
    constructor: ->
于 2012-06-28T03:47:00.583 に答える
1

これは機能しますか?

someFunction 42, (onSuccess = -> ), onFailure = ->

http://jsfiddle.net/keith_nicholas/Qdzph/

生成します。

somefunction(42, (onSuccess = function() {}), onFailure = function() {});

また、これは興味深いかもしれませんhttp://kangax.github.com/nfe/

そして、coffeescriptのよくある質問では、名前付き関数を生成できない理由について説明しています:-

https://github.com/jashkenas/coffee-script/wiki/FAQ

于 2012-06-28T03:23:21.530 に答える