Verificación de tipo de clase en switch en Swift: ¿cómo comparar una instancia con un tipo?
¡Hola a todos! Soy nuevo en Swift y me encontré con un problema al trabajar con clases y switch. Tengo una jerarquía de clases: la clase base `Animal` y sus subclases `Dog`, `Cat`, `Bird`. Recibo un array `[Animal]` y quiero realizar diferentes acciones para cada elemento según su tipo real. En Objective-C podría usar `isKindOfClass:`, pero en Swift esto no funciona.
Aquí está mi código actual, que no compila:
```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("¡Guau!")
case is Cat:
print("¡Miau!")
case is Bird:
print("¡Pío!")
default:
print("Animal desconocido")
}
}
```
Error: `'is' patterns may only appear in a case of a 'switch' statement, not in a 'for' loop`. ¡Pero estoy usando switch dentro de for! ¿Cuál es el problema? ¿Cómo verificar el tipo correctamente?
No answers yet.
Inicia sesión para dejar una respuesta