如何获取枚举值的值?

时间:2014-08-29 14:48:33

标签: enums swift optional

在Apple的“A swift Tour”中,他们有这段代码:

enum OptionalValue<T> {
    case None
    case Some(T)
}
var possibleInteger: OptionalValue<Int> = .None
possibleInteger = .Some(100)

你怎么得到100?如果possibleInteger == 100内部的值为100,则无法possibleInteger进行测试。我知道你可以把函数放在枚举中,但你不能有变量。也许我理解错误的枚举......

如果我在声明可选(Optional)时点击var x:Optional<Int>,我可以找到

enum Optional<T> : Reflectable, NilLiteralConvertible {
    case None
    case Some(T)
    init()
    init(_ some: T)

    /// Haskell's fmap, which was mis-named
    func map<U>(f: (T) -> U) -> U?
    func getMirror() -> MirrorType
    static func convertFromNilLiteral() -> T?
}

但我不明白这是什么意思。帮助

1 个答案:

答案 0 :(得分:2)

您可以使用switch语句获取值as described here。相关位:

  

...可以提取相关值作为开关的一部分   声明。您将每个关联值提取为常量(使用   let前缀)或变量(带有var前缀),用于   开关箱的主体:

对于您的情况,您需要以下内容:

switch possibleInteger {
case .Some(let value):
    println(value)
case .None:
    println("<None>")
}