# 1. Utilizzo di Array
pedice con intervallo
Con Swift 5, quando scrivi ...
let newNumbers = numbers[0...position]
... newNumbers
non è 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 Array
un 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 Collection
protocollo (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]