मैं स्विफ्ट में किसी सरणी के अंतिम तत्व को कैसे ला सकता हूं?


81

मे यह कर सकती हु:

var a = [1,5,7,9,22]
a.count               // 5
a[a.count - 1]        // 22
a[a.endIndex - 1]     // 22

लेकिन निश्चित रूप से वहाँ एक सुंदर तरीका है?


उस रास्ते में क्या गलत है? संभवतया, आप ".lastElement" पद्धति को जोड़ने के लिए अपना स्वयं का एक्सटेंशन प्रदान कर सकते हैं।
थिलो

7
इसके साथ कुछ भी गलत नहीं है सिवाय इसके कि यह बदसूरत है।
joseph.hainline

1
शायद गलत नहीं है, लेकिन एक-बंद त्रुटियों का खतरा है। मैं उत्तर में उल्लिखित एक विस्तार लिखूंगा।
thestoneage

मैं उम्मीद कर रहा था कि स्विफ्ट का lastIndexवर्जन है, जो कोटलिन में उपलब्ध है। लगता है जैसे मैं endIndex - 1अब के लिए के साथ रहना होगा ।
१०

जवाबों:


87

अपडेट: स्विफ्ट 2.0 में अब अंतर्निर्मित first:T?और last:T?संपत्तियां शामिल हैं ।


जब आप की जरूरत है आप अपने स्वयं के एक्सटेंशन प्रदान करके स्विफ्ट एपीआई के प्रीटीयर बना सकते हैं, जैसे:

extension Array {
    var last: T {
        return self[self.endIndex - 1]
    }
}

इससे अब आप किसी भी सरणी पर अंतिम तत्व का उपयोग कर सकते हैं:

[1,5,7,9,22].last

धन्यवाद! BTW, के endIndexमाध्यम से संदर्भित करने की आवश्यकता नहीं है self
रुडोल्फ एडमकोविच

14
Xcode6-Beta5 के रूप में, lastसंपत्ति अंतर्निहित (जैसा है first)। nilयदि सरणी खाली है तो यह वापस आ जाता है।
पैग

2
इस कार्यान्वयन के साथ समस्या यह है कि यह दुर्घटना करता है अगर एरे खाली है।
लुका एंजेलेटी

5
यदि आप पहले नहीं हैं, तो आप रिकी बॉबी
केविन बर्नड्ट

1
आपको स्विफ्ट 3 में अब इसकी आवश्यकता नहीं है। बेहतर जवाब के लिए नीचे देखें। .हेल्थ बनाया गया है।
sww314

101

beta5वहाँ के रूप में अब एक firstऔर lastसंपत्ति है

पहले और आखिरी को प्राप्त करने वाले एरे के अलावा, आलसी संग्रह भी पहले (और आखिरी यदि वे अप्रत्यक्ष रूप से अनुक्रमित कर सकते हैं) को लागू करते हैं, साथ ही साथ खाली भी हो जाते हैं।


8
इस दस्तावेज़ का लिंक शामिल करना अच्छा होगा
टिम पीटरसन 10

1
मुझे मत बताओ, @ joseph.hainline :)
Erik Aigner

एक उदाहरण के साथ अच्छा होगा
KML

इसके लिए धन्यवाद! दिलचस्प बात यह है कि Xcode 8.3.3 में iOS 10 मास्टर / डिटेल टेम्पलेट अभी भी फॉर्म x [x.count-1] के कोड का उपयोग करता है - लेकिन MUCH लंबे समय तक - बजाय x.last के।
ग्लेन

23

आप का उपयोग करके एक सरणी के अंतिम तत्व प्राप्त कर सकते हैं last संपत्ति हैं।

कोड:

let lastElement = yourArray.last

9

आप सरणी से अंतिम तत्व भी प्राप्त कर सकते हैं और निकाल सकते हैं
removeLast()

उदाहरण:

var array = [1, 2, 3]
let removed = array.removeLast()
// array is [1, 2]
// removed is 3

Apple डॉक्स से लिया गया (यह स्रोत समाप्त हो गया है लेकिन आप इस दस्तावेज़ पृष्ठ में उदाहरण पा सकते हैं )


1
ObjC हटाने की सुविधा के विपरीत, स्विफ्ट 4 यह जानने के लिए पर्याप्त स्मार्ट नहीं है कि क्या सरणी में कोई तत्व नहीं बचे हैं और खाली सरणी पर कोशिश करने पर क्रैश हो जाएगा।
जेस्केरी


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.