在Swift的switch中检查类类型:如何将实例与类型进行比较?
大家好!我是Swift新手,在处理类和switch时遇到了问题。我有一个类层次结构:基类`Animal`及其子类`Dog`、`Cat`、`Bird`。我得到一个`[Animal]`数组,想根据每个元素的实际类型执行不同的操作。在Objective-C中,我可以使用`isKindOfClass:`,但在Swift中这不起作用。
以下是我当前无法编译的代码:
```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("汪!")
case is Cat:
print("喵!")
case is Bird:
print("叽叽喳喳!")
default:
print("未知动物")
}
}
```
错误:`'is' patterns may only appear in a case of a 'switch' statement, not in a 'for' loop`。但我确实在for循环内部使用了switch!问题出在哪里?如何正确检查类型?