在这段代码中,我编写了一个非常无用的枚举,它用Int或Float定义了一个可能的Number.

我不明白如何访问我与关联设置的值.如果我试着打印,我只得到(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)")

推荐答案

该值与枚举的实例相关联.因此,要在不使用switch 的情况下访问它,您需要创建一个getter并使其显式可用.如下所示:

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())

也许将来会自动创建类似的东西,或者在语言中添加更短的便利性.

Swift相关问答推荐

如何在visionOS中定制悬停效果区域

NSApplication是否需要NSApplicationDelegate?

在MacOS上检测键盘是否有Globe键

如何偏移HStack中的视图,但仍然约束框架以与偏移匹配?

将matchedGeometryEffect 应用于列表视图内的视图时,列表视图中的项目会受到影响 - SwiftUI

应该在ViewModel还是ViewController中使用"Task {}"?

为什么 SwiftUI 中 ForEach 的这个 Select 不起作用?

为什么 String.contains 在我导入 Foundation 时表现不同?

Pod lib lint 命令找不到 watchos 模拟器

Swift - 订阅视图之外的绑定值

获取具有关联类型的协议的self

Swift - 给定一个像 30 的 Int 如何将范围数乘以 7?

如何在填充上添加 if else 语句? SwiftUI

异步等待不会在项目中触发,但在 Xcode playground 中工作正常

AVPlayer 在 iOS 15.4 中寻求 completionHandler 返回 false

仅在 Swift 中创建 Setter

Swift中switch 盒的详尽条件

Swift 3:小数到 Int

Objective-C 方法与可选需求方法 Swift 冲突

Swift 中的 recursiveDescription 方法?