如何在Swift中定义包含另一个函数的函数的返回类型?

时间:2014-10-13 09:55:51

标签: ios function types swift

如何在Swift的以下代码中定义createMyFunction的返回类型? 试过(() - > Int),但我得到"表达式解析为未使用的函数"我在Playground中调用createMyFunction()时出错。

func createMyFunction() -> /*RETURN_TYPE_GOES_HERE*/ {

    func myFunction () -> Int{

        var number = 69
        return number
    }

}

createMyFunction();

1 个答案:

答案 0 :(得分:4)

这是正确的方法:

func createMyFunction() -> ( () -> Int ) {    
    func myFunction () -> Int{

        var number = 69
        return number
    }

    return myFunction
}

返回类型为() -> Int:一个不带参数的闭包并返回Int

在游乐场中,您会看到该错误,因为createMyFunction正在返回一个函数,但您实际上并未使用它。您应该立即尝试执行它:

createMyFunction()()

这里createMyFunction()调用返回另一个函数的函数。第二组括号调用返回的函数。

当然,如果您不想立即调用返回的函数,可以将其分配给变量:

let myFunc = createMyFunction()

或将其作为参数传递给另一个函数等。