【问题标题】:Pass and print all cases in an enum in Swift在 Swift 中传递并打印枚举中的所有案例
【发布时间】:2019-11-13 10:11:06
【问题描述】:

考虑这个简单的枚举:

enum myEnum: String {
    case abc = "ABC"
    case xyz = "XYZ"
}

我想编写一个可以打印枚举中所有案例的函数。喜欢..

printEnumCases(myEnum)

预期结果:

ABC
XYZ

注意:我可以迭代像this 这样的枚举。但我不知道如何通过枚举。

【问题讨论】:

    标签: swift enums iteration parameter-passing


    【解决方案1】:

    您可以定义一个泛型函数,该函数以CaseIterableRawRepresentable 的类型作为参数:

    func printEnumCases<T>(_: T.Type) where T: CaseIterable & RawRepresentable {
        for c in T.allCases {
            print(c.rawValue)
        }
    }
    

    用法:

    enum MyEnum: String, CaseIterable {
        case abc = "ABC"
        case xyz = "XYZ"
    }
    
    printEnumCases(MyEnum.self)
    

    【讨论】:

      【解决方案2】:

      使您的枚举符合CaseIterable,然后您就可以使用.allCases

      enum myEnum: String, CaseIterable {
          case abc = "ABC"
          case xyz = "XYZ"
      }
      
      myEnum.allCases.forEach { x -> print(x.rawValue) }
      

      CaseIterable docs

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-12-09
        相关资源
        最近更新 更多