Ruby: Argumente în linia de comandă cu ARGV

Background

În același mod în care trecem argumente la metode în Ruby, putem, de asemenea, să trecem argumente la programe întregi. Asta este exact ceea ce fac argumentele din linia de comandă. De fiecare dată când rulăm programul nostru Ruby, putem introduce diferite argumente de linie de comandă și putem obține rezultate diferite.

De ce să învățați acest lucru?##

În lecția Ruby intitulată „Putting the Form in Formatter”, ați folosit gets.chomp pentru a introduce datele de intrare ale utilizatorului în programul dumneavoastră Ruby. Utilizarea argumentelor din linia de comandă adaugă o nouă unealtă la centura de instrumente Ruby, pe care o puteți folosi pentru a aduce inputul utilizatorului în programul dumneavoastră, dacă doriți.

Utilizarea argumentelor din linia de comandă##

Ruby captează argumentele din linia de comandă cu o matrice specială numită ARGV. Atunci când este scris în interiorul programului dvs. Ruby, ARGV va prelua o comandă de linie de comandă care arată astfel:ruby testing_argv.rb these are elements in the argv array

și va crea un array care arată astfel:

Acum încercați!

Încercând ARGV##

  1. În Sublime Text, creați un fișier numit testing_argv.rb mergând la File > New File …
  2. După ce ați creat fișierul de test, asigurați-vă că îl salvați într-o locație ușor de găsit și haideți să începem să scriem codul nostru!
  3. Configurați ARGV pentru a capta argumentele din linia de comandăÎn interiorul lui testing_argv.rb, atribuiți ARGV unui tablou numit input_array, care va lega conținutul lui ARGV de o variabilă.

ARGV-Exemplu-1

Din moment ce ARGV creează un tablou, puteți apela orice metodă pe input_array pe care o puteți apela pe un tablou normal. De exemplu, puts input_array.length se va întoarce cu numărul de argumente pe care un utilizator le-a trecut.

De asemenea, puteți imprima rezultatele tabloului ARGV folosind puts input_array.to_s. Fișierul complet testing_argv.rb ar putea arăta cam așa:

ARGV-Exemplu-2

Pentru a testa fișierul, rulați programul în linia de comandă cu mai multe argumente după numele fișierului, astfel: ruby testing_argv.rb these are elements in the argv array

Linia de comandă ar trebui să vă spună că există 7 elemente în matrice și să le tipărească în consolă, astfel: ruby testing_argv.rb these are elements in the argv array

Linia de comandă ar trebui să vă spună că există 7 elemente în matrice și să le tipărească în consolă, astfel:

ARGV Console Output Example 1

Utilizarea Splat pentru a separa primul argument de restul##

Pentru programul dumneavoastră, este posibil să doriți să utilizați primul argument din linia de comandă ca o comandă, iar apoi să utilizați restul argumentelor ca un șir de text cu care puteți face lucruri. Iată o nouă expresie Ruby care vă poate ajuta să realizați acest lucru în mod simplu: first_arg, *the_rest = ARGV

Aici, atribuiți două variabile în același timp! Virgula le separă, iar * se numește splat. Ați folosit splat-ul într-un mod similar în lecția de la Codecademy despre metode, blocuri și sortare Ruby. Datorită lui *, Ruby știe să atribuie ARGV la first_arg, iar restul argumentelor la the_rest. Să demonstrăm acest lucru:

În programul dumneavoastră, scrieți: puts first_argputs the_rest

Apoi rulați ruby testing_argv.rb first and all the rest! în interiorul liniei de comandă.

##Cum puteți utiliza această tehnică?##Linia de comandă poate fi o interfață puternică pentru un program pe care l-ați scris. Aceste metode vă vor permite să capturați datele de intrare ale utilizatorului și apoi să le folosiți în mod corespunzător.

De exemplu, dacă ați construit un program de bancomat cu Ruby, ați putea folosi argumente din linia de comandă pentru a apela metode și a modifica contul bancar. Ați putea scrie o matrice ARGV care să ia primul argument din linia de comandă pentru a executa o metodă, cum ar fi „withdraw”, și apoi să folosească argumentele de după, poate „$20”, pentru a specifica câți bani să retrageți.

Există infinite moduri de a folosi ARGV și splats pentru a obține date din linia de comandă și a le face să facă ceva pentru dumneavoastră. Dacă doriți să aflați cum funcționează ARGV, consultați documentul său Ruby-doc aici.

.