Declaring associated types in protocols
Now, we want to declare a PartyProtocol
protocol and make the generic Party<AnimalElement>
class conform to this new protocol. The main challenge is to specify the type for both the method arguments and returned values. In the generic class, we will use the generic type parameter, but protocols don't allow us to use them.
Associated types allow us to solve the problem. We can declare one or more associated types as part of the protocol definition. In this case, we just need one associated type to provide us with a placeholder name---also known as alias---to a type that we will use as part of the protocol and that will be specified during the protocol implementation, that is, when we declare a class that conforms to the protocol. It is just necessary to use the associatedtype
keyword followed by the desired name for the associated type, and then, we can use the name in our requirements' declarations.
The following lines show the declaration of the...