Protocol extensions can provide default implementations for our own protocol methods. This makes it easy for types to conform to a protocol, and allows a technique called “protocol-oriented programming” – crafting your code around protocols and protocol extensions.
First, here’s a protocol called Identifiable
that requires any conforming type to have an id
property and an identify()
method:
protocol Identifiable {
var id: String { get set }
func identify()
}
We could make every conforming type write their own identify()
method, but protocol extensions allow us to provide a default:
extension Identifiable {
func identify() {
print("My ID is \(id).")
}
}
Now when we create a type that conforms to Identifiable
it gets identify()
automatically:
struct User: Identifiable {
var id: String
}
let twostraws = User(id: "twostraws")
twostraws.identify()
GO FURTHER, FASTER Unleash your full potential as a Swift developer with the all-new Swift Career Accelerator: the most comprehensive, career-transforming learning resource ever created for iOS development. Whether you’re just starting out, looking to land your first job, or aiming to become a lead developer, this program offers everything you need to level up – from mastering Swift’s latest features to conquering interview questions and building robust portfolios.
Sponsor Hacking with Swift and reach the world's largest Swift community!
Link copied to your pasteboard.