Avatar ·

الفرق بين == و === في Swift

مرحبًا بالجميع! من فضلكم، أخبروني ما الفرق الجوهري بين عاملي المقارنة == و === في Swift؟ أفهم أن كليهما يُستخدمان للمقارنة، ولكن عندما أحاول مقارنة مثيلين من كلاس، تكون النتيجة مختلفة عن المتوقع.

إليكم مثال كود يربكني:

class Person {
    var name: String
    init(name: String) {
        self.name = name
    }
}

let person1 = Person(name: "Alice")
let person2 = Person(name: "Alice")

print(person1 == person2) // خطأ في الترجمة: لا يمكن تطبيق العامل الثنائي '==' على معاملين من نوع 'Person'
print(person1 === person2) // false

let person3 = person1
print(person1 === person3) // true

كنت أتوقع أن person1 == person2 سيعيد true لأن لديهما نفس الاسم، لكنني حصلت على خطأ في الترجمة. بينما === يعمل لكنه يعيد false رغم أن الكائنات تبدو متطابقة. لقد جربت بالفعل:

  • إضافة