Протоколы и динамическая диспетчеризация
Swift
Сложный
protocols
Задача «Протоколы и динамическая диспетчеризация»
Реализуйте систему для обработки сериализации данных на основе протоколов. Определите протокол `Serializable` с требованием метода `func serialize() -> String`. Создайте структуры `User` (с полями name: String, age: Int), `Address` (city: String, street: String), `Product` (id: Int, title: String, price: Double). Каждая структура должна соответствовать протоколу `Serializable`: возвращайте JSON-подобную строку (например, {"name":"John","age":30}). Напишите функцию `func processSerialization<T: Serializable>(_ items: [T]) -> [String]`, которая принимает массив элементов, соответствующих протоколу, и возвращает массив строк сериализации. Порядок элементов сохраняется. Ограничения: строки могут содержать только буквы латиницы, пробелы и цифры; экранирование не требуется. Вывод: каждая строка на новой строке.
Формат ввода
Первая строка — целое число N (1 ≤ N ≤ 100) — количество объектов. Затем для каждого объекта: строка с типом (User, Address, Product) и соответствующие поля через пробел. Для User: name (String) age (Int). Для Address: city (String) street (String). Для Product: id (Int) title (String) price (Double).
Формат вывода
N строк, каждая — результат сериализации соответствующего объекта в указанном формате.
Примеры
Пример 1
ВВОД
2
Address Paris RueDeRivoli
Product 42 Book 12.5
ВЫВОД
{"city":"Paris","street":"RueDeRivoli"}
{"id":42,"title":"Book","price":12.5}
Пример 2
ВВОД
3
2
3
1
ВЫВОД
Пример 3
ВВОД
3
https://httpbin.org/delay/1
https://httpbin.org/delay/2
https://httpbin.org/delay/0.5
1000
ВЫВОД
main.swift