<分区>
我试图在带有元组的 switch 语句中使用模式匹配来清楚地表达枚举不等于一个特定情况的所有情况。这是我的 switch 语句的简化版本:
switch (source, type, status) {
case (.cashVoucher, _, .awaitingValidation):
return cashVoucherAwaitingValidationMessageComponants
case (.cashVoucher, _, != .awaitingValidation):
return validatedCashVoucherMessageComponants
default:
fatalError("")
}
由于 != 运算符的错误使用,这显然无法编译,但它可以让您了解我要实现的目标。
我希望第一个案例匹配 .cashVoucher
的来源和 .awaitingValidation
的状态。
我希望第二种情况匹配源 .cashVoucher
和除 .awaitingValidation
之外的任何状态。
到目前为止,我能想到 2 个解决方案,但它们的可读性不如我想要的。我可以简单地列出所有其他状态案例,但总共有 8 个并且变得难以阅读。 Alernativly,我可以只使用 case case (.cashVoucher, _, _):
并且由于 switch case 的顺序,它会做我想要实现的事情,但我的 switch 语句实际上有总共 16 个案例,并且依赖于 switch case 的顺序,在我看来读者更难理解。
那么有什么方法可以使用类似于我上面的 != .awaitingValidation
来表达这一点?