Ruby: Kommandozeilenargumente mit ARGV

Hintergrund

So wie wir in Ruby Argumente an Methoden übergeben, können wir auch Argumente an ganze Programme übergeben. Das ist genau das, was Kommandozeilenargumente tun. Jedes Mal, wenn wir unser Ruby-Programm ausführen, können wir verschiedene Befehlszeilenargumente eingeben und erhalten unterschiedliche Ergebnisse.

Warum lernen?##

In der Ruby-Lektion Putting the Form in Formatter hast du gets.chomp verwendet, um Benutzereingaben in dein Ruby-Programm zu bringen. Die Verwendung von Kommandozeilenargumenten erweitert deinen Ruby-Werkzeuggürtel um ein neues Werkzeug, mit dem du Benutzereingaben in dein Programm bringen kannst, wenn du willst.

Befehlszeilenargumente verwenden##

Ruby fängt Befehlszeilenargumente mit einem speziellen Array namens ARGV auf. Wenn Sie es in Ihr Ruby-Programm schreiben, nimmt ARGV einen Kommandozeilenbefehl, der wie folgt aussieht:ruby testing_argv.rb these are elements in the argv array

und erstellt ein Array, das wie folgt aussieht:

Nun versuchen Sie es!

Ausprobieren von ARGV##

  1. Erstelle in Sublime Text eine Datei mit dem Namen testing_argv.rb, indem du auf Datei > Neue Datei … gehst
  2. Nachdem du deine Testdatei erstellt hast, stelle sicher, dass du sie an einem leicht zu findenden Ort speicherst, und lass uns anfangen, unseren Code zu schreiben!
  3. Richten Sie ARGV ein, um Befehlszeilenargumente zu erfassenInnerhalb von testing_argv.rb weisen Sie ARGV einem Array namens input_array zu, das den Inhalt von ARGV an eine Variable bindet.

ARGV-Beispiel-1

Da ARGV ein Array erzeugt, können Sie jede Methode auf input_array aufrufen, die Sie auch auf ein normales Array aufrufen können. Zum Beispiel gibt puts input_array.length die Anzahl der Argumente zurück, die der Benutzer übergeben hat.

Sie können auch die Ergebnisse des ARGV-Arrays mit puts input_array.to_s ausgeben. Die vollständige testing_argv.rb Datei könnte etwa so aussehen:

ARGV-Beispiel-2

Um Ihre Datei zu testen, führen Sie das Programm auf der Kommandozeile mit mehreren Argumenten nach dem Dateinamen aus, etwa so: ruby testing_argv.rb these are elements in the argv array

Die Befehlszeile sollte Ihnen mitteilen, dass sich 7 Elemente in dem Array befinden, und diese auf der Konsole ausgeben, etwa so:

ARGV Konsolenausgabe Beispiel 1

Verwendung von Splat, um das erste Argument vom Rest zu trennen##

Für Ihr Programm möchten Sie vielleicht das erste Kommandozeilenargument als Befehl verwenden und den Rest der Argumente als eine Textkette, mit der Sie etwas anfangen können. Hier ist ein neuer Ruby-Ausdruck, mit dem Sie dies ganz einfach erreichen können: first_arg, *the_rest = ARGV

Hier weisen Sie zwei Variablen gleichzeitig zu! Das Komma trennt sie, und das * wird als Splat bezeichnet. In der Codecademy-Lektion über Ruby-Methoden, -Blöcke und -Sortierung haben Sie den Splat auf ähnliche Weise verwendet. Aufgrund des * weiß Ruby, dass ARGV an first_arg und der Rest der Argumente an the_rest zuzuordnen ist. Beweisen wir es:

Schreibe in dein Programm: puts first_argputs the_rest

Dann führen Sie ruby testing_argv.rb first and all the rest! in Ihrer Kommandozeile aus.

##Wie können Sie diese Technik anwenden?##Die Kommandozeile kann eine leistungsfähige Schnittstelle für ein von Ihnen geschriebenes Programm sein. Mit diesen Methoden können Sie Benutzereingaben erfassen und sie dann sinnvoll einsetzen.

Wenn du zum Beispiel ein Geldautomatenprogramm mit Ruby erstellt hast, könntest du Befehlszeilenargumente verwenden, um Methoden aufzurufen und dein Bankkonto zu ändern. Du könntest ein ARGV-Array schreiben, das dein erstes Kommandozeilenargument nimmt, um eine Methode wie „withdraw“ auszuführen, und dann die Argumente danach, vielleicht „$20“, verwenden, um festzulegen, wie viel Geld abgehoben werden soll.

Es gibt unendlich viele Möglichkeiten, ARGV und Splats zu verwenden, um Daten von der Kommandozeile zu erhalten und etwas für dich zu tun. Wenn du wissen willst, wie ARGV funktioniert, schau dir die Ruby-Doku hier an.