Associated types
An associated type declares a placeholder name that can be used instead of a type within a protocol. The actual type to be used is not specified until the protocol itself is adopted. While creating generic functions and types, we used a very similar syntax, as we have seen throughout this chapter. Defining associated types for a protocol, however, is a little different. We specify an associated type using the associatedtype
keyword.
Let's see how to use associated types when we define a protocol. For this example, we will create a simple protocol named MyProtocol
:
protocol MyProtocol { associatedtype E var items: [E] {get set} mutating func add(item: E) }
In this protocol, we declare an associated type named E
. We then use that associated type as the type for the items
array and also the parameter type for the add(item:)
method.
We can now create types that conform to this protocol by providing either a concrete type or a generic type for the associated type. Let...