一尘不染

在Swift中访问Enumeration关联值

swift

在这段代码中,我编写了一个真正无用的枚举,该枚举定义了NumberInt或Float 的可能。

我无法理解如何访问通过关联设置的值。如果我尝试打印它,我得到的只是(Enum Value)

enum Number {
    case int (Int)
    case float (Float)
}

let integer = Number.int(10)
let float = Number.float(10.5)
println("integer is \(integer)")
println("float is \(float)")

阅读 240

收藏
2020-07-07

共1个答案

一尘不染

该值与枚举的实例相关联。因此,要在不进行开关的情况下访问它,您需要使一个吸气剂并使其显式可用。如下所示:

enum Number {
    case int(Int)
    case float(Float)

    func get() -> NSNumber {
        switch self {
        case .int(let num):
            return num
        case .float(let num):
            return num
        }
    }
}

var vInteger = Number.int(10)
var vFloat = Number.float(10.5)

println(vInteger.get())
println(vFloat.get())

也许将来可能会自动创建类似的内容,或者为该语言添加更短的便利性。

2020-07-07