यहां पर कुछ अतिरिक्त कर रहे हैं लेता है कि वहाँ किसी को मदद मिल सकती है:
अपने उदाहरण का उपयोग करना:
enum Foo {
case bar(baz: String)
case baz(bar: String)
}
आप समझ सकते हैं आर के "घोंसला" यह अपनी खुद की enum
के case
में:
enum FooExtended {
case foo(Foo) // <-- Here will live your instances of `Foo`
case fuzz(Int)
}
इस समाधान के साथ
, यह अधिक "छिपा" मामलों जुड़े प्रकार का उपयोग करने की श्रमसाध्य हो जाता है। लेकिन यह सरलीकरण वास्तव में कुछ अनुप्रयोगों में फायदेमंद हो सकता है।
बस द्वारा एक अन्य विकल्प गुजरता पुन: बनाने और इसे विस्तार करते हुए एक तरह से में Foo
कन्वर्ट करने के लिए होने के लिए बढ़ाया enum
FooExtended
(जैसे एक कस्टम init
साथ।):
enum FooExtended {
case bar(baz: String)
case baz(bar: String)
case fuzz(Int)
init(withFoo foo: Foo) {
switch foo {
case .bar(let baz):
self = .bar(baz: baz)
case .baz(let bar):
self = .baz(bar: bar)
}
}
}
कई स्थानों पर हो सकता है, जहां एक, अन्य, या इन दोनों समाधानों का बिल्कुल कोई मतलब नहीं है, लेकिन मुझे पूरा यकीन है कि वे किसी के लिए आसान हो सकते हैं (भले ही केवल व्यायाम के रूप में)।