2014-10-02 7 views
28

में एकाधिक परिवर्तनीय असाइनमेंट स्विफ्ट का उपयोग करके एक पंक्ति में मैं एकाधिक चर कैसे आवंटित करूं?स्विफ्ट

var blah = 0 
    var blah2 = 2 

    blah = blah2 = 3 // Doesn't work??? 

उत्तर

50

आप नहीं करते हैं। यह एक भाषा एक मूल्य लौटने असाइनमेंट के मानक अवांछित पक्ष प्रभाव को रोकने के लिए सुविधा, described in the Swift book प्रकार है:

सी और ऑब्जेक्टिव-सी में असाइनमेंट ऑपरेटर के विपरीत, स्विफ्ट में असाइनमेंट ऑपरेटर अपने आप में एक मूल्य वापस नहीं करता । निम्नलिखित बयान मान्य नहीं है:

if x = y { 
     // this is not valid, because x = y does not return a value 
    } 

यह सुविधा दुर्घटना से इस्तेमाल किया जा रहा है जब ऑपरेटर (==) के बराबर वास्तव में इरादा है से असाइनमेंट ऑपरेटर (=) को रोकता है। x = y अमान्य बनाकर, स्विफ्ट आपको अपने कोड में इन प्रकार की त्रुटियों से बचने में मदद करता है।

तो, यह इस बेहद आम त्रुटि को रोकने में मदद करता है। हालांकि इस तरह की गलती को अन्य भाषाओं में कम किया जा सकता है - उदाहरण के लिए, Yoda conditions का उपयोग करके - स्विफ्ट डिजाइनरों ने स्पष्ट रूप से निर्णय लिया कि भाषा स्तर पर निश्चित करना बेहतर था कि आप पैर में खुद को गोली मार नहीं सकते थे। लेकिन इसका मतलब यह है कि आप का उपयोग नहीं कर सकते हैं:

blah = blah2 = 3 

आप एक लाइन पर काम करने के लिए बेताब हैं, तो आप टपल सिंटैक्स का उपयोग कर सकता है, लेकिन आप अभी भी विशेष रूप से प्रत्येक मान देना होगा:

(blah, blah2) = (3, 3) 

... और मैं इसकी अनुशंसा नहीं करता। यह पहली बार में असुविधाजनक महसूस कर सकते हैं, बस पूरी बात को लिखकर, जाने के लिए सबसे अच्छा तरीका है मेरी राय में:

blah = 3 
blah2 = 3 
+2

यह भारी हाथ सामान की तरह है कि मैं हर समय "जल्दी/युवा" भाषाओं में प्रकट होता है की तरह लग रहा है। भाषा के देवता कोड लिखना असंभव बनाते हैं, जिसे वे आपत्तिजनक पाते हैं (यह एक उदाहरण है, दूसरा '0' के साथ फ्लोट को उपसर्ग करने की आवश्यकता है [लिफ्ट x = .5' को तेजी से लिखने का प्रयास करें])। – dave

+2

blah = 3; blah2 = 3; –

2

स्वीकार किए जाते हैं जवाब कहते हैं: तुम्हें पता है, कुछ सख्त वाक्य रचना प्राप्त कर सकते हैं लेकिन आप से असाइन नहीं कर सकते a से bc एकाधिक लाइनों (सुरक्षा के लिए, शायद) के बिना। यहाँ कुछ अधिक संक्षिप्त वाक्य रचना एक पंक्ति में घोषित करने और कई चर आवंटित करने के लिए की एक उदाहरण है:

var red, green, blue, alpha : CGFloat 
(red, green, blue, alpha) = (0.0, 0.0, 0.0, 0.0) 
ledColor.getRed(&red, green: &green, blue: &blue, alpha: &alpha) 
+0

क्या आप उपर्युक्त कोड की व्याख्या कर सकते हैं। वास्तव में मैं इसे समझ नहीं सका :) –

+0

क्या आप पहली दो पंक्तियों को समझ चुके थे? –

+0

हां ... घोषणा और असाइनमेंट मिला। –