Protokolle und dynamische Dispatch

Swift Hard protocols

Aufgabe «Protokolle und dynamische Dispatch»

Implementieren Sie ein System zur Verarbeitung der Datenserialisierung basierend auf Protokollen. Definieren Sie das Protokoll `Serializable` mit der Anforderung einer Methode `func serialize() -> String`. Erstellen Sie die Strukturen `User` (mit Feldern name: String, age: Int), `Address` (city: String, street: String), `Product` (id: Int, title: String, price: Double). Jede Struktur muss dem Protokoll `Serializable` entsprechen: Geben Sie einen JSON-ähnlichen String zurück (z. B. {"name":"John","age":30}). Schreiben Sie eine Funktion `func processSerialization<T: Serializable>(_ items: [T]) -> [String]`, die ein Array von Elementen, die dem Protokoll entsprechen, entgegennimmt und ein Array von Serialisierungs-Strings zurückgibt. Die Reihenfolge der Elemente bleibt erhalten. Einschränkungen: Strings dürfen nur lateinische Buchstaben, Leerzeichen und Ziffern enthalten; eine Escape-Behandlung ist nicht erforderlich. Ausgabe: jeder String in einer neuen Zeile.

Eingabeformat

Die erste Zeile ist eine ganze Zahl N (1 ≤ N ≤ 100) — die Anzahl der Objekte. Dann für jedes Objekt: eine Zeile mit dem Typ (User, Address, Product) und die entsprechenden Felder durch Leerzeichen getrennt. Für User: name (String) age (Int). Für Address: city (String) street (String). Für Product: id (Int) title (String) price (Double).

Ausgabeformat

N Zeilen, jede ist das Ergebnis der Serialisierung des entsprechenden Objekts im angegebenen Format.

Beispiele

Beispiel 1

EINGABE
2 Address Paris RueDeRivoli Product 42 Book 12.5
AUSGABE
{"city":"Paris","street":"RueDeRivoli"} {"id":42,"title":"Book","price":12.5}

Beispiel 2

EINGABE
3 2 3 1
AUSGABE

Beispiel 3

EINGABE
3 https://httpbin.org/delay/1 https://httpbin.org/delay/2 https://httpbin.org/delay/0.5 1000
AUSGABE
main.swift