J'essaie de faire une déclaration «booléenne ou» de cas de garde mais je ne suis pas sûr de la syntaxe correcte.
guard case test = FooBar.foo || case test = FooBar.bar else { return }
Je voudrais tester le test étant bar code> également, la syntaxe suivante est incorrecte:
enum FooBar { case foo case bar case nope } let test = FooBar.foo guard case test = FooBar.foo else { return }
4 Réponses :
Vous pouvez utiliser ceci à la place:
guard [FooBar.foo, FooBar.bar].contains(test) else { return }
Vous pouvez utiliser contains
:
guard [FooBar.foo, FooBar.bar].contains(test) else { return }
Vous n'avez besoin du mot-clé case
pour rien. Vérifiez simplement si enum est égal au cas donné
guard test == .foo || test == .bar else { return }
J'ai perdu la trace de ce que j'allais faire avec mon problème spécifique. Pourquoi le moyen le plus simple quand il est possible de le faire durement ...
Il n'est pas nécessaire d'utiliser un cas de garde
, puisque vous n'utilisez pas de correspondance de modèle complexe, vous testez simplement l'égalité.
Vous pouvez simplement mettre toutes les enum
cas dans un tableau et appel contient
là-dessus.
guard [FooBar.foo, FooBar.bar].contains(test) else { return }
Je préfère cela au collage d'expressions avec des OR ( ||
). Il est plus facile d'ajouter / supprimer des éléments et de mieux évoluer lorsque vous devez vérifier plus de choses