将函数传递给Swift中的类

时间:2014-11-07 00:02:01

标签: 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时,没有任何反应。任何建议。

1 个答案:

答案 0 :(得分: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