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