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 ?
No answers yet.
Connectez-vous pour laisser une réponse