Avatar ·

ما الفرق بين عاملي == و === في Swift؟ شرح مفصل للمبتدئين

مرحباً بالجميع! لقد بدأت للتو في تعلم Swift وواجهت بعض الالتباس. في الكود، أرى عاملين: == و ===. للوهلة الأولى، يبدو أنهما يفعلان نفس الشيء — مقارنة القيم. لكنني لاحظت أن المترجم أحياناً يشتكي عندما أحاول استخدامهما بشكل غير صحيح. إليك مثال يربكني: ```swift class Person { var name: String init(name: String) { self.name = name } } let person1 = Person(name: "Alice") let person2 = Person(name: "Alice") let person3 = person1 print(person1 == person2) // خطأ: لا يمكن تطبيق العامل الثنائي '==' على معاملات من نوع 'Person' print(person1 === person2) // false print(person1 === person3) // true ``` لماذا لا يعمل `==` على الإطلاق مع الكلاس الخاص بي، بينما يعمل `===` لكنه يعطي نتائج مختلفة؟ ما الفرق بينهما؟ متى نستخدم أياً منهما؟ سمعت أن هذا مرتبط بالأنواع المرجعية reference types والأنواع القيمية value types، لكنني أود الحصول على شرح واضح مع أمثلة. شكراً مسبقاً على المساعدة.