/ / Ako vyjadriť výraz „nie je rovný“ pomocou príkazu Swift prepínača s párovým vzorom zhody (duplikát) - rýchly

Ako vyjadriť výraz "nie je rovnocenný" s výkazom prepínača Swift s nulovou vzorkou zodpovedajúcou [duplicitné] - rýchle

"Snažím sa použiť porovnávanie vzorov v príkaze switch s n-tičkou, aby som jasne vyjadrila všetky prípady, v ktorých sa enum nezhoduje s jedným konkrétnym prípadom." Tu je skrátená verzia môjho príkazu switch:

switch (source, type, status) {
case (.cashVoucher, _, .awaitingValidation):
return cashVoucherAwaitingValidationMessageComponants
case (.cashVoucher, _, != .awaitingValidation):
return validatedCashVoucherMessageComponants
default:
fatalError("")
}

To nie je "kompilovať samozrejme z dôvodu nesprávneho použitia operátora! =, Ale dáva vám predstavu o tom, čo sa snažím dosiahnuť."

Chcem, aby prvý prípad zodpovedal zdroju .cashVoucher a stav .awaitingValidation.

Chcem, aby druhý prípad zodpovedal zdroju .cashVoucher a akýkoľvek štatút okrem .awaitingValidation.

Existujú 2 riešenia, ktoré si doposiaľ môžem predstaviť, ale"Nie sú tak čitateľné, ako by som chcel. Jednoducho by som mohol vymenovať všetky ostatné prípady, ale celkovo je ich 8 a stáva sa ťažko čitateľným. case (.cashVoucher, _, _): a vzhľadom na poradie prípadov prepnutia, ktoré by to bolorobiť to, čo som "m snaží dosiahnuť, ale môj príkaz switch actaully má celkom 16 prípadov a spoliehať sa na poradie prípadov prepínača, aby bolo pre čitateľa ťažšie pochopiť podľa môjho názoru.

Takže existuje nejaký spôsob, ako to vyjadriť pomocou niečoho podobného != .awaitingValidation Mám vyššie?

odpovede:

4 pre odpoveď č. 1

Mali by ste byť schopní napísať ho ako:

switch (source, type, status) {
case (.cashVoucher, _, let st) where st == .awaitingValidation:
return cashVoucherAwaitingValidationMessageComponants
case (.cashVoucher, _, let st) where st != .awaitingValidation:
return validatedCashVoucherMessageComponants
default:
fatalError("")
}

Priraďte tretiu hodnotu n-tice konštante (tu st) a použitie where kontrolu rovnosti.