swift Swift 3 - Enum utils

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了swift Swift 3 - Enum utils相关的知识,希望对你有一定的参考价值。

//
// Based on https://quinesoft.de/2016/05/23/swift-enumerate-iterate-enum/
//
//  Usage:
//
//  public enum Pies: Int, EnumerableEnum {
//    case apple
//    case strawberry
//    case chicken
//  }
//
//  class MyClass {
//    func demoEnumerableEnum(){
//        for v in Pies.allValues() {
//            print(v)
//        }
//        print(Pies.count())
//    }
//  }

protocol EnumerableEnum: RawRepresentable {
    static func allValues() -> [Self]
    static func count() -> Int
}

extension EnumerableEnum where RawValue == Int {
    static func allValues() -> [Self] {
        var index = 0
        var array = [Self]()
        while let element = Self(rawValue: Int(index)) {
            array.append(element)
            index += 1
        }
        return array
    }
    static func count() -> Int {
        var index = 0
        while let _ = Self(rawValue: Int(index)) {
            index += 1
        }
        return index
    }
}

以上是关于swift Swift 3 - Enum utils的主要内容,如果未能解决你的问题,请参考以下文章

Swift-细说枚举(Enum)

swift enum automata for swift

swift enum与计算值swift

Swift [1,2] 符合 AnyObject 但 [Enum.a, Enum.b] 不符合

swift enum通过CASE的相关价值

swift 遗忘函数语言的遗产值enum