arrays - How do I delegate a call to [0..<n] in swift? -


पृष्ठभूमि

सुविधा के लिए, मैं इस उपनाम का इस्तेमाल किया:

  typealias डेक = [इंट]  

मेरी ज़रूरतें बढ़ रही हैं, इसलिए मैंने अपना कोड इन्हें परिवर्तित कर दिया है:

  class deck { Var डेक: [इंट] // ... अन्य सदस्य}  

मैं अपने अधिकांश कॉल को self.deck के माध्यम से प्रतिनिधि कर सकता हूं, लेकिन googling के बाद कुछ हद तक चारों ओर, मैं अभी भी पता लगाना इस कॉल को सौंपने के लिए कैसे परेशानी हो रही हूँ: {} // करें & lt

  डेक में मैं के लिए जाने डेक = डेक () [5 0 ..! & lt]; --- इस कॉल के प्रतिनिधिमंडल को मैं कैसे लागू करूं?    प्रश्न   

P>

मुझे लगता है कि इसमें सबस्क्रिप्ट और श्रेणी (या हो सकता है अनुक्रम ?) के साथ कुछ करना है, लेकिन मेरे पास कोई भाग्य googling नहीं था इन दो विषयों का प्रतिच्छेदन।

डेक के लिए [0 .. <5 / कोड> आप n eed Sliceable प्रोटोकॉल, जो बारी में की आवश्यकता है CollectionType और SequenceType लागू करने के लिए।

निम्न उदाहरण औजार MutableCollectionType ताकि की स्थापना तत्व सरणी के रूप में अच्छी तरह अग्रेषित किया जाता है:

  वर्ग डेक {typealias DeckValueType = इंट typealias DeckIndexType = सरणी के & lt; DeckValueType & gt; .Index वर डेक: [DeckValueType] = [0, 1, 2, 3, 4, 5, 6] // सिर्फ प्रदर्शन के लिए ...} विस्तार डेक: SequenceType {समारोह उत्पन्न () - & gt; IndexingGenerator & LT; [DeckValueType] & gt; {वापसी deck.generate ()}} विस्तार डेक: MutableCollectionType {var STARTINDEX: DeckIndexType {वापसी deck.startIndex} वर ENDINDEX: DeckIndexType {वापसी deck.endIndex} सबस्क्रिप्ट (सूचकांक: DeckIndexType) - & gt; DeckValueType {{मिल वापसी डेक [सूचकांक]} सेट (newValue) {डेक [सूचकांक] = newValue}}} विस्तार डेक: Sliceable {सबस्क्रिप्ट (सीमा: रेंज के & lt; DeckIndexType & gt;) - & gt; ArraySlice & LT; DeckValueType & gt; {रिटर्न डेक [बाउंड]}}}  

और फिर यह काम करता है:

  डेक के लिए डेक () डेक में [0] । & Lt; 5] {println (i)}  

प्रकार के उपनाम कड़ाई से जरूरी नहीं होते हैं, लेकिन ये अंतर करना आसान बनाते हैं कि क्या int के रूप में उपयोग किया जाता है एक सरणी तत्व का प्रकार या एक सरणी अनुक्रमणिका के प्रकार के रूप में।

इसके अलावा आप सभी परिभाषाओं को कक्षा परिभाषा में डाल सकते हैं।

मैं किस प्रकार की प्रोटोकॉल के लिए आवश्यक है, यह स्पष्ट करने के लिए मैंने अलग एक्सटेंशन चुना है

Comments

Popular posts from this blog

python - Overriding the save method in Django ModelForm -

html - CSS autoheight, but fit content to height of div -

qt - How to prevent QAudioInput from automatically boosting the master volume to 100%? -