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