How do I use associated types in protocols in Swift?

In Swift, associated types are used in protocols to define a placeholder type that is expected to be provided later. This allows for more flexible and reusable protocols, enabling different types to conform to the protocol while still adhering to the expected behavior.

Here’s a simple example demonstrating how to use associated types in Swift protocols:

// Define a protocol with an associated type protocol Container { associatedtype Item var items: [Item] { get } mutating func add(item: Item) } // Conform a struct to the protocol struct IntContainer: Container { var items: [Int] = [] mutating func add(item: Int) { items.append(item) } } // Conforming another struct with a different type struct StringContainer: Container { var items: [String] = [] mutating func add(item: String) { items.append(item) } } // Usage var intContainer = IntContainer() intContainer.add(item: 5) var stringContainer = StringContainer() stringContainer.add(item: "Hello")

Swift associated types protocols generics code examples