我想将一个函数传递给一个类,然后从类中调用它。这是我的代码:
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 :(得分:1)
函数类型包含参数类型和返回类型。在这种情况下,doSomething
的函数类型为() -> Void
。 Void
是一个空元组,因此相当于() -> ()
。所以你的TestClass
看起来像这样:
class TestClass {
var action: () -> Void
init(action: () -> Void) {
self.action = action
}
}
要将函数作为参数传递,只需使用函数的名称,就像任何其他变量的名称一样。所以你会像这样初始化TestClass
:
let testingFunction = TestClass(action: doSomething)
并像这样调用动作函数:
testingFunction.action()