Ruby: Kommandolinjeargumenter med ARGV

Baggrund

På samme måde som vi overdrager argumenter til metoder i Ruby, kan vi også overdrage argumenter til hele programmer. Det er præcis, hvad kommandolinjeargumenter gør. Hver gang vi kører vores Ruby-program, kan vi indtaste forskellige kommandolinjeargumenter og få forskellige resultater.

Hvorfor lære det?##

I Ruby-lektionen med titlen Putting the Form in Formatter brugte du gets.chomp til at bringe brugerinput ind i dit Ruby-program. Ved at bruge kommandolinjeargumenter tilføjes der et nyt værktøj til din Ruby-værktøjsbælte, som du kan bruge til at få brugerinput ind i dit program, hvis du ønsker det.

Anvendelse af kommandolinjeargumenter###

Ruby opfanger kommandolinjeargumenter med et særligt array ved navn ARGV. Når ARGV skrives inde i dit Ruby-program, tager ARGV en kommandolinjekommando, der ser sådan ud:ruby testing_argv.rb these are elements in the argv array

og opretter et array, der ser sådan ud:ruby testing_argv.rb these are elements in the argv array

og opretter et array, der ser sådan ud:

Nu skal du prøve!

Afprøv ARGV###

  1. I Sublime Text skal du oprette en fil med navnet testing_argv.rb ved at gå til File > New File …
  2. Når du har oprettet din testfil, skal du sørge for at gemme den på et sted, der er let at finde, og lad os begynde at skrive vores kode!
  3. Sæt ARGV op til at opfange kommandolinjeargumenterInden for testing_argv.rb skal du tildele ARGV til et array kaldet input_array, som vil binde indholdet af ARGV til en variabel.

ARGV-Eksempel-1

Da ARGV opretter et array, kan du kalde enhver metode på input_array, som du kan kalde på et normalt array. F.eks. vil puts input_array.length vende tilbage med det antal argumenter, som en bruger har angivet.

Du kan også udskrive resultaterne af arrayet ARGV ved hjælp af puts input_array.to_s. Den fulde testing_argv.rb-fil kan se nogenlunde sådan ud:

ARGV-Example-2

For at teste din fil skal du køre programmet på kommandolinjen med flere argumenter efter filnavnet, f.eks. sådan her: ruby testing_argv.rb these are elements in the argv array

Din kommandolinje bør fortælle dig, at der er 7 elementer i arrayet, og udskrive dem til din konsol, som her:

ARGV Console Output Example 1

Ved brug af Splat til at adskille det første argument fra resten##

For dit program vil du måske bruge det første kommandolinjeargument som en kommando, og derefter bruge resten af argumenterne som en tekststreng, som du kan gøre ting med. Her er et nyt Ruby-udtryk, der kan hjælpe dig med at opnå dette på en enkel måde: first_arg, *the_rest = ARGV

Her tildeler du to variabler på samme tid! Kommaet adskiller dem, og * kaldes en splat. Du har brugt splat’en på en lignende måde i Codecademy-lektionen om Ruby Metoder, blokke og sortering. På grund af * ved Ruby, at ARGV skal tildeles first_arg, og resten af argumenterne skal tildeles the_rest. Lad os bevise det:

I dit program skal du skrive:

puts first_argputs the_rest

Kør derefter ruby testing_argv.rb first and all the rest! inde på din kommandolinje.

##Hvordan kan du bruge denne teknik?##Kommandolinjen kan være en kraftfuld grænseflade for et program, du har skrevet. Disse metoder gør det muligt for dig at opfange brugerinput og derefter bruge det til noget godt.

For eksempel, hvis du har bygget et ATM-program med Ruby, kan du bruge kommandolinjeargumenter til at kalde metoder og ændre din bankkonto. Du kunne skrive et ARGV-array, der tager dit første kommandolinjeargument til at udføre en metode, f.eks. “withdraw”, og derefter bruge argumenterne efter det, måske “$20”, til at angive, hvor mange penge der skal hæves.

Der er uendeligt mange måder at bruge ARGV og splats på til at hente data fra kommandolinjen og få dem til at gøre noget for dig. Hvis du ønsker at komme til bunds i hvordan ARGV fungerer, kan du læse dets Ruby-dokumentation her.