Swift version: 5.6
Swift gives us two equality operators, ==
and ===
, that do slightly different things. You will almost certainly need to use both of them so it’s worth taking the time to learn them.
First, ==
is the equality operator, which tests that two things are equal for whatever definition of “equal” those things use. For example, 5 == 5
is true because there ==
means an integer comparison, and the same is true for other built-in value types such as strings, booleans, and doubles.
Things get more complicated when ==
is used with a struct you built, because by default they cannot be compared – you need to make them conform to the Equatable
protocol.
In comparison, ===
is the identity operator, which checks whether two instances of a class point to the same memory. This is different from equality, because two objects that were created independently using the same values will be considered equal using ==
but not ===
because they are different objects.
The ===
operator is available only when using classes because structs are designed so they are always uniquely referenced.
SPONSORED Fernando's book will guide you in fixing bugs in three real, open-source, downloadable apps from the App Store. Learn applied programming fundamentals by refactoring real code from published apps. Hacking with Swift readers get a $10 discount!
Sponsor Hacking with Swift and reach the world's largest Swift community!
Available from iOS 8.0
This is part of the Swift Knowledge Base, a free, searchable collection of solutions for common iOS questions.
Link copied to your pasteboard.