簡體   English   中英

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

[英]How to make a case return a different value if a variable is true in swift?

我想知道如果變量是真還是假,是否可以讓 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 ,那么將 boolean 作為參數的 function 會更好

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM