Protocolos y despacho dinámico
Swift
Hard
protocols
Tarea «Protocolos y despacho dinámico»
Implemente un sistema para procesar la serialización de datos basada en protocolos. Defina el protocolo `Serializable` con el requisito del método `func serialize() -> String`. Cree las estructuras `User` (con campos name: String, age: Int), `Address` (city: String, street: String), `Product` (id: Int, title: String, price: Double). Cada estructura debe cumplir con el protocolo `Serializable`: devuelva una cadena similar a JSON (por ejemplo, {"name":"John","age":30}). Escriba la función `func processSerialization<T: Serializable>(_ items: [T]) -> [String]`, que recibe un arreglo de elementos que cumplen con el protocolo y devuelve un arreglo de cadenas de serialización. El orden de los elementos se conserva. Restricciones: las cadenas solo pueden contener letras latinas, espacios y dígitos; no se requiere escape. Salida: cada cadena en una nueva línea.
Formato de entrada
La primera línea es un número entero N (1 ≤ N ≤ 100) — la cantidad de objetos. Luego, para cada objeto: una línea con el tipo (User, Address, Product) y los campos correspondientes separados por espacio. Para User: name (String) age (Int). Para Address: city (String) street (String). Para Product: id (Int) title (String) price (Double).
Formato de salida
N líneas, cada una es el resultado de la serialización del objeto correspondiente en el formato indicado.
Ejemplos
Ejemplo 1
ENTRADA
2
Address Paris RueDeRivoli
Product 42 Book 12.5
SALIDA
{"city":"Paris","street":"RueDeRivoli"}
{"id":42,"title":"Book","price":12.5}
Ejemplo 2
ENTRADA
3
2
3
1
SALIDA
Ejemplo 3
ENTRADA
3
https://httpbin.org/delay/1
https://httpbin.org/delay/2
https://httpbin.org/delay/0.5
1000
SALIDA
main.swift