Ajouter un élément à un tableau en Swift
Supposons que j'ai un tableau, par exemple:
var myArray = ["Steve", "Bill", "Linus", "Bret"]
Et plus tard je voudrais pousser/ajouter un élément à la fin du tableau, pour obtenir:
["Steve", "Bill", "Linus", "Bret", "Tim"]
Quelle méthode dois-je utiliser?
Et qu'en est-il lorsque je veux ajouter un élément à la avant de la matrice? Est-il une constante de temps unshift?
- Steve Jobs, Bill Gates, Linus Torvalds, mais qui est Bret? - Je me sens comme je devrais le savoir (et je vais probablement me lancer quand je découvre!)
- Bret Victor? worrydream.com
- Bret Victor est correct. Son travail est dit avoir été une source d'inspiration pour les pièces de swift
- bare à l'esprit que vous ne pouvez jamais utiliser indice pour ajouter un élément dans un nouvel indice. subscripting est utilisé uniquement pour la mise à jour d'une valeur ou la lecture à partir d'un index existant. Donc, si vous avez
let array = [Int]()
vous ne pouvez jamais direarray[0] = 42
Il va donner index out of range d'erreur. Vous devez utiliserarray.append(42)
. Pourquoi ne pouvez-vous pas d'indice? Pour la même raison, vous ne pouvez pas faireletters[3] = d
pourlet letters = [a,b,c]
. Le 3ème indice est inexistante comme tableau[0] avant une valeur! - Ne pas lui apprendre à le faire. Tim ne doit pas figurer dans ce tableau, c'est une insulte pour les autres....
Vous devez vous connecter pour publier un commentaire.
De Swift 3 /4 /5, cela se fait comme suit.
Pour ajouter un nouvel élément à la fin d'un Tableau.
Pour ajouter un autre Tableau à la fin de votre Tableau.
Pour insérer un nouvel élément dans votre Tableau.
Pour insérer le contenu d'un Tableau différent dans votre Tableau.
Plus d'informations peuvent être trouvées dans la Collection "Types", chapitre de "Le Langage De Programmation Swift", à partir de la page 110.
.insert
serait un échec, mais.append
serait couronnée de succès? Je vais avoir ce problème avec un tableau pour l'instant, mais n'arrive pas à trouver quelque chose en ligne concernant. Je pourrais comprendre à la fois l'échec si le tableau étaient immuables.splice
renommerinsertContentsOf
dans Swift 2.Vous pouvez également passer une variable et/ou de l'objet, si vous vouliez.
Pour les ajouter à l'avant:
Comme d'autres l'ont déjà dit, vous ne pouvez plus utiliser '+=' comme de xCode 6.1
.prepend()
de la fonction, de l'insertion à la tête semble être une bonne approcheÀ ajouter à la fin, l'utilisation de la
+=
opérateur:Que l'opérateur est généralement équivalente à la
append(contenu:)
méthode. (Et dans de très vieux Swift versions, pourrait ajouter des éléments uniques, non seulement d'autres collections du même type d'élément.)Il y a aussi
insert(_:à:)
pour l'insertion à tout indice.Si, par exemple, vous souhaitez une fonction de commodité pour l'insertion, au début, vous pouvez l'ajouter à la
Array
classe avec un extension.myArray
est de typeArray
, puis la première ligne est incorrecte. Le+=
opérateur ne peut être utilisé que si les deuxmyArray
et l'opérande de droite sont de typeArray
.+=
etappend
sont équivalentes n'est pas correct, le premier implique la création d'un tableau temporaire qui seront jetés dès que la fonction opérateur il consomme.Utiliser += et + opérateurs :
alors utiliser :
Voici une petite extension si vous souhaitez insérer, au début du tableau sans perdre le point à la première position
Dans Swift 4.1 et Xcode 9.4.1
Nous pouvons ajouter des objets à un Tableau de Deux manières
De Type 1)
De Type 2)
Si vous souhaitez ajouter deux tableaux
À partir de la page 143 de La Swift Langage de Programmation:
Extrait De: Apple Inc. “La Swift Langage de Programmation.” iBooks. https://itun.es/us/jEUH0.l
À ajouter à la solutions suggérant
append
, il est utile de savoir que c'est un amorti de la constante de temps dans de nombreux cas:Je suis à la recherche d'un
cons
comme opérateur pour Swift. Il doit retourner un nouveau immuable tableau avec l'élément cloué sur la fin, en temps constant, sans modifier le tableau d'origine. Je n'ai pas encore trouvé une fonction standard qui fait cela. Je vais essayer de me rappeler de rapport si j'en trouve un!Vous pouvez utiliser
Si vous voulez ajouter d'objet unique, vous pouvez étendre Tableau struct
Si le tableau est NSArray vous pouvez utiliser le
adding
fonction pour ajouter un objet à la fin du tableau, comme ceci:Swift 4.2
Résultat:
Qui est une manière très simple, en ce qui concerne les!
Dans Swift 4.2:
Vous pouvez utiliser
ou
Exemple: les élèves = ["Ben" , "Ivy" , "Jordell"]
1) Pour ajouter des éléments à la fin d'un tableau, utilisez l'option append(_:)
students.append(\ "Maxime" )
2) Ajouter plusieurs éléments en même temps en passant un autre tableau ou une séquence de toute nature permettant de l'ajouter(contenu: méthode
students.append(contentsOf: ["Shakia" , "William"])
3) Pour ajouter de nouveaux éléments au moyen d'un tableau à l'aide de l'insert(_:à:) de la méthode des éléments singuliers
students.insert("Liam" , at:2 )
4) à l'Aide de l'insert(contenu:à:) pour insérer plusieurs éléments d'une autre collection ou littéral de tableau
students.insert(['Tim','TIM' at: 2 )