Accepter l'entrée de l'utilisateur avec Gets en Ruby
Lors de la création d’une application de ligne de commande (CLI) dans Ruby, une fonctionnalité courante consiste à recevoir des entrées des utilisateurs, y compris le nom d’un utilisateur ou une réponse oui/non
. C’est là que le mot-clé gets
est utile.
Ce didacticiel montrera comment créer un programme CLI très simple qui permet aux utilisateurs d’entrer leurs noms et de les saluer en utilisant le nom qu’ils ont entré.
Exemple de code :
puts "Hi, welcome to my app."
puts "Enter your name to get started: "
name = gets
puts "Hello #{name}, nice to have you here"
Production :
Hi, welcome to my app.
Enter your name to get started:
Ci-dessus, la sortie que j’obtiens après avoir exécuté le code. À ce stade, le programme me demande d’entrer mon nom. C’est ce que fait gets
; il crée une invite et attend l’entrée de l’utilisateur.
Vous trouverez ci-dessous la sortie complète que j’obtiens après avoir entré mon nom en tant que John
et appuyé sur la touche Enter.
Hi, welcome to my app.
Enter your name to get started:
John
Hello John
, nice to have you here
Vous avez dû remarquer quelque chose de bizarre dans la sortie ci-dessus. Pourquoi le message d’accueil Bonjour John, ravi de vous avoir ici
s’est-il interrompu après John
? Pour comprendre ce qui se passe réellement, inspectez la variable name
.
Exemple de code :
puts "Hi, welcome to my app."
puts "Enter your name to get started: "
name = gets
puts name.inspect
puts "Hello #{name}, nice to have you here"
Production :
Hi, welcome to my app.
Enter your name to get started:
John
"John\n"
Hello John
, nice to have you here
Ci-dessus se trouve la sortie complète que j’obtiens après avoir entré John
comme nom. Vous pouvez voir que la variable name
s’affiche sous la forme John\n
.
C’est ainsi que gets
se comporte ; il ajoute automatiquement \n
à la valeur qu’il reçoit en tant qu’entrée utilisateur, c’est ce qu’on appelle le caractère de nouvelle ligne, et chaque fois qu’il apparaît dans un texte, cela signifie que le texte doit s’arrêter à ce point et continuer sur une nouvelle ligne.
Un bon moyen de résoudre ce problème consiste à utiliser la méthode chomp
, qui supprime tout caractère spécial de fin, non seulement le caractère de nouvelle ligne (\n
) mais également le caractère de retour chariot (\r
). Vous pouvez en savoir plus ici sur le fonctionnement de chomp
.
Exemple de code :
puts "Hi, welcome to my app."
puts "Enter your name to get started: "
name = gets.chomp
puts "Hello #{name}, nice to have you here"
Production :
Hi, welcome to my app.
Enter your name to get started:
John
Hello John, nice to have you here