swift 使用枚举样本swift函数对象,允许将函数编译为枚举并被调用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了swift 使用枚举样本swift函数对象,允许将函数编译为枚举并被调用相关的知识,希望对你有一定的参考价值。

//simple function that returns a closure that adds two integers
func addClosure(num:Int) -> ((Int) -> Int) {
    return {(arg:Int) in print(num); return arg + num}
}


//enum to group function types and allow them to be recursive
enum function {
    case end
    indirect case fn((Int) -> Int, function)
    
    var isEnd:Bool {
        switch self {
        case .end:
            return true
        default:
            return false
        }
    }
    
    func call(num:Int) -> Int {
        switch self {
        case .fn(let fnc, let next):
            if next.isEnd {
                return fnc(num)
            }
            else {
                return fnc(next.call(num: num))
            }
        default:
            return 0
        }
    }
}

var a = function.fn(addClosure(num: 1), function.end)
a = function.fn(addClosure(num: 2), a)
a = function.fn(addClosure(num: 3), a)
a.call(num: 0)
//1
//2
//3

以上是关于swift 使用枚举样本swift函数对象,允许将函数编译为枚举并被调用的主要内容,如果未能解决你的问题,请参考以下文章

如何将 firebase 函数提取到 Swift 中的对象?

Swift 4.2 - 如何在枚举函数中使用警报?

使用枚举参数自动生成的 Swift 扩展函数

Swift学习:嵌套类型

swift 学习- 22 -- 嵌套类型

如何在核心数据中存储swift枚举?