switch文でタプルを使用してパターンマッチングを使用して、enumが特定の1つのケースに等しくないすべてのケースを明確に表現しようとしています。ここに私のswitch文の短縮バージョンです!タプルパターンマッチングのSwift switch文で「等しくない」表現方法
switch (source, type, status) {
case (.cashVoucher, _, .awaitingValidation):
return cashVoucherAwaitingValidationMessageComponants
case (.cashVoucher, _, != .awaitingValidation):
return validatedCashVoucherMessageComponants
default:
fatalError("")
}
は、これは=演算子の誤った使用のbecuase明らかにコンパイルされませんが、それはあなたに私が達成しようとしているかのアイデアを提供します。
私は最初のケースが.cashVoucher
のソースと.awaitingValidation
のステータスと一致するようにします。
ソース.cashVoucher
と一致する2番目のケースと、.awaitingValidation
以外のステータスが必要です。
これまで考えていた2つの解決策がありますが、私が望むほど読みにくいです。私は他のすべてのステータスケースを単純に列挙できますが、合計で8つあり、読みにくくなります。 Alernativly、私はちょうどケースcase (.cashVoucher, _, _):
を使用することができ、スイッチのケースの順序のために私が達成しようとしていることを行うだろうが、私のswitch文actaullyは合計で16ケースを持ち、スイッチケースの順序に依存することにより、読者が私の意見で理解できるように。
これは、上記の!= .awaitingValidation
と同様のものを使用して表現する方法はありますか?
最初の 'case'で' st'にバインドする必要はないので、 'case(.cashVoucher、_、.awaitingValidation)'と言うことができます。 – Hamish
...そして、2番目のケースは 'case(.cashVoucher、_、_)'となる可能性があります... –
Martin R、このアプローチを使用しない理由を述べました –