2017-03-16 1 views
-5

J'essaie de comprendre comment vérifier si une chaîne transmise à une fonction peut être trouvée dans un tableau composé de tuples en tant qu'éléments. Voici mon code. Je ne suis pas sûr de la meilleure façon de résoudre ce problème.Vérifiez si la chaîne fait partie du tableau de tuples - Swift

typealias myTuple = (input: String, magnitude: Int)  

var userInput = "Happy"        

var wordOneArray: [myTuple] = [] 

var magnitudeCount = 1 

var userInputTuple: myTuple = (userInput, magnitudeCount) 


magnitudeCount += magnitudeCound 

func addUserInput(tempArray: myTuple) {  

    if wordOneArray.contains(userInput) { 

     userInputTuple = (userInput, magnitudeCount += magnitudeCount) 

    } 

    wordOneArray.append(userInputTuple) 

    print(wordOneArray) 


} 

addUserInput(tempArray: userInputTuple) 

userInput = "Sad" 

userInputTuple = (userInput, magnitudeCount) 

addUserInput(tempArray: userInputTuple) 
+0

Quelle est votre sortie attendue? Quelles erreurs obtenez-vous, et sur quelles lignes? – Hamish

+0

J'obtiens une erreur sur la ligne d'instruction if "missing argument label" où: 'call.J'ai aussi une erreur dans la ligne suivante qui dit' + = 'produit'() ', pas le type de résultat contextuel attendu' Int Je ne sais pas pourquoi sur le second.La première correction d'erreur n'a pas de sens pour moi –

+0

S'il vous plaît [modifier] votre question avec cette information.La raison de la première erreur est que vous ne pouvez pas demander directement si un tableau de tuples contient une chaîne - vous devrez utiliser un prédicat personnalisé (d'où la raison pour laquelle le compilateur suggère 'contains (where:)'). La raison de la deuxième erreur est que '+ =' renvoie 'Void'. pour le déplacer hors de l'assignation de tuple, et juste assigner 'magnitudeCount' à la place - voir par exemple http://stackoverflow.com/q/36185088/2976878 – Hamish

Répondre

0

Tout d'abord, votre code ne compile pas:/

Dans tous les cas, vous pouvez utiliser wordOneArray.contains(where: { $0.0 == userInput }) pour savoir si le tuple contient la chaîne.

+0

merci de rechercher cette chaîne particulière dans tous les tuples du tableau ? ou juste le premier? –

+0

Il fera une boucle à travers l'ensemble du tableau unt il trouve un tuple avec une chaîne correspondante et retourne 'true' s'il le fait, sinon il retournera' false' à la place. –

+0

ok génial. ça a bien marché. Le dernier morceau est que j'essaye d'incrémenter le "magnitudeCount" de l'élément de tuple donné. J'ai modifié mon code mais il ne donne pas la bonne sortie .. (aussi, Stackoverflow ne me permettra pas de coller mon code ici, il dit que c'est trop long pour un commentaire). Avez-vous des idées sur la façon dont je pourrais incrémenter la magnitudeCount si une correspondance est trouvée? –