तुम बस ठीक structs उत्परिवर्तित कर सकते हैं, लेकिन आप mutating
साथ उन लोगों के परिवर्तनशील तरीकों पर टिप्पणी करने के लिए है।
struct SomeStruct {
var x:Int = 0
mutating func increment() {
x++;
}
}
संपादित करें:
मुझे कुछ स्पष्टीकरण यहां करते हैं। Structs उत्परिवर्तित जा सकता है:
var structA = SomeStruct()
structA.x // 0
structA.increment()
structA.x // 1
लेकिन केवल तभी जब आप var
के रूप में यह घोषणा की। यह संकलन नहीं:
let structA = SomeStruct()
// structA.increment() // Compile error
अब जब आप something.methodReturningStruct().mutatingMethod()
की तरह कुछ करते हैं, methodReturningStruct()
वास्तव में मूल struct की एक प्रति वापस आ जाएगी (मूल्य प्रकार के आधार पर)। लेकिन जब से तुम यह एक var
को आवंटित नहीं किया है, यह परोक्ष एक निरंतर रूप में माना जाएगा (अर्थात let
) ताकि आप उस संकलक त्रुटि मिलती है।
आप अभी भी एक ही बात कर सकते हैं, लेकिन तुम सिर्फ एक var
var structB = something.methodReturningStruct()
structB.mutatingMethod()
स्रोत
2014-06-12 04:29:41
के रूप में struct उपयोग करने के लिए तेजी से बताने के लिए दिखाने के अपने कोड और पूर्ण त्रुटि संदेश है (यह भी संकेत मिलता है जो लाइन) –
संपादन सवाल और जोड़ने कोड –