Protocolos e despacho dinâmico
Swift
Hard
protocols
Tarefa «Protocolos e despacho dinâmico»
Implemente um sistema para processar serialização de dados com base em protocolos. Defina o protocolo `Serializable` com a exigência do método `func serialize() -> String`. Crie as estruturas `User` (com os campos name: String, age: Int), `Address` (city: String, street: String), `Product` (id: Int, title: String, price: Double). Cada estrutura deve estar em conformidade com o protocolo `Serializable`: retorne uma string no formato JSON (exemplo: {"name":"John","age":30}). Escreva a função `func processSerialization<T: Serializable>(_ items: [T]) -> [String]`, que recebe um array de elementos que estão em conformidade com o protocolo e retorna um array de strings de serialização. A ordem dos elementos é preservada. Restrições: as strings podem conter apenas letras latinas, espaços e dígitos; não é necessário escape. Saída: cada string em uma nova linha.
Formato de Entrada
A primeira linha contém um número inteiro N (1 ≤ N ≤ 100) — a quantidade de objetos. Em seguida, para cada objeto: uma linha com o tipo (User, Address, Product) e os campos correspondentes separados por espaço. Para User: name (String) age (Int). Para Address: city (String) street (String). Para Product: id (Int) title (String) price (Double).
Formato de Saída
N linhas, cada uma sendo o resultado da serialização do objeto correspondente no formato especificado.
Exemplos
Exemplo 1
ENTRADA
2
Address Paris RueDeRivoli
Product 42 Book 12.5
SAÍDA
{"city":"Paris","street":"RueDeRivoli"}
{"id":42,"title":"Book","price":12.5}
Exemplo 2
ENTRADA
3
2
3
1
SAÍDA
Exemplo 3
ENTRADA
3
https://httpbin.org/delay/1
https://httpbin.org/delay/2
https://httpbin.org/delay/0.5
1000
SAÍDA
main.swift