CoffeeScript-传递一个带有参数的匿名函数

CoffeeScript - pass an anonymous function with parameters

本文关键字:参数 函数 一个 CoffeeScript-      更新时间:2024-01-06

我不知道如何传递一个接受参数的匿名函数。这是我的情况:

class MyClass
  constructor: (@a) ->
    console.log("MyClass: created " + @a)
  show: ->
    console.log("MyClass: show " + @a)

然后,使用UndercoreJS,这就起作用了:

_.map listOfMyClassObjects, (obj) -> obj.show

但为了方便起见,我想将对map的调用封装在一个单独的函数中:

allMyClass(fun) ->
  _.map listOfMyClassObjects, fun(obj)

这样以后我可以做:

allMyClass((obj) -> obj.show())

但浏览器控制台显示:

Uncaught ReferenceError: fun is not defined
  (anonymous function)
  require../browser.CoffeeScript.run
  ...

什么是正确的synthax?还有,可以这样简化吗?

 allMyClass(fun) ->
    _.map listOfMyClassObjects, obj[fun]()
 allMyClass(show())

更新:

根据Thilo的回答,函数调用中存在语法错误。但是,在对映射迭代结果调用函数时也出现了错误。工作版本是这样的:

allMyClass = (fun) ->
  _.map listOfMyClassObjects, (obj) -> fun(obj)

不过,如果有将类方法传递给allMyClass函数的较短版本,则仍在徘徊。

更新2:

简化可能是这样的:

allMyClass = (fun) ->
  _.map listOfMyclassObjects, (obj) -> obj[fun]()
allMyClass("show")

fun传递参数需要传递更多的参数。

您的意思是定义一个函数吗

allMyClass = (fun) ->
   _.map listOfMyClassObjects, fun(obj)

或方法

allMyClass : (fun) ->
   _.map listOfMyClassObjects, fun(obj)

没有=:,您只是在呼叫allMyClass