Avatar ·

Vérification du type de classe dans switch en Swift : comment comparer une instance avec un type ?

Bonjour à tous ! Je suis nouveau en Swift et j'ai rencontré un problème en travaillant avec les classes et switch. J'ai une hiérarchie de classes : une classe de base `Animal` et ses sous-classes `Dog`, `Cat`, `Bird`. Je reçois un tableau `[Animal]` et je veux effectuer différentes actions pour chaque élément en fonction de son type réel. En Objective-C, je pourrais utiliser `isKindOfClass:`, mais en Swift cela ne fonctionne pas. Voici mon code actuel, qui ne compile pas : ```swift class Animal {} class Dog: Animal {} class Cat: Animal {} class Bird: Animal {} let animals: [Animal] = [Dog(), Cat(), Bird(), Dog()] for animal in animals { switch animal { case is Dog: print("Gav !") case is Cat: print("Miaou !") case is Bird: print("Cui-cui !") default: print("Animal inconnu") } } ``` Erreur : `'is' patterns may only appear in a case of a 'switch' statement, not in a 'for' loop`. Mais j'utilise bien switch à l'intérieur de for ! Quel est le problème ? Comment vérifier correctement le type ?