2014-09-28 8 views
7

मान लें, उदाहरण के लिए, आप है निम्नलिखित कोड:स्विफ्ट - कन्स्ट्रक्टर पैरामीटर पर लेबल वैकल्पिक बनाओ?

struct SomeStruct { 
    init (arg1: String, arg2: Int){ 
      // Does Stuff with Variables 
    } 
} 

// Some Point Later 

var str = "fasfsad" 
var integer = 343 
let smth = SomeStruct(arg1: str, arg2: integer) 

यह संभव कानूनी निम्न कोड पंक्ति बनाने के लिए SomeStruct struct संशोधित करने के लिए है

let smth = SomeStruct(str, integer) 

उत्तर

7

हाँ, आप बाहरी पैरामीटर नाम के लिए एक अंडरस्कोर का उपयोग करके पैरामीटर गुमनाम बना सकते हैं:

struct SomeStruct { 
    init (_ arg1: String, _ arg2: Int){ 
      // Does Stuff with Variables 
    } 
} 
+3

सही है, लेकिन करने के लिए मूल प्रश्न के शब्द पर विभाजित बाल: यह कॉल साइट पर पैरामीटर लेबल * वैकल्पिक * नहीं बनाता है - यह आवश्यक है कि कॉलर उन्हें छोड़ दें। एक फ़ंक्शन/प्रारंभकर्ता घोषणा इसे कॉल करने के लिए बिल्कुल एक वाक्यविन्यास निर्दिष्ट करती है। यदि आप एकाधिक विकल्पों के साथ कॉलर्स प्रदान करना चाहते हैं, तो एकाधिक प्रारंभकर्ता घोषित करें। – rickster

+2

यह एक अच्छा मुद्दा है। यदि प्रारंभकर्ता को इस तरह से परिभाषित किया गया है, 'कुछ संरचना (arg1: str, arg2: integer) 'अब वैध कॉल नहीं है। –

3

आप इसे इस तरह कर सकते हैं:

struct A { 
    var a: String 
    var b: String 

    init(_ a: String,_ b: String) { 
     self.a = a 
     self.b = b 
    } 
} 

var x = A("S", "B") 
संबंधित मुद्दे