2014-11-07 62 views
0

我想将一个函数传递给一个类,然后从类中调用它。这里是我的代码:将函数传递给Swift中的类

class TestClass { 
    var action:() 

    init(action:()) 
    { 
     self.action = action 
    } 
} 

func doSomething() 
{ 
    println("need to do something") 
} 


let testingFunction = TestClass(action:doSomething()) 
testingFunction.action 

当我调用testingFunction.action时,什么都不会发生。任何建议。

+0

您没有传递函数,而是传递调用函数的结果。 – CodaFi 2014-11-07 00:06:03

回答

1

函数类型包含参数类型和返回类型。在这种情况下,doSomething的函数类型为() -> VoidVoid是一个空元组,因此这相当于() ->()。所以,你的TestClass应该是这样的:

class TestClass { 
    var action:() -> Void 
    init(action:() -> Void) { 
     self.action = action 
    } 
} 

要通过一个函数作为参数,只需使用该函数的名称,就像任何其他变量的名称。所以,你会初始化TestClass这样的:

let testingFunction = TestClass(action: doSomething) 

,并调用动作功能是这样的:

testingFunction.action() 

更多信息,请参见Swift Language Guide section on function types