我試圖在具有元組的switch語句中使用模式匹配來清楚地表示枚舉不等於一個特定情況的所有情況。這裏是我的switch語句的簡化版本:如何使用具有元組模式匹配的Swift開關語句表示「不等於」
switch (source, type, status) {
case (.cashVoucher, _, .awaitingValidation):
return cashVoucherAwaitingValidationMessageComponants
case (.cashVoucher, _, != .awaitingValidation):
return validatedCashVoucherMessageComponants
default:
fatalError("")
}
這不明明編譯監守的不正確使用=運算符的,但它給你的我想要實現的想法。
我想要第一個案例匹配來源.cashVoucher
和狀態.awaitingValidation
。
我希望第二種情況匹配來源.cashVoucher
以及除.awaitingValidation
以外的任何狀態。
到目前爲止,我可以想到的有兩種解決方案,但它們並不像我想的那樣可讀。我可以簡單地列出所有其他狀態情況,但共有8個情況,並且很難閱讀。 Alernativly,我可以只使用案例case (.cashVoucher, _, _):
,並由於切換案件的順序,它會做我想要實現的,但我的切換語句實際上總共有16個案例,依靠切換案例的順序使它更難讓讀者瞭解我的意見。
那麼有沒有什麼方法可以用類似於我上面提到的!= .awaitingValidation
來表達這個?
請注意,在第一個'case'中不需要綁定'st',您仍然可以說'case(.cashVoucher,_,.awaitingValidation)'。 – Hamish
......第二種情況可以是'case(.cashVoucher,_,_)'...... –
Martin R,我說明了我不使用這種方法的原因 –