मैं स्ट्रिंग्स की एक सरणी स्लाइस कर रहा हूं और इसे एक [String]
वैरिएबल पर सेट कर रहा हूं , लेकिन टाइप चेकर शिकायत कर रहा है। यह एक संभव संकलक बग है?
var tags = ["this", "is", "cool"]
tags[1..<3]
var someTags: [String] = tags[1..<3]
जवाबों:
श्रेणी के साथ किसी सरणी की सदस्यता लेने से कोई सरणी वापस नहीं होती है, लेकिन एक टुकड़ा। यद्यपि आप उस स्लाइस से एक सरणी बना सकते हैं।
var tags = ["this", "is", "cool"]
tags[1..<3]
var someTags: Slice<String> = tags[1..<3]
var someTagsArray: [String] = Array(someTags)
var someTags = tags[1..<3] var someTagsArray: [String] = someTags
यह आप और अधिक उपयोगी देता हैerror: 'Slice<String>' is not convertible to '[String]'
एक और सुविधाजनक तरीका एक कन्वर्ट करने के ArraySlice
लिए Array
यह है:
var tags = ["this", "is", "cool"]
var someTags: [String] = tags[1..<3] + []
यह सही नहीं है क्योंकि एक अन्य डेवलपर (या खुद) जो बाद में इसे देखता है, वह इसके उद्देश्य को नहीं समझ सकता है। अच्छी खबर यह है कि अगर उस डेवलपर (शायद आप) को हटा दें तो + []
वे तुरंत एक कंपाइलर त्रुटि के साथ मिलेंगे, जो इसके उद्देश्य को स्पष्ट करेगा।
बस स्लाइस को एक एरे के रूप में डालें जब यह बनाया जाता है। एक मध्यवर्ती चर का उपयोग किए बिना एक सरणी के रूप में अपने ऐरे को रखना। कोडेबल प्रकारों का उपयोग करते समय यह बहुत अच्छा काम करता है।
var tags = ["this", "is", "cool"]
tags = Array(tags[1..<3])
Slice
प्रलेखित हैं? इसके अलावा त्रुटि संदेश गलत है औरSlice
खेल के मैदान में [स्ट्रिंग] के रूप में दिखाई देता है। इस प्रकार ऐसा लगता है कि दो संकलक त्रुटियां और लापता दस्तावेज हैं।