如果swift中的变量为真,如何使案例返回不同的值?

如果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 {

我想知道如果变量为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
            }
        }
    }
}

有没有办法做到这一点?

这里有一个可行的解决方案。使用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中缺少一个等号!谢谢你,拉米,这很有效