मैं स्विफ्ट के लिए नया हूँ और इस तरह एक उदाहरण विधि का उपयोग कर एक वस्तु के सदस्य चर को प्रारंभ करना चाहते हैं: init
विधि मेंस्विफ्ट
class MyClass {
var x: String
var y: String
func createY() -> String {
self.y = self.x + "_test" // this computation could be much more complex
}
init(x: String) {
self.x = x
self.y = self.createY()
}
}
मूल रूप से, के बजाय इनलाइन किए जाने वाले सभी प्रवर्तन कोड , मैं y
के प्रारंभिक विधि createY
पर प्रारंभिक कोड निकालना चाहता हूं और init
में इस उदाहरण विधि createY
पर कॉल करें। हालांकि, स्विफ्ट संकलक (स्विफ्ट 1.2 Xcode 6.3 बीटा में संकलक) की शिकायत है: पहले
विधि कॉल 'xxx' में 'स्वयं' के उपयोग super.init प्रारंभ स्वयं
यहाँ 'xxx' है इंस्टेंस विधि का नाम (createY)।
मैं समझ सकता हूं कि स्विफ्ट कंपाइलर क्या शिकायत कर रहा है और संभावित समस्या जिसे वह संबोधित करना चाहता है। हालांकि, मुझे नहीं पता कि इसे कैसे ठीक किया जाए। init
में प्रारंभिक कोड के अन्य उदाहरण विधि को कॉल करने के लिए स्विफ्ट में सही तरीका क्या होना चाहिए?
वर्तमान में, मैं चारों ओर काम के रूप में निम्नलिखित चाल का उपयोग लेकिन मुझे नहीं लगता कि यह इस समस्या का मुहावरेदार समाधान है (और इस समाधान का y
की आवश्यकता है var
let
जो मुझे भी असहज महसूस करता है के बजाय का उपयोग कर घोषित करने):
init(x: String) {
self.x = x
super.init()
self.y = createY()
}
कोई भी टिप्पणी की सराहना की जाती है। धन्यवाद।
उत्तर के लिए धन्यवाद, ऐसा लगता है कि मैं अभी भी घोषित करने के लिए है ' वाई '' चलो 'के बजाय' var 'का उपयोग कर रहे हैं भले ही मेरा' वाई 'चर अपरिवर्तनीय है? – nybon
@nybon मैंने कक्षा के लिए कोड को यह दिखाने के लिए जोड़ा कि मेरा उपयोग करने के लिए 'createY() 'का अर्थ था। 'चलो ठीक होना चाहिए। –