Difference between == and === in the swift example
In Swift, there are two equal operator types.
- Double equal (==) and double not equal (!=) operator
- Triple equal (===) and triple not equal (!==)operator
Swift Identity operator
- Double equal operator(
==
,!=
) checks if two objects contains equal data or not. - Triple equal operator(
===
,!==
) checks if two objects reference is same or not. Here is an example of primitive types
22 === 1 // false
22 === 22 //true
22 == 1 // false
22 == 1 // false
==
checks the values are same, ===
checks values and reference type are same.
Let’s see examples of identical operators for objects and references. Next, create an object of a class and contains id, name properties
class Student: Equatable {
let id: Int
let name: String
init(id: Int, name: String) {
self.id = id
self.name = name
}
static func == (one: Student, two: Student) -> Bool {
return one.id == two.id
}
}
In this created three variables (s1,s2) of a class.
Two objects(s1,s2) are created with same data The third object(s3) is a variable, reference to an object(s2), s3 and s2 are pointed to the same object.
s1==s2
: returns as both objects contain the same data s1===s2
: returns false as both objects’ references are different. s2===s3
: return true as both references to the same object.
let s1 = Student(id: 1, name: "abc")
let s2 = Student(id: 1, name: "abc")
let s3=s2;
print(s1==s2) // true
print(s1===s2) // false
print(s2===s3) // true
print(s1===s3) // false
Difference between double and triple equal operators in Swift
Double equal | Triple Equal |
---|---|
| ==, != are operators | ===, ,!== are operators |
Checks for data is same | Checks both objects contain the same data and same memory location |
Value comparison | Reference comparison |
Similar to == in Objective-C | Similar to isEqual in Objective-C |