如果swift中的变量为true,如何使case返回不同的值



我想知道如果变量为true或false,是否可以让case语句返回不同的值。

var variable = false
enum enumeraton {
case thing
var value: Int {
switch self {
case .thing:
if variable = true {
return 1
}else {
return 2
}
}
}
}

有这样的办法吗?

根据您想要如何处理variable,有不同的解决方案。如果您想在创建枚举变量/属性时读取variable的值,您可以使用与枚举相关的值

var variable = false
enum Enumeraton {
case thing(Bool)
var value: Int {
switch self {
case .thing(let flag):
return flag ? 1 : 2
}
}
}
let enumValue: Enumeraton = .thing(variable)
print(enumValue.value)

但是,如果你想随着时间的推移读取variable,那么以布尔值为自变量的函数是更好的

enum Enumeraton {
case thing
func value(for flag: Bool) -> Int {
guard self == .thing else { return 0 } // or some other action
return flag ? 1 : 2
}
}
let enumValue: Enumeraton = .thing
print(enumValue.value(for: variable))

这里有一个可行的解决方案。使用Xcode 12.5和Swift 5.4 进行测试

var variable = false
enum enumeraton {
case thing
case other
var value: Int {
switch self {
case .thing:
if variable {
return 1
} else {
return 2
}
case .other:
return 0
}
}
}
let foo = enumeraton.thing
print(foo.value) //prints 2
variable = true
print(foo.value) //prints 1

最新更新