Swift递归函数,返回类型Closure

时间:2017-04-26 01:35:12

标签: swift recursion closures

以下是基于返回函数添加或减去的基本函数。

func calculateFunc(_ inputValue:Int) -> (add:(Int)->(Int),sub:(Int)->(Int)){

    func addFunction(_ newValue:Int)->(Int){
        return inputValue + newValue
    }
    func subFunction(_ newValue:Int) -> Int {
        return inputValue - newValue
    }
    return (addFunction,subFunction)
}

calculateFunc(4).add(2)
calculateFunc(4).sub(1)

我不知道以下是否可行。有任何递归函数的概念可以帮助吗?

calculateFunc(4)。新增(2).SUB(1)。新增(9)

1 个答案:

答案 0 :(得分:2)

您需要为Int编写扩展名,如下所示

extension Int {
    func add(_ value: Int) -> Int {
        return self+value
    }

    func sub(_ value: Int) -> Int {
        return self-value
    }
}

然后你可以按如下方式调用这些函数

let x: Int = 5
let y = x.add(1).sub(3)