Verificação de tipo de classe em switch no Swift: como comparar uma instância com um tipo?
Olá a todos! Sou novo em Swift e me deparei com um problema ao trabalhar com classes e switch. Tenho uma hierarquia de classes: a classe base `Animal` e suas subclasses `Dog`, `Cat`, `Bird`. Recebo um array `[Animal]` e quero executar ações diferentes para cada elemento dependendo do seu tipo real. Em Objective-C, eu poderia usar `isKindOfClass:`, mas no Swift isso não funciona.
Aqui está meu código atual, que não 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("Gav!")
case is Cat:
print("Miau!")
case is Bird:
print("Piu!")
default:
print("Animal desconhecido")
}
}
```
Erro: `'is' patterns may only appear in a case of a 'switch' statement, not in a 'for' loop`. Mas estou usando switch dentro de for! Qual é o problema? Como verificar o tipo corretamente?