मैं एक फ़ैक्टरी फ़ंक्शन बनाना चाहता हूं जो कक्षा प्रकार में लेता है और एक कन्स्ट्रक्टर देता है, ताकि मैं इसका उपयोग कर सकूं बाद में उस वर्ग का उदाहरण बनाने के लिए निर्माता।स्विफ्ट: एक फ़ैक्टरी फ़ंक्शन बनाना जो क्लास पैरामीटर को पैरामीटर के रूप में लेता है, और उस वर्ग के निर्माता का निर्माण करता है
कल्पना कीजिए कि मेरे पास दो वर्ग हैं, ऐप्पल और ऑरेंज, जो फलों के सबक्लास हैं। उन्हें unknownNumber
के साथ प्रारंभ करने की आवश्यकता है जिसे मैं केवल बाद में ही जानता हूं।
class Apple: Fruit {
init(unknownNumber: Int) {
...
}
}
class Orange: Fruit {
init(unknownNumber: Int) {
...
}
}
मैं एक कारखाने समारोह है कि, एक कक्षा प्रकार में लेती है, ताकि मैं बाद में इस फ़ंक्शन को कॉल करें और फलों के विशिष्ट उपवर्ग को प्रारंभ कर सकते हैं, unknownNumber साथ बनाना चाहते हैं।
//concept:
func makeFruit(typeOfFruit) -> (Int) -> Fruit {
return { (unknownNumber: Int) -> Fruit in
return typeOfFruit(unknownNumber)
}
}
एक orangeFactory बनाने के लिए, तो, मैं कर सकते हैं:
let orangeFactory = makeFruit(Orange)
// then at a later time when I have the unknown number
let orangeInstance = orangeFactory(unknownNumber)
मैं बस unknownNumber
एक आलसी चर बनाने का विकल्प के बारे में पता कर रहा हूँ, लेकिन मेरे विशिष्ट मामले में unknownNumber
बस नहीं है एक संख्या और इसमें अन्य प्रक्रियाएं शामिल हैं, इसलिए संरचना को सरल रखने के लिए, जब मैं सब कुछ उपलब्ध हो, तो मैं केवल ऑब्जेक्ट बनाना चाहता हूं।
स्विफ्ट में ऐसा कुछ संभव है? मैं थोड़ी देर के लिए ऑनलाइन शोध कर रहा हूं और मुझे कोई सीधा जवाब नहीं मिल रहा था। किसी भी तरह की सहायता का स्वागत किया जाएगा!
यह एक उत्कृष्ट उत्तर है। विधि बहुत सरल लगती है, लेकिन स्विफ्ट के ऑब्जेक्ट सृजन मॉडल के कई छोटे idiosyncrasies के ज्ञान की भी आवश्यकता है। मैं अब यह कोशिश कर रहा हूं और अगर यह काम करता है तो जल्द ही आपको बताएगा! – gokeji