# 1. Utilizzo di Arraypedice con intervallo
Con Swift 5, quando scrivi ...
let newNumbers = numbers[0...position]
... newNumbersnon è di tipo Array<Int>ma è di tipo ArraySlice<Int>. Questo perché Arrayèsubscript(_:) restituisceArraySlice<Element> , secondo Apple, presenta una vista sull'archiviazione di un array più grande.
Inoltre, Swift fornisce anche Arrayun inizializzatore chiamato init(_:)che ci consente di creare un nuovo array da un sequence(inclusoArraySlice ).
Pertanto, puoi usare subscript(_:)coninit(_:) per ottenere un nuovo array dai primi n elementi di un array:
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. Utilizzando Array'sprefix(_:) metodo di
Swift fornisce un prefix(_:)metodo per i tipi conformi al Collectionprotocollo (inclusiArray ). prefix(_:)ha la seguente dichiarazione:
func prefix(_ maxLength: Int) -> ArraySlice<Element>
Restituisce una sottosequenza, fino a maxLength di lunghezza, contenente gli elementi iniziali.
Apple afferma inoltre:
Se la lunghezza massima supera il numero di elementi nella raccolta, il risultato contiene tutti gli elementi nella raccolta.
Pertanto, in alternativa all'esempio precedente, è possibile utilizzare il codice seguente per creare un nuovo array dai primi elementi di un altro array:
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]