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()
SPONSORED Take the pain out of configuring and testing your paywalls. RevenueCat's Paywalls allow you to remotely configure and A/B test your entire paywall UI without any code changes or app updates.
Sponsor Hacking with Swift and reach the world's largest Swift community!
Link copied to your pasteboard.