प्रोटोकॉल और डायनेमिक डिस्पैचिंग
Swift
Hard
protocols
कार्य «प्रोटोकॉल और डायनेमिक डिस्पैचिंग»
```html
प्रोग्रामिंग कार्य का अनुवाद:
डेटा सीरियलाइज़ेशन को प्रोटोकॉल के आधार पर संसाधित करने के लिए एक सिस्टम लागू करें। `Serializable` प्रोटोकॉल को `func serialize() -> String` विधि की आवश्यकता के साथ परिभाषित करें। `User` (फ़ील्ड्स: name: String, age: Int के साथ), `Address` (city: String, street: String के साथ), `Product` (id: Int, title: String, price: Double के साथ) संरचनाएँ बनाएँ। प्रत्येक संरचना को `Serializable` प्रोटोकॉल का पालन करना चाहिए: JSON-जैसी स्ट्रिंग लौटाएँ (उदाहरण के लिए, {"name":"John","age":30})। `func processSerialization<T: Serializable>(_ items: [T]) -> [String]` फ़ंक्शन लिखें, जो प्रोटोकॉल का पालन करने वाले तत्वों की एक सरणी लेता है और सीरियलाइज़ेशन स्ट्रिंग्स की एक सरणी लौटाता है। तत्वों का क्रम संरक्षित रहता है। सीमाएँ: स्ट्रिंग्स में केवल लैटिन अक्षर, स्पेस और अंक हो सकते हैं; एस्केपिंग की आवश्यकता नहीं है। आउटपुट: प्रत्येक स्ट्रिंग एक नई पंक्ति पर।
```
प्रोग्रामिंग कार्य का अनुवाद:
डेटा सीरियलाइज़ेशन को प्रोटोकॉल के आधार पर संसाधित करने के लिए एक सिस्टम लागू करें। `Serializable` प्रोटोकॉल को `func serialize() -> String` विधि की आवश्यकता के साथ परिभाषित करें। `User` (फ़ील्ड्स: name: String, age: Int के साथ), `Address` (city: String, street: String के साथ), `Product` (id: Int, title: String, price: Double के साथ) संरचनाएँ बनाएँ। प्रत्येक संरचना को `Serializable` प्रोटोकॉल का पालन करना चाहिए: JSON-जैसी स्ट्रिंग लौटाएँ (उदाहरण के लिए, {"name":"John","age":30})। `func processSerialization<T: Serializable>(_ items: [T]) -> [String]` फ़ंक्शन लिखें, जो प्रोटोकॉल का पालन करने वाले तत्वों की एक सरणी लेता है और सीरियलाइज़ेशन स्ट्रिंग्स की एक सरणी लौटाता है। तत्वों का क्रम संरक्षित रहता है। सीमाएँ: स्ट्रिंग्स में केवल लैटिन अक्षर, स्पेस और अंक हो सकते हैं; एस्केपिंग की आवश्यकता नहीं है। आउटपुट: प्रत्येक स्ट्रिंग एक नई पंक्ति पर।
```
इनपुट प्रारूप
पहली पंक्ति में एक पूर्णांक N (1 ≤ N ≤ 100) है — वस्तुओं की संख्या। फिर प्रत्येक वस्तु के लिए: प्रकार (User, Address, Product) वाली एक स्ट्रिंग और स्पेस से अलग किए गए संबंधित फ़ील्ड। User के लिए: name (String) age (Int)। Address के लिए: city (String) street (String)। Product के लिए: id (Int) title (String) price (Double)।
आउटपुट प्रारूप
N पंक्तियाँ, प्रत्येक — निर्दिष्ट प्रारूप में संबंधित ऑब्जेक्ट के सीरियलाइज़ेशन का परिणाम।
उदाहरण
उदाहरण 1
इनपुट
2
Address Paris RueDeRivoli
Product 42 Book 12.5
आउटपुट
{"city":"Paris","street":"RueDeRivoli"}
{"id":42,"title":"Book","price":12.5}
उदाहरण 2
इनपुट
3
2
3
1
आउटपुट
उदाहरण 3
इनपुट
3
https://httpbin.org/delay/1
https://httpbin.org/delay/2
https://httpbin.org/delay/0.5
1000
आउटपुट
main.swift