Требовать тип и протокол для параметра метода

Я играю со Swift и спотыкаюсь о следующей проблеме: учитывая, что у меня есть предопределенный классAnimal:

//Predefined classes
class Animal {
    var height: Float = 0.0
}

Я сейчас пишу классZoo с конструктором, принимающим животных. НоZoo хочет, чтобы каждое животное имело имя и, следовательно, определяетNamable протокол.

protocol Namable {
    var name: String {get}
}

class Zoo {
    var animals: Animal[] = [];
}

Как бы вы написалиaddAnimal метод, который требует, чтобы объект, передаваемый в качестве параметра, былтип Animal а такжесоответствовать протоколу Namable? И как вы заявляете, что дляanimals массив?

    func addAnimal:(animal: ????) { ... }

В Objective-C я бы написал что-то вроде этого

    - (void)addAnimal:(Animal<Namable>*)animal {...}

Ответы на вопрос(4)

Ваш ответ на вопрос