将函数作为参数发送到另一个函数

时间:2015-09-05 07:03:10

标签: ios macos swift

我想将func作为参数发送给另一个func,但我知道如果发送的func具有输入和输出参数,该怎么做:< / p>

aFunc (sentFunc: Int -> String) {
    ...
}

但我希望实现类似下面的代码,其中发送的函数没有参数:

func firstFunc(<i want to declare paramenter for a function here that itself does not have any parameters>) {
    if (servicedCities != nil) {
        <execute sent fuction>
    } else {
        objectMapper().getServicedCitiesifAvailable()
        <execute sent fuction>
    }
}

调用上述func的{​​{1}}应该看起来像

func

3 个答案:

答案 0 :(得分:1)

func firstFunc(passedFunc:()->()) {
    passedFunc()
}

func secondFunc() {
    func myNestedFunction() {
        print("hi")
    }

    firstFunc(myNestedFunction)
}

secondFunc()

将输出

  

firstFunc电话的背景下。

请注意,您必须在()之后的最后一行省略myNestedFunction,因为您不想调用该方法,而是传递方法本身。

答案 1 :(得分:0)

func firstFunc(sentFunc: () -> ()) {
    sentFunc()
}

func firstFunc(sentFunc: Void -> Void) {
    sentFunc()
}

答案 2 :(得分:0)

我认为你正在寻找Swift闭包。

选中此Swift closures and functions

func someFunc(paramFunc: () -> ()) {
    paramFunc()
}

...

self.someFunc { () -> () in
    //Do some code here;
}