#1. Utilisation de l' Array
indice avec plage
Avec Swift 5, lorsque vous écrivez…
let newNumbers = numbers[0...position]
… newNumbers
N'est pas de type Array<Int>
mais est de type ArraySlice<Int>
. C'est parce que Array
les subscript(_:)
retours et ArraySlice<Element>
qui, selon Apple, présentent une vue sur le stockage d'une plus grande baie.
En outre, Swift fournit également Array
un initialiseur appelé init(_:)
qui nous permet de créer un nouveau tableau à partir d'un sequence
(y compris ArraySlice
).
Par conséquent, vous pouvez utiliser subscript(_:)
avec init(_:)
pour obtenir un nouveau tableau à partir des n premiers éléments d'un tableau:
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. Utilisation de Array
la prefix(_:)
méthode de
Swift fournit une prefix(_:)
méthode pour les types conformes au Collection
protocole (y compris Array
). prefix(_:)
a la déclaration suivante:
func prefix(_ maxLength: Int) -> ArraySlice<Element>
Renvoie une sous-séquence, jusqu'à maxLength en longueur, contenant les éléments initiaux.
Apple déclare également:
Si la longueur maximale dépasse le nombre d'éléments de la collection, le résultat contient tous les éléments de la collection.
Par conséquent, comme alternative à l'exemple précédent, vous pouvez utiliser le code suivant afin de créer un nouveau tableau à partir des premiers éléments d'un autre tableau:
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]