Swift version: 5.10
The Comparable
protocol allows use to use the <
, >
, <=
, and >=
operators with conforming data types, which in turn means that Swift knows how to sort arrays of those types. Most of Swift’s built-in types support Comparable
out of the box, but if you want your own type to conform to them then you need to implement <
– from that Swift can provide default implementations of the other three operators.
The <
function needs to accept two instances of your type, one of the left-hand side and one on the right, and return true if the left-hand object should be ordered before the right-hand object.
As an example, consider this simple Person
struct:
struct Person {
var name: String
}
That has one property called name
, and we’re going to make Person
conform to the Comparable
protocol based on that property. This means writing a static method called <
that takes two instances of Person
and internally compares the name
properties of each of them:
struct Person: Comparable {
var name: String
static func <(lhs: Person, rhs: Person) -> Bool {
return lhs.name < rhs.name
}
}
With that in place you can now use <
to compare two instances of Person
like this:
let taylor = Person(name: "Taylor Swift")
let justin = Person(name: "Justin Bieber")
print(taylor < justin)
SPONSORED Alex is the iOS & Mac developer’s ultimate AI assistant. It integrates with Xcode, offering a best-in-class Swift coding agent. Generate modern SwiftUI from images. Fast-apply suggestions from Claude 3.5 Sonnet, o3-mini, and DeepSeek R1. Autofix Swift 6 errors and warnings. And so much more. Start your 7-day free trial today!
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.