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