Junior — Middle
Comment peut-on implémenter une méthode commune pour traiter toutes les collections qui implémentent un protocole spécifique?
sobes.tech IA
Réponse de l'IA
В Swift можно определить расширение (extension) для протокола, чтобы добавить общий метод, который будет доступен всем типам, реализующим этот протокол. Если у вас есть протокол, который описывает коллекцию, например Collection, вы можете добавить метод в его extension.
Пример:
extension Collection {
func describe() -> String {
return "Коллекция содержит \(self.count) элементов"
}
}
let array = [1, 2, 3]
print(array.describe()) // Коллекция содержит 3 элементов
let set: Set = ["a", "b"]
print(set.describe()) // Коллекция содержит 2 элементов
Таким образом, все коллекции, которые соответствуют протоколу Collection, автоматически получают метод describe(). Это позволяет централизованно реализовать функциональность для множества типов.