Ruby: Command Line Arguments with ARGV
Achtergrond
Op dezelfde manier waarop we in Ruby argumenten doorgeven aan methodes, kunnen we ook argumenten doorgeven aan hele programma’s. Dat is precies wat commandoregel argumenten doen. Elke keer dat we ons Ruby programma draaien, kunnen we verschillende command line argumenten invoeren, en verschillende resultaten krijgen.
Waarom dit leren? ##
In de Ruby les getiteld Putting the Form in Formatter, gebruikte u gets.chomp
om gebruikersinvoer in uw Ruby programma te brengen. Het gebruik van command line argumenten voegt een nieuwe tool toe aan uw Ruby toolbelt, die u kunt gebruiken om gebruikersinvoer in uw programma te krijgen als u daarvoor kiest.
Gebruik command line argumenten##
Ruby vangt command line argumenten op met een speciale array genaamd ARGV
. Wanneer ARGV
in uw Ruby-programma wordt geschreven, neemt het een commandoregelopdracht aan die er als volgt uitziet:ruby testing_argv.rb these are elements in the argv array
en maakt een array aan die er als volgt uitziet:
Nu probeert u het!
Uitproberen ARGV##
- In Sublime Text maakt u een bestand aan met de naam
testing_argv.rb
door te gaan naar Bestand > Nieuw bestand … - Nadat u uw testbestand heeft aangemaakt, slaat u het op een gemakkelijk te vinden plaats op, en laten we beginnen met het schrijven van onze code!
- Stel
ARGV
in om commandoregelargumenten op te vangenBinnentesting_argv.rb
, wijsARGV
toe aan een array genaamdinput_array
, die de inhoud vanARGV
zal binden aan een variabele.
Omdat ARGV
een array creëert, kunt u elke methode op input_array
aanroepen die u ook op een normale array kunt aanroepen. Bijvoorbeeld, puts input_array.length
zal terugkeren met het aantal argumenten dat een gebruiker heeft doorgegeven.
U kunt ook de resultaten van de ARGV
array afdrukken met puts input_array.to_s
. Het volledige testing_argv.rb
bestand zou er ongeveer zo uit kunnen zien:
Om uw bestand te testen, voert u het programma uit op de opdrachtregel met meerdere argumenten achter de bestandsnaam, zoals dit: ruby testing_argv.rb these are elements in the argv array
Uw opdrachtregel zou u moeten vertellen dat er 7 items in de matrix zijn, en deze afdrukken naar uw console, zoals dit:
Splat gebruiken om het eerste argument van de rest te scheiden##
Voor uw programma wilt u misschien het eerste argument op de opdrachtregel gebruiken als een opdracht, en vervolgens de rest van de argumenten gebruiken als een reeks tekst waarmee u dingen kunt doen. Hier is een nieuwe Ruby expressie die u kan helpen dit eenvoudig te bereiken: first_arg, *the_rest = ARGV
Hier, je wijst twee variabelen tegelijk toe! De komma scheidt ze, en de *
wordt een splat genoemd. Je hebt de splat op een vergelijkbare manier gebruikt in de Codecademy les over Ruby Methods, Blocks and Sorting. Vanwege de *
weet Ruby ARGV
toe te wijzen aan first_arg
, en de rest van de argumenten aan de_rest. Laten we het bewijzen:
In uw programma, schrijf: puts first_arg
puts the_rest
En voer ruby testing_argv.rb first and all the rest!
uit in uw opdrachtregel.
##Hoe kunt u deze techniek gebruiken?##De opdrachtregel kan een krachtige interface zijn voor een programma dat u hebt geschreven. Met deze methodes kunt u gebruikersinvoer vastleggen, en deze vervolgens goed gebruiken.
Als u bijvoorbeeld een geldautomaat programma heeft gebouwd met Ruby, zou u command line argumenten kunnen gebruiken om methodes aan te roepen en uw bankrekening te wijzigen. U zou een ARGV-array kunnen schrijven die uw eerste opdrachtregelargument neemt om een methode uit te voeren, zoals “opnemen”, en dan de argumenten erna gebruiken, misschien “$ 20”, om te specificeren hoeveel geld er moet worden opgenomen.
Er zijn oneindig veel manieren om ARGV en splats te gebruiken om gegevens van de opdrachtregel te krijgen en het iets voor u te laten doen. Als u tot op de bodem wilt uitzoeken hoe ARGV werkt, bekijk dan de Ruby-doc hier.