如何将命名函数作为参数传递给coffeescript

时间:2012-06-28 03:17:39

标签: coffeescript

我想要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 () {}))

我该怎么做?

2 个答案:

答案 0 :(得分:1)

这有用吗?

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

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

生成..

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

另外,这可能是有意义的http://kangax.github.com/nfe/

并且,在coffeescript faq中,它讨论了为什么你不能生成命名函数: -

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

答案 1 :(得分:1)

在CoffeeScript中创建命名函数的唯一方法是使用class

someFunction 42,
  class onSuccess
    constructor: ->
  class onFailure
    constructor: ->