swift – Enum上的内省和迭代

swift – Enum上的内省和迭代,第1张

概述是否有可能以编程方式找出Enum在 Swift 2中有多少“案例”并迭代它们? 这段代码不能编译,但它让你知道我想要实现的目标: enum HeaderStyles{ case h1 case h2 case h3}for item in HeaderStyles{ print(item)} 您可以编写一个提供该迭代​​功能的通用结构.在下面的示例中,枚举 是否有可能以编程方式找出Enum在 Swift 2中有多少“案例”并迭代它们?

这段代码不能编译,但它让你知道我想要实现的目标:

enum headerStyles{    case h1    case h2    case h3}for item in headerStyles{    print(item)}
解决方法 您可以编写一个提供该迭代​​功能的通用结构.在下面的示例中,枚举原始值必须以0开头(默认情况下是这样)并且原始值之间没有间隙(不能丢失原始值,例如0,1,2,3,5 – 4)

public struct EnumGenerator<T> : GeneratorType,SequenceType {    private let enumInit: Int -> T?    private var i: Int = 0    public mutating func next() -> T? { return enumInit(i++) }    public init(_ initFunc: Int -> T?){ self.enumInit = initFunc}}enum headerStyles:Int{    case h1    case h2    case h3}for item in EnumGenerator(headerStyles.init){    print(item)}
总结

以上是内存溢出为你收集整理的swift – Enum上的内省和迭代全部内容,希望文章能够帮你解决swift – Enum上的内省和迭代所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1009605.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存