如果我從陣列中洗掉元素并將其存盤在這樣的變數中:
let lastFive = myArray.suffix(5)
或這個:
let lastFive = myArray.dropLast(5)
lastFive 將Array<SomeType>.SubSequence代替元素型別 SomeType。我如何使 lastFive 成為[Element] 而不是 a SubSequence?
uj5u.com熱心網友回復:
我喜歡使用這個擴展:
extension Sequence {
func asArray() -> [Element] {
return Array(self)
}
}
也就是說,theCollection和Sequence協議都定義了一個sequence()方法。
Sequence.prefix()回傳[Element]whileCollection.prefix()回傳 a SubSequence。
給定Array如下定義,我們可以做一些有趣的事情。
let myArray = [1, 2, 3, 4, 5]
以下內容有效,因為編譯器知道Sequence使用suffix().
func lastFive() -> [Int] {
return myArray.suffix(5)
}
這里我只是使用上面的擴展。
func lastFive2() -> [Int] {
return myArray.suffix(5).asArray()
}
以下內容也有效,因為編譯器知道Sequence使用suffix().
func lastFive3() -> [Int] {
let suffix: [Int] = myArray.suffix(5)
return suffix
}
這不會編譯,因為編譯器假定您要Collection使用suffix().
func doesNotCompile() -> [Int] {
let suffix = myArray.suffix(5)
return suffix
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/419143.html
標籤:
上一篇:如何在陣列中找到第二個最常見的字符,在平局的情況下,從左側出現的第二個最常見的字符
下一篇:如何從陣列物件中洗掉元素
