87
L'indexation d'un tableau avec une plage ne renvoie pas un tableau, mais une tranche. Vous pouvez cependant créer un tableau à partir de cette tranche.
var tags = ["this", "is", "cool"]
tags[1..<3]
var someTags: Slice<String> = tags[1..<3]
var someTagsArray: [String] = Array(someTags)
Slice
documenté? De plus, le message d'erreur est incorrect etSlice
s'affiche sous la forme [String] dans la cour de récréation. Il semble donc qu'il y ait deux erreurs de compilation et une documentation manquante.var someTags = tags[1..<3] var someTagsArray: [String] = someTags
il vous donne le plus utileerror: 'Slice<String>' is not convertible to '[String]'
var tags = ["this", "is", "cool"] var someTags: [String] = Array(tags[1..<3]) println("someTags: \(someTags)") // "someTags: [is, cool]"
la source
Vous pouvez également le faire pour obtenir un nouveau tableau de la tranche:
var tags = ["this", "is", "cool"] var someTags = [String]() someTags += tags[1..<3] println(someTags[0]) //prints ["is", "cool"]
la source
Une autre façon de faire cela en un seul endroit est de combiner la déclaration de variable
let someTags: [String]
etmap(_:)
, qui se transformeraArraySlice<String>
en[String]
:let tags = ["this", "is", "cool"] let someTags: [String] = tags[1..<3].map { $0 } // ["is", "cool"]
la source
Un autre moyen pratique de convertir un
ArraySlice
enArray
est le suivant:var tags = ["this", "is", "cool"] var someTags: [String] = tags[1..<3] + []
Ce n'est pas parfait car un autre développeur (ou vous-même) qui le regarde plus tard peut ne pas comprendre son objectif. La bonne nouvelle est que si ce développeur (peut-être vous) supprime le,
+ []
il rencontrera immédiatement une erreur de compilation, ce qui, espérons-le, clarifiera son objectif.la source
Il suffit de lancer la tranche en tant que matrice lors de sa création. Conserver votre tableau sous forme de tableau sans avoir à utiliser une variable intermédiaire. Cela fonctionne très bien lorsque vous utilisez des types codables.
var tags = ["this", "is", "cool"] tags = Array(tags[1..<3])
la source