Я играю с 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 {...}