【问题标题】:How to get value of enums case?如何获得枚举案例的价值?
【发布时间】:2017-04-04 15:00:17
【问题描述】:

我正在与 swift enums 合作。而我的enum 看起来像这样:

enum DataStructures<T> {
    case element(value: T)
    case elements(value: [T])
}

我像这样初始化DataStructures

DataStructures.element(value: resultElement)

resultElement 属于 ResultElement 类型:

resultElement: ResultElement

我的问题是:有没有办法从枚举的case 中提取resultElement 的值,以便在将DataStructures.element(value: resultElement) 作为参数传递给某个方法之后取回该对象?该参数也如下所示:

data: DataStructures<ResultElement>

感谢您的回答。

【问题讨论】:

    标签: ios swift generics enums


    【解决方案1】:

    使用模式匹配:

    if case .element(let value) = someParameter {
        print(value) // or do whatever you want with it
    } else {
        // do some other thing in the case of the parameter not being .element
    }
    

    【讨论】:

    • 谢谢先生,这帮助我解决了我的问题。
    • @MattCodes 如果您认为我的回答回答了您的问题,请考虑通过单击该复选标记接受它!
    【解决方案2】:
    enum DataStructures<T> {
        case element(value: T)
        case elements(value: [T])
    }
    
    let x = DataStructures<Int>.element(value: 5)
    
    switch x {
    case .element(let value):
        print(value) // 5
    case .elements(let values):
        print(values)
    }
    

    可以在此处推荐您(请参阅关联值部分): https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/Enumerations.html

    祝你好运!

    【讨论】:

    • 感谢您的回答。我不熟悉 Sweeper 在下面的回答中建议的模式匹配。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-08
    • 1970-01-01
    相关资源
    最近更新 更多