# 1। Array
रेंज के साथ सबस्क्रिप्ट का उपयोग करना
5 स्विफ्ट के साथ, जब आप लिखते हैं ...
let newNumbers = numbers[0...position]
... newNumbers
प्रकार का नहीं है, Array<Int>
लेकिन प्रकार का है ArraySlice<Int>
। ऐसा इसलिए है क्योंकि Array
के subscript(_:)
रिटर्न एक ArraySlice<Element>
है कि, एप्पल के अनुसार, उपहार कुछ बड़े सरणी के भंडारण पर एक दृश्य।
इसके अलावा, स्विफ्ट Array
एक इनिशियलाइज़र भी प्रदान करता है जो init(_:)
हमें एक sequence
(सहित ArraySlice
) से एक नई सरणी बनाने की अनुमति देता है ।
इसलिए, आप उपयोग कर सकते हैं subscript(_:)
के साथ init(_:)
पहले से एक नई सरणी प्राप्त करने के क्रम में एन एक सरणी के तत्वों:
let array = Array(10...14) // [10, 11, 12, 13, 14]
let arraySlice = array[0..<3] // using Range
//let arraySlice = array[0...2] // using ClosedRange also works
//let arraySlice = array[..<3] // using PartialRangeUpTo also works
//let arraySlice = array[...2] // using PartialRangeThrough also works
let newArray = Array(arraySlice)
print(newArray) // prints [10, 11, 12]
# 2। का उपयोग करते हुए Array
की prefix(_:)
विधि
स्विफ्ट prefix(_:)
प्रकारों के लिए एक विधि प्रदान करता है जो Collection
प्रोटोकॉल के अनुरूप है (सहित Array
)। prefix(_:)
निम्नलिखित घोषणा है:
func prefix(_ maxLength: Int) -> ArraySlice<Element>
प्रारंभिक तत्वों से युक्त, लंबाई में अधिकतम गति तक, बाद का रिटर्न देता है।
Apple भी बताता है:
यदि संग्रह में अधिकतम लंबाई तत्वों की संख्या से अधिक है, तो परिणाम में संग्रह में सभी तत्व शामिल हैं।
इसलिए, पिछले उदाहरण के विकल्प के रूप में, आप दूसरे कोड के पहले तत्वों से एक नया सरणी बनाने के लिए निम्नलिखित कोड का उपयोग कर सकते हैं:
let array = Array(10...14) // [10, 11, 12, 13, 14]
let arraySlice = array.prefix(3)
let newArray = Array(arraySlice)
print(newArray) // prints [10, 11, 12]