这个问题已经有了答案:
complementery of an if case
1个答案
有没有办法将case .A = enumValue
转化为类似于enumValue != .A
的形式?
enum MyEnum {
case A
case B
case C
case D(something: OtherEnum)
}
let enumValue: MyEnum = ...
let otherValue: String = ...
if case .A = enumValue {
// Do nothing
} else {
if otherValue == "something" {
// Do stuff...
} else {
// Do other stuff...
}
}
// More code...
我正在尝试删除空if块并减少行数,所以我不想查找类似的内容
var condition1 = true
if case .A = enumValue {
condition1 = false
}
if condition1 {
// ...
}
最佳答案
相等的
首先,您需要使您枚举Equatable
enum MyEnum: Equatable {
case A
case B
case C
case D(something: OtherEnum)
}
func ==(left:MyEnum, right:MyEnum) -> Bool {
return true // replace this with your own logic
}
警卫
现在,您的方案非常适合
Guard
语句func foo() {
guard enumValue != .A else { return }
if otherValue == "something" {
// Do stuff...
} else {
// Do other stuff...
}
}
在上面的代码中,如果
enumValue != .A
则代码流继续。否则(当
enumValue == .A
时)执行停止并执行。关于swift - Swift中的枚举“如果不是大小写”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38771994/