Comment puis-je ajouter un tuple à un rapide Tableau?
J'essaye d'ajouter un n-uplet (par exemple, 2-élément n-uplet) à un tableau.
var myStringArray: (String,Int)[]? = nil
myStringArray += ("One", 1)
Ce que j'obtiens est:
Ne pouvait pas trouver une surcharge pour '+=' qui accepte fournis
les arguments
Astuce: j'ai essayé de faire une surcharge de l' '+=' par livre de référence:
@assignment func += (inout left: (String,Int)[], right: (String,Int)[]) {
left = (left:String+right:String, left:Int+right+Int)
}
...mais je n'ai pas eu droit.
Des idées? ...solution?
- Ne
append()
travail? - le problème, c'est le caractère facultatif de la matrice
- que faire si vous essayez à la surcharge de l'opérateur?
- toujours la question pourquoi le tableau facultatif?
- Je voulais ajouter dans un néant tableau, sans toutes les données précédentes.
- votre surcharge de l'opérateur est en train de faire un tout à fait autre chose que vous souhaitez réaliser...
- Vous n'avez pas besoin de surcharger n'importe quoi; votre syntaxe pour la première ligne juste besoin de réglage. Voir ma solution.
- Dans swift2.0,vous ne pouvez pas utiliser l'option ici, plus vous devrez ajouter un tableau. La bonne devrait être: var myStringArray: [(String,Int)] = [] myStringArray += [("Un", 1)]
- Double Possible de Ajouter un élément à un tableau dans Swift
Vous devez vous connecter pour publier un commentaire.
Puisque c'est encore la top réponse sur google pour ajouter des tuples d'un tableau, il est intéressant de noter que les choses ont légèrement changé dans la dernière version. à savoir:
lors de la déclaration d'/instanciation de tableaux; le type en est maintenant imbriquées à l'intérieur des accolades:
le composé opérateur d'affectation,
+=
, est maintenant utilisé pour la concaténation de tableaux; si l'ajout d'un seul élément, elle doit être imbriqué dans un tableau:il est également intéressant de noter que lors de l'utilisation de
append()
sur un tableau contenant nommé tuples, vous pouvez fournir à chaque propriété de la n-uplet vous êtes en train d'ajouter, comme un argument deappend()
:Extra argument 'value' in call
stuff.append((name: "test 2", value: 2))
Vous avez deux questions. Premier problème, vous n'êtes pas créer un "tableau de n-uplets", vous êtes en train de créer un "ensemble facultatif de tuples". Pour corriger cela, modifiez cette ligne:
à:
Deuxième, vous êtes en train de créer une variable, mais ne lui donnant pas une valeur. Vous devez créer un nouveau tableau et de l'affecter à la variable. Pour remédier à cela, ajoutez cette ligne après la première:
...ou vous pouvez simplement modifier la première ligne présente:
Après que, cette ligne fonctionne très bien et vous n'avez pas à vous soucier de la surcharge des opérateurs ou d'autres folies. Vous avez terminé!
Voici la solution complète. Une de ses deux lignes et on n'a même pas changé:
Si vous retirez l'option, il fonctionne très bien, sinon vous aurez à le faire:
Vous pouvez ne jamais ajouter un tableau vide, donc vous devrez l'initialiser à un certain point. Vous verrez dans la surcharge de l'opérateur ci-dessous que nous avons en quelque sorte le lazy load pour s'assurer qu'il n'est jamais nul.
Vous pourrait se condenser en un '+=' opérateur:
Puis composez le:
J'ai fini ici à plusieurs reprises à cause de ce problème. Toujours pas aussi facile que je l'aimerais avec ajout sur un tableau de n-uplets. Voici un exemple de la façon dont je le fais maintenant.
Définir un alias pour le Tuple - point clé
Tableau vide
Facile pour ajouter maintenant
Swift 4 solution:
Note:
Ce n'est pas travailler plus
si vous n':
vous obtiendrez une erreur
ce que vous avez besoin est :
Je pense qu'apple modification de cette représentation, car il est plus logique
Grâce à des commentaires:
La Sortie:
Tableau de tupules:
myStringArray
.nil
ne signifie pas "un tableau vide".[]
n'. Voir ma réponse.