2015-03-17 6 views
12

क्या कोई तरीका है, if let और/या विकल्प का उपयोग करने के समान, यह जांचने के लिए कि क्या आप स्विफ्ट में एक खाली बफर इंडेक्स करने वाले हैं या नहीं?'एरे इंडेक्स से बाहर श्रेणी' त्रुटि को कैसे रोकें?

+0

"बफर" परिभाषित करें? –

+0

मुझे नहीं पता कि इसका क्या अर्थ है। यह एक त्रुटि है जब मैं एक सरणी अनुक्रमणिका तक पहुंचने का प्रयास करता हूं जो अभी तक मौजूद नहीं है; बहुत ऊँचा। सरणी में 10 तत्व हो सकते हैं, लेकिन ऐप 11 वें तक पहुंचने का प्रयास करता है। – webmagnets

+0

तो यह एक सरणी है, गिनती संपत्ति ('array.count') का उपयोग करके सरणी की सीमाओं की जांच करें GoZoner उसके उत्तर में एक उदाहरण देता है। –

उत्तर

14

अपनी खुद निर्धारित करें:

extension Array { 
    func ref (i:Int) -> T? { 
    return 0 <= i && i < count ? self[i] : nil 
    } 
} 

ref() समारोह एक वैकल्पिक देता है, तो यह nil हो सकता है, और आप ref() से दिए गए मान का उपयोग करने के लिए जब यह मौजूद है if let सिंटैक्स का उपयोग कर सकते हैं। आप इसका उपयोग इस प्रकार करेंगे:

var myA = [10,20,30] 
if let val = myA.ref(index) { 
    // Use 'val' if index is < 3 
} 
else { 
    // Do this if the index is too high 
} 
+1

मुझे यह बहुत अच्छी तरह से समझ में नहीं आता है। क्या आप मुझे दिखा सकते हैं कि इसका उपयोग कैसे करें और शायद यह क्या कर रहा है? – webmagnets

+0

बहुत बहुत धन्यवाद। – webmagnets

+0

मुझे लगता है कि रेफ को बेहतर नाम चाहिए। लेकिन मैं एक नहीं सोच सका। – osrl

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