gpt4 book ai didi

ios - 原始类型的枚举不能有带参数的案例

转载 作者:行者123 更新时间:2023-12-01 15:53:23 25 4
gpt4 key购买 nike

enum JPEGCompressionLevel: CGFloat {
typealias RawValue = CGFloat
case max = 1, high = 0.9, med = 0.5, low = 0.2, custom(CGFloat)
}

我收到 custom 的错误案例: Enum with raw type cannot have cases with arguments
我想使用具有以下语法的 JPEGCompressionLevel:
let a: JPEGCompressionLevel = .custom(0.3)
let b: JPEGCompressionLevel = .max
print(a.rawValue)
print(b.rawValue)

最佳答案

swift enum可以具有原始值或关联值,但不能同时具有两者。在您的情况下,case max = 1是原始值,而 custom(CGFloat)是一个关联值。

要克服此限制,您可以使用 enum具有与计算属性相关联的值:

enum JPEGCompressionLevel {
case custom(CGFloat)
case max, high, med, low

var value: CGFloat {
switch self {
case .max:
return 1.0
case .high:
return 0.9
case .med:
return 0.5
case .low:
return 0.2
case .custom(let customValue):
return customValue
}
}
}

let a: JPEGCompressionLevel = .custom(0.3)
let b: JPEGCompressionLevel = .max

print(a.value)
print(b.value)

更多信息可以引用这篇 article .

关于ios - 原始类型的枚举不能有带参数的案例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59378942/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com