كيفية تحديد نوع الكائن في Swift؟ (type(of:) و is/as)
مرحباً بالجميع! لقد بدأت للتو في تعلم Swift وأكتب أول تطبيق لي. واجهت مشكلة: أحتاج إلى فهم نوع الكائن الموجود في المتغير، خاصة عندما أستخدم البروتوكولات أو الوراثة.
هذا مثال. لدي كلاس أساسي `Animal` وكلاسين فرعيين: `Dog` و `Cat`. أقوم بإنشاء مصفوفة `let animals: [Animal] = [Dog(), Cat(), Dog()]` وأريد في حلقة for-in تحديد أي منهم كلب وأيهم قطة. في لغات أخرى (مثل C#) استخدمت `typeof()` أو `is` للتحقق. كيف أفعل ذلك في Swift؟
حاولت كتابة `if animal is Dog { ... }` ولكن هذا يعمل فقط للتحقق، كيف أحصل على اسم النوع كنص؟ أيضاً سمعت عن `type(of:)` ولكني لا أفهم الفرق بين `type(of:)` و `is`/`as`. لا أحتاج فقط إلى التحقق، بل أحياناً أحتاج إلى تحويل الكائن إلى نوع محدد لاستدعاء دالته الخاصة.
أرشدوني من فضلكم كيف أتعامل مع الأنواع في Swift بشكل صحيح: كيف أعرف النوع، كيف أتحقق من الانتماء إلى كلاس/بروتوكول، وكيف أ