Avatar ·

在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!问题出在哪里?如何正确检查类型?