if 情况的补充
complementery of an if case
你会怎么写这个:
if case .SomeEnum(3) = enumType where myInt == 3 {
//I don't need this case
} else {
//This is the case I need
}
我知道我可以使用 guard
:
guard case .SomeEnum(3) = enumType where myInt == 3 else {
//This is the case I need
}
但我不认为它是干净的,因为它并不是函数无法完成的真正情况。此外,guard
希望我从函数中 return。
还有其他选择吗?
你不能否定一个模式(据我所知),你的第一个解决方案
使用 if/else
对我来说很好,代码的意图很明显
可见。
switch 语句是替代方案:
switch enumType {
case .SomeEnum(3) where myInt == 3:
break // I don't need this case
default:
// This is the case I need
// ...
}
关于您的评论
Also, guard expects me to return from the function.
这并不完全正确。您应该离开当前范围。
所以这将按预期编译和工作:
repeat {
guard case .SomeEnum(3) = enumType where myInt == 3 else {
// This is the case I need
// ...
break
}
} while false
但我认为这不是更好的解决方案。
你会怎么写这个:
if case .SomeEnum(3) = enumType where myInt == 3 {
//I don't need this case
} else {
//This is the case I need
}
我知道我可以使用 guard
:
guard case .SomeEnum(3) = enumType where myInt == 3 else {
//This is the case I need
}
但我不认为它是干净的,因为它并不是函数无法完成的真正情况。此外,guard
希望我从函数中 return。
还有其他选择吗?
你不能否定一个模式(据我所知),你的第一个解决方案
使用 if/else
对我来说很好,代码的意图很明显
可见。
switch 语句是替代方案:
switch enumType {
case .SomeEnum(3) where myInt == 3:
break // I don't need this case
default:
// This is the case I need
// ...
}
关于您的评论
Also, guard expects me to return from the function.
这并不完全正确。您应该离开当前范围。 所以这将按预期编译和工作:
repeat {
guard case .SomeEnum(3) = enumType where myInt == 3 else {
// This is the case I need
// ...
break
}
} while false
但我认为这不是更好的解决方案。