You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Mon problème venait pour la fonction battle: Mon but était de proposer à l'utilisateur, les options de joueur disponible (avec un index: ex "1 pour Jean, 2 pour Paul,...").
La fonction readline() renvoie un String?.
Au début, je voulais faire un unwrapping avec Int(), mais comme Dimitri l'avait dit, cela ne fera que crée des erreurs selon les entrées des utilisateurs.
J'ai donc voulu faire l'inverse: pour l'entrée récupérer, je vérifie qu'il correspond à un String(i) pour lesquelles i correspond à toutes les valeurs dispo:
Cette fonction renvoie vraie si l'entree n'est pas valide faux si l'entree est valide func entree_juste(entree : String?, nb: Int)-> Bool for i in 1 ... nb { var nombre_string = String(i) if entree == nombre_string { return false; } } print("Votre entrée est invalide"); return true;
}
`
Cette fonction me permettrait de faire un repeat while tant que l'entrée utilisateur est erroné:
repeat { var entree_utilisateur = readLine() } while (entree_juste(entree: entree_utilisateur, nb: all_Trainer.count))
Cependant, j'ai un problème lors de la compilation: " error: use of unresolved identifier 'entree_utilisateur' "
Ce qui est normal, vu qu'il n'y a pas eu d'entrée pour l'instant.
Le problème vient de la portée de la variable entree_utilisateur. Elle est définie à l'intérieur du repeat par var entree_utilisateur = ..., puis utilisée dans la condition while. Il semble que swift nécessite que la variable entree_utilisateur soit déclarée hors de la boucle pour qu'elle soit visible dans la condition.
Donc pour corriger le problème il suffit d'ajouter var entree_utilisateur : SonType avant le repeat.
@kyouko-taiga : Est-ce bien ça ? Dans ce cas, la portée des variables internes dans la condition serait un proposal à faire sur swift-evolution.
Bonjour,
Mon problème venait pour la fonction battle: Mon but était de proposer à l'utilisateur, les options de joueur disponible (avec un index: ex "1 pour Jean, 2 pour Paul,...").
La fonction
readline()
renvoie unString?
.Au début, je voulais faire un unwrapping avec
Int()
, mais comme Dimitri l'avait dit, cela ne fera que crée des erreurs selon les entrées des utilisateurs.J'ai donc voulu faire l'inverse: pour l'entrée récupérer, je vérifie qu'il correspond à un
String(i)
pour lesquelles i correspond à toutes les valeurs dispo:Cette fonction renvoie vraie si l'entree n'est pas valide faux si l'entree est valide
func entree_juste(entree : String?, nb: Int)-> Bool
for i in 1 ... nb {
var nombre_string = String(i)
if entree == nombre_string {
return false;
}
}
print("Votre entrée est invalide");
return true;
}
`
Cette fonction me permettrait de faire un repeat while tant que l'entrée utilisateur est erroné:
repeat { var entree_utilisateur = readLine() } while (entree_juste(entree: entree_utilisateur, nb: all_Trainer.count))
Cependant, j'ai un problème lors de la compilation: " error: use of unresolved identifier 'entree_utilisateur' "
Ce qui est normal, vu qu'il n'y a pas eu d'entrée pour l'instant.
Cette personne a eu le même problème mais une mise à jour de Xcode était suffisante, et sous GNULinux... (https://openclassrooms.com/forum/sujet/xcode-readline-issue?page=1#message-91428887)
Y'a t-il une solution?
Merci
The text was updated successfully, but these errors were encountered: