如果swift中的变量为真,如何使案例返回不同的值?
我想知道如果变量为true或false,是否可以让case语句返回不同的值如果swift中的变量为真,如何使案例返回不同的值?,swift,if-statement,enums,return,Swift,If Statement,Enums,Return,我想知道如果变量为true或false,是否可以让case语句返回不同的值 var variable = false enum enumeraton { case thing var value: Int { switch self { case .thing: if variable = true { return 1 }else {
var variable = false
enum enumeraton {
case thing
var value: Int {
switch self {
case .thing:
if variable = true {
return 1
}else {
return 2
}
}
}
}
有没有办法做到这一点?这里有一个可行的解决方案。使用Xcode 12.5和Swift 5.4进行测试
var变量=false
枚举数{
案件
案例其他
var值:Int{
切换自身{
案例。事情:
if变量{
返回1
}否则{
返回2
}
案例.其他:
返回0
}
}
}
让foo=enumeraton.thing
打印(foo.value)//打印2
变量=真
打印(foo.value)//打印1
这里有一个可行的解决方案。使用Xcode 12.5和Swift 5.4进行测试
var变量=false
枚举数{
案件
案例其他
var值:Int{
切换自身{
案例。事情:
if变量{
返回1
}否则{
返回2
}
案例.其他:
返回0
}
}
}
让foo=enumeraton.thing
打印(foo.value)//打印2
变量=真
打印(foo.value)//打印1
根据您希望如何处理变量,有不同的解决方案。如果要在创建枚举变量/属性时读取变量的值
,可以使用与枚举关联的值
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)
但是如果您想随着时间的推移读取变量
,那么使用布尔值作为参数的函数更好
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))
根据您希望如何处理变量,有不同的解决方案。如果要在创建枚举变量/属性时读取
变量的值
,可以使用与枚举关联的值
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)
但是如果您想随着时间的推移读取变量
,那么使用布尔值作为参数的函数更好
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))
是的,你可以。您只需要从调用
value
的位置访问“Variable”。因此,也许可以创建一个函数(func-value(with-variable:Bool)->Int
),或者从方法(单例?)访问它。如果您的if-else
是if-variable==true
您似乎在条件yes中缺少一个等号!谢谢你,Larme,这很有效是的,你可以。您只需要从调用value
的位置访问“Variable”。因此,也许可以创建一个函数(func-value(with-variable:Bool)->Int
),或者从方法(单例?)访问它。如果您的if-else
是if-variable==true
您似乎在条件yes中缺少一个等号!谢谢你,拉米,这很有效