2016-09-01 14 views
11

मिलता है का उपयोग मैं एक तेज फ़ाइल में निम्न कोड:स्विफ्ट पाश में के लिए: उपयोग वर जाने उपयोग करने के लिए चेतावनी मिलता है, त्रुटि

func testDictionary(dict :Dictionary<String,AnyObject>) { 
    var str = "" 
    for var key in dict.keys { 
     str += key + ":" + dict[key]!.description + "\n" 
    } 
    self.alert("Dict", message: str) 
} 

उपरोक्त कोड में var के उपयोगकर्ता पर एक चेतावनी का उत्पादन for पाश, जो है:

Variable 'key' was never mutated; consider changing to 'let' constant 

हालांकि जब मैं varlet मैं निम्न त्रुटि प्राप्त करने के लिए बदलने के लिए:

'let' pattern cannot appear nested in an already immutable context 

सुझाए गए सुधार एक कंपाइलर त्रुटि होने पर मुझे चेतावनी क्यों मिलती है?

+9

बस 'dict.keys {key} में कुंजी के लिए। –

उत्तर

19

न तोवरहै और न हीजाने बयान में की जरूरत है। प्रकार यह:

for key in dict.keys { 
    str += key + ":" + dict[key]!.description + "\n" 
} 
+1

धन्यवाद! मैंने उखाड़ फेंक दिया है, लेकिन यह वास्तव में सवाल का जवाब नहीं देता है, जो 'सुझाए गए सुधार को संकलक त्रुटि होने पर मुझे चेतावनी क्यों मिलती है?' –

+1

यह आसान है। एक्सकोड बीटा पर आईडीई अभी भी इतना स्मार्ट नहीं है। यह आपको चेतावनी देता है कि आपको var का उपयोग नहीं करना चाहिए, लेकिन यह नोट करता है कि इसका उपयोग करना बेहतर होगा, भले ही यह त्रुटि हो ... – pedrouan

+0

यह एक्सकोड 7 में होता है, यह बीटा नहीं है। –

0

मुझे लगता है कि इस सवाल का जवाब यहाँ-इन डिफ़ॉल्ट रूप से पाश एक प्रमुख पहले से ही एक स्थिर है कि प्रदान करता है। इसलिए चलिए कीवर्ड का उपयोग अनावश्यक है। जब आप var कीवर्ड का उपयोग करते थे, तो आप कह रहे थे कि आप एक चर कुंजी चाहते हैं, लेकिन आप इसे कभी नहीं बदलते हैं, इसलिए आपको var का उपयोग करने की आवश्यकता नहीं है।

संबंधित मुद्दे