SE-0267 introduced the ability to attach a where
clause to functions inside generic types and extensions.
For example, we could start with a simple Stack
struct that let us push and pop values from a private array:
struct Stack<Element> {
private var array = [Element]()
mutating func push(_ obj: Element) {
array.append(obj)
}
mutating func pop() -> Element? {
array.popLast()
}
}
Using SE-0267, we could add a new sorted()
method to that stack, but only for times when the elements inside the stack conform to Comparable
:
extension Stack {
func sorted() -> [Element] where Element: Comparable {
array.sorted()
}
}
SPONSORED Still waiting on your CI build? Speed it up ~3x with Blaze - change one line, pay less, keep your existing GitHub workflows. First 25 HWS readers to use code HACKING at checkout get 50% off the first year. Try it now for free!
Sponsor Hacking with Swift and reach the world's largest Swift community!
Download all Swift 5.3 changes as a playground Link to Swift 5.3 changes
Link copied to your pasteboard.