فحص نوع الفئة في switch في Swift: كيفية مقارنة مثيل بنوع؟
مرحباً بالجميع! أنا مبتدئ في 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`. لكنني أستخدم switch داخل for! ما المشكلة؟ كيف أتحقق من النوع بشكل صحيح؟