在使用保护时碰到块。理想情况下,想要做一个保护语句来捕获除一个枚举状态之外的所有枚举状态,所以应该是这样的:
guard case .notInUse != foundTransition.validToObject.isInSituation else {
fatalError("Transition: The toObject is already in a situation")
}
但这种不匹配的测试似乎是不允许的。因此,使用以下if语句:
if case .notInUse = foundTransition.validToObject.isInSituation {} else {
fatalError("Transition: The toObject is already in a situation")
}
它有效,但感觉警卫会更整洁。有什么想法吗?
否定case
语句是不可能的。
您要么需要使用if
语句,要么使枚举成为Equatable
,在这种情况下,只需删除case关键字。
guard foundTransition.validToObject.isInSituation != .notInUse
或者,您可以使用由switch
或if
支持的guard
语句。但你永远无法摆脱他们!
guard ({
if case .notInUse = foundTransition.validToObject.isInSituation {
return false
}
return true
} ()) else {
fatalError("Transition: The toObject is already in a situation")
}