Ruby : Arguments de ligne de commande avec ARGV

Background

De la même manière que nous passons des arguments aux méthodes en Ruby, nous pouvons également passer des arguments à des programmes entiers. C’est exactement ce que font les arguments de ligne de commande. Chaque fois que nous exécutons notre programme Ruby, nous pouvons introduire des arguments de ligne de commande différents, et obtenir des résultats différents.

Pourquoi l’apprendre?##

Dans la leçon Ruby intitulée Putting the Form in Formatter, vous avez utilisé gets.chomp pour amener les entrées utilisateur dans votre programme Ruby. L’utilisation des arguments de ligne de commande ajoute un nouvel outil à votre ceinture d’outils Ruby, que vous pouvez utiliser pour faire entrer l’utilisateur dans votre programme si vous le souhaitez.

Utiliser les arguments de ligne de commande##

Ruby capture les arguments de ligne de commande avec un tableau spécial nommé ARGV. Lorsqu’il est écrit à l’intérieur de votre programme Ruby, ARGV prendra une commande de ligne de commande qui ressemble à ceci:ruby testing_argv.rb these are elements in the argv array

et créera un tableau qui ressemble à ceci :

Maintenant vous essayez !

Essayer ARGV##

  1. Dans Sublime Text, créez un fichier nommé testing_argv.rb en allant dans Fichier >Nouveau fichier …
  2. Une fois que vous avez créé votre fichier de test, assurez-vous de l’enregistrer dans un endroit facile à trouver, et commençons à écrire notre code !
  3. Configurer ARGV pour capturer les arguments de la ligne de commandeDans testing_argv.rb, assignez ARGV à un tableau appelé input_array, qui liera le contenu de ARGV à une variable.

ARGV-Exemple-1

Puisque ARGV crée un tableau, vous pouvez appeler n’importe quelle méthode sur input_array que vous pouvez appeler sur un tableau normal. Par exemple, puts input_array.length reviendra avec le nombre d’arguments qu’un utilisateur a passé.

Vous pouvez également imprimer les résultats du tableau ARGV en utilisant puts input_array.to_s. Le fichier testing_argv.rb complet pourrait ressembler à quelque chose comme ceci :

ARGV-Exemple-2

Pour tester votre fichier, exécutez le programme sur la ligne de commande avec plusieurs arguments suivant le nom du fichier, comme ceci : ruby testing_argv.rb these are elements in the argv array

Votre ligne de commande devrait vous indiquer qu’il y a 7 éléments dans le tableau, et les imprimer sur votre console, comme ceci :

ARGV Sortie console Exemple 1

Utilisation de Splat pour séparer le premier argument du reste#

Pour votre programme, vous pouvez vouloir utiliser le premier argument de la ligne de commande comme une commande, puis utiliser le reste des arguments comme une chaîne de texte avec laquelle vous pouvez faire des choses. Voici une nouvelle expression Ruby qui peut vous aider à accomplir cela simplement : first_arg, *the_rest = ARGV

Ici, vous assignez deux variables en même temps ! La virgule les sépare, et le * est appelé un splat. Vous avez utilisé le splat d’une manière similaire dans la leçon Codecademy sur les méthodes, blocs et tris Ruby. Grâce au *, Ruby sait qu’il faut affecter ARGV à first_arg, et le reste des arguments à the_rest. Prouvons-le :

Dans votre programme, écrivez : puts first_argputs the_rest

Puis exécutez ruby testing_argv.rb first and all the rest!à l’intérieur de votre ligne de commande.

##Comment pouvez-vous utiliser cette technique?##La ligne de commande peut être une interface puissante pour un programme que vous avez écrit. Ces méthodes vous permettront de capturer l’entrée de l’utilisateur, puis de l’utiliser à bon escient.

Par exemple, si vous avez construit un programme de guichet automatique avec Ruby, vous pourriez utiliser des arguments de ligne de commande pour appeler des méthodes et modifier votre compte bancaire. Vous pourriez écrire un tableau ARGV qui prend votre premier argument de ligne de commande pour exécuter une méthode, comme « withdraw », puis utiliser les arguments qui suivent, peut-être « $20 », pour spécifier la quantité d’argent à retirer.

Il existe une infinité de façons d’utiliser ARGV et splats pour obtenir des données de la ligne de commande et leur faire faire quelque chose pour vous. Si vous voulez aller au fond du fonctionnement d’ARGV, consultez sa Ruby-doc ici.