Combining initializer requirements in protocols with generic types
We included an initializer requirement when we declared the AnimalProtocol
protocol, so we know the necessary arguments to create an instance of any class that conforms to this protocol. We will add a new method that creates an instance of the generic type AnimalElement
and adds it to the party members in the Party<AnimalElement>
class.
The following lines show the code for the new createAndAddMember
method that receives a name
String
argument and returns an instance of the generic type AnimalElement
. We add the method to the body of the Party<AnimalElement: AnimalProtocol> where AnimalElement: Equatable
open class declaration. The code file for the sample is included in the swift_3_oop_chapter_06_07
folder:
open func createAndAddMember(name: String) -> AnimalElement {
let newMember = AnimalElement(name: name)
add(member: newMember)
return newMember
...