将函数传递给Swift中的类
问题描述:
我想将一个函数传递给一个类,然后从类中调用它。这里是我的代码:将函数传递给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时,什么都不会发生。任何建议。
答
函数类型包含参数类型和返回类型。在这种情况下,doSomething
的函数类型为() -> Void
。 Void
是一个空元组,因此这相当于() ->()
。所以,你的TestClass
应该是这样的:
class TestClass {
var action:() -> Void
init(action:() -> Void) {
self.action = action
}
}
要通过一个函数作为参数,只需使用该函数的名称,就像任何其他变量的名称。所以,你会初始化TestClass
这样的:
let testingFunction = TestClass(action: doSomething)
,并调用动作功能是这样的:
testingFunction.action()
您没有传递函数,而是传递调用函数的结果。 – CodaFi 2014-11-07 00:06:03