gpt4 book ai didi

swift - 'if case' 语句中的 NOT 条件

转载 作者:行者123 更新时间:2023-11-29 05:47:19 26 4
gpt4 key购买 nike

我有一个枚举:

enum E {
case A, B, C(Int)
}

let a: E = .A

以下是我如何检查 a 是否等于 .B

if case .B = a {
// works fine
}

但是我如何检查相反的条件呢? (a 等于.B)?这是我尝试过的:

if case .B != a { // Variable binding in a condition requires an initializer
// ...
}

if !(case .B = a) { // Expected ',' separator
// ...
}

当然,我可以这样做:

if case .B = a {
// ...
} else {
// put your code here
}

但这很尴尬,以及使用 switch 语句。还有更好的选择吗?


编辑:如果事例没有关联值,@Greg 建议的解决方案有效,但如果有,则需要重载 == 运算符。很抱歉没有首先澄清这一点。

最佳答案

这个“答案”无非就是以更紧凑的方式编写您的笨拙解决方案。如果您只关心值不属于某个枚举值的情况,则可以将其全部写在一行中,并在空 then 子句后紧跟 else :

enum E {
case A, B(String), C(Int)
}

let a: E = .B("Hello")

if case .A = a {} else {
print("not an A")
}

if case .B = a {} else {
print("not a B")
}

if case .C = a {} else {
print("not a C")
}

关于swift - 'if case' 语句中的 NOT 条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56014185/

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