Ruby: Argomenti della linea di comando con ARGV

Sfondo

Nello stesso modo in cui passiamo argomenti ai metodi in Ruby, possiamo anche passare argomenti a interi programmi. Questo è esattamente ciò che fanno gli argomenti della linea di comando. Ogni volta che eseguiamo il nostro programma Ruby possiamo inserire diversi argomenti della linea di comando, e ottenere risultati diversi.

Perché impararlo? ##

Nella lezione su Ruby intitolata Mettere il Form in Formatter, hai usato gets.chomp per portare l’input dell’utente nel tuo programma Ruby. L’uso degli argomenti della linea di comando aggiunge un nuovo strumento alla tua cintura di strumenti Ruby, che puoi usare per portare l’input dell’utente nel tuo programma, se vuoi.

Using Command Line Arguments##

Ruby cattura gli argomenti della linea di comando con un array speciale chiamato ARGV. Quando è scritto all’interno del tuo programma Ruby, ARGV prenderà un comando a riga di comando che assomiglia a questo:ruby testing_argv.rb these are elements in the argv array

e creerà un array che assomiglia a questo:

Ora prova tu!

Provare ARGV##

  1. In Sublime Text, crea un file chiamato testing_argv.rb andando su File > Nuovo File …
  2. Una volta creato il tuo file di prova, assicurati di salvarlo in un posto facile da trovare, e cominciamo a scrivere il nostro codice!
  3. Imposta ARGV per catturare gli argomenti della riga di comandoAll’interno di testing_argv.rb, assegna ARGV a un array chiamato input_array, che legherà il contenuto di ARGV a una variabile.

ARGV-Example-1

Siccome ARGV crea un array, puoi chiamare qualsiasi metodo su input_array che puoi chiamare su un array normale. Per esempio, puts input_array.length ritornerà con il numero di argomenti passati dall’utente.

Puoi anche stampare i risultati dell’array ARGV usando puts input_array.to_s. Il file completo testing_argv.rb potrebbe assomigliare a questo:

ARGV-Example-2

Per provare il vostro file, eseguite il programma sulla linea di comando con più argomenti dopo il nome del file, come questo: ruby testing_argv.rb these are elements in the argv array

La tua linea di comando dovrebbe dirti che ci sono 7 elementi nell’array, e stamparli nella tua console, come questo:

ARGV Console Output Example 1

Usare Splat per separare il primo argomento dal resto##

Per il tuo programma, potresti voler usare il primo argomento della linea di comando come un comando, e poi usare il resto degli argomenti come una stringa di testo con cui puoi fare qualcosa. Ecco una nuova espressione Ruby che può aiutarvi a realizzare questo semplicemente: first_arg, *the_rest = ARGV

Qui state assegnando due variabili allo stesso tempo! La virgola le separa, e il * è chiamato splat. Hai usato lo splat in modo simile nella lezione di Codecademy su Ruby Methods, Blocks and Sorting. A causa del *, Ruby sa di assegnare ARGV a first_arg, e il resto degli argomenti a the_rest. Proviamolo:

Nel tuo programma, scrivi: puts first_argputs the_rest

Poi esegui ruby testing_argv.rb first and all the rest! all’interno della tua linea di comando.

##Come puoi usare questa tecnica? ###La linea di comando può essere una potente interfaccia per un programma che hai scritto. Questi metodi vi permetteranno di catturare l’input dell’utente, e poi farne buon uso.

Per esempio, se hai costruito un programma ATM con Ruby, potresti usare gli argomenti della linea di comando per chiamare metodi e modificare il tuo conto corrente. Potreste scrivere un array ARGV che prende il vostro primo argomento della linea di comando per eseguire un metodo, come “withdraw”, e poi usare gli argomenti successivi, magari “$20”, per specificare quanti soldi prelevare.

Ci sono infiniti modi di usare ARGV e splats per ottenere dati dalla linea di comando e fargli fare qualcosa per voi. Se volete sapere come funziona ARGV, date un’occhiata al suo Ruby-doc qui.