【问题标题】:Swift recursive function , return type ClosureSwift递归函数,返回类型闭包
【发布时间】:2017-04-26 01:35:11
【问题描述】:

以下是根据调用的返回函数进行加减的基本函数。

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).add(2).sub(1).add(9)

【问题讨论】:

  • 具体目标是什么?只是为了实现这个语法calculateFunc(4).add(2).sub(1).add(9),还是单独使用函数来实现?
  • 是实现语法。但是关闭而不是扩展。
  • 我一直在玩它。我认为这本质上需要一个函数能够将自身作为函数返回。我认为这在静态类型系统中是不可能的,比如 Swift 的
  • 我问了一个问题,谁的回答会引出这个问题的答案:stackoverflow.com/q/43624011/3141234

标签: swift recursion closures


【解决方案1】:

您需要为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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-11-06
    • 2023-04-11
    • 2018-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-17
    相关资源
    最近更新 更多