Ruby: Command Line Arguments with ARGV
Tło
W ten sam sposób, w jaki przekazujemy argumenty do metod w Rubim, możemy również przekazywać argumenty do całych programów. To jest dokładnie to, co robią argumenty linii poleceń. Za każdym razem, gdy uruchamiamy nasz program w Rubim, możemy podawać różne argumenty wiersza poleceń i uzyskiwać różne wyniki.
Dlaczego warto się tego nauczyć?##
W lekcji Rubiego zatytułowanej Umieszczanie formy w Formatterze, użyłeś gets.chomp
aby wprowadzić dane użytkownika do swojego programu w Rubim. Użycie argumentów wiersza poleceń dodaje nowe narzędzie do twojego pasa narzędzi Rubiego, które możesz użyć do wprowadzenia danych użytkownika do twojego programu, jeśli chcesz.
Używanie argumentów linii poleceń##
Ruby przechwytuje argumenty linii poleceń za pomocą specjalnej tablicy o nazwie ARGV
. Kiedy napiszesz wewnątrz swojego programu w Rubim, ARGV
przyjmie polecenie wiersza poleceń, które wygląda jak to:ruby testing_argv.rb these are elements in the argv array
i utworzy tablicę, która wygląda jak to:
Teraz spróbuj!
Próbując ARGV##
- W Sublime Text, utwórz plik o nazwie
testing_argv.rb
przechodząc do Plik > Nowy plik … - Po utworzeniu pliku testowego, upewnij się, że zapisałeś go w łatwym do znalezienia miejscu, i zacznijmy pisać nasz kod!
- Ustaw
ARGV
, aby przechwytywać argumenty wiersza poleceńWewnątrztesting_argv.rb
przypiszARGV
do tablicy o nazwieinput_array
, która zwiąże zawartośćARGV
ze zmienną.
Ponieważ ARGV
tworzy tablicę, możesz wywołać na input_array
dowolną metodę, którą możesz wywołać na normalnej tablicy. Na przykład, puts input_array.length
zwróci liczbę argumentów, jaką przekazał użytkownik.
Możesz również wydrukować wyniki tablicy ARGV
za pomocą puts input_array.to_s
. Pełny plik testing_argv.rb
może wyglądać mniej więcej tak:
Aby przetestować swój plik, uruchom program w wierszu poleceń z wieloma argumentami następującymi po nazwie pliku, jak poniżej: ruby testing_argv.rb these are elements in the argv array
Twój wiersz poleceń powinien Ci powiedzieć, że w tablicy jest 7 elementów i wypisać je na konsolę, jak w ten sposób:
Użycie Splat do oddzielenia pierwszego argumentu od reszty##
W swoim programie możesz chcieć użyć pierwszego argumentu wiersza poleceń jako polecenia, a następnie użyć reszty argumentów jako łańcucha tekstu, z którym możesz robić różne rzeczy. Oto nowe wyrażenie Rubiego, które pomoże Ci to osiągnąć w prosty sposób: first_arg, *the_rest = ARGV
Tutaj przypisujesz dwie zmienne w tym samym czasie! Przecinek oddziela je, a *
jest nazywane splatem. Używałeś splat w podobny sposób w lekcji Codecademy o Ruby Methods, Blocks and Sorting. Ze względu na *
, Ruby wie, aby przypisać ARGV
do first_arg
, a resztę argumentów do the_rest. Udowodnijmy to:
W swoim programie napisz: puts first_arg
puts the_rest
Następnie uruchom ruby testing_argv.rb first and all the rest!
wewnątrz swojego wiersza poleceń.
##Jak możesz wykorzystać tę Technikę?##Linia poleceń może być potężnym interfejsem dla napisanego przez Ciebie programu. Te metody pozwolą Ci przechwycić dane wejściowe użytkownika, a następnie dobrze je wykorzystać.
Na przykład, jeśli zbudowałeś program bankomatowy w Rubim, możesz użyć argumentów wiersza poleceń do wywołania metod i modyfikacji konta bankowego. Mógłbyś napisać tablicę ARGV, która pobiera pierwszy argument wiersza poleceń, aby wykonać metodę, taką jak „withdraw”, a następnie użyć argumentów po niej, być może „$20”, aby określić, ile pieniędzy wypłacić.
Istnieją nieskończone sposoby użycia ARGV i splats, aby uzyskać dane z wiersza poleceń i sprawić, że zrobią coś dla Ciebie. Jeśli chcesz się dowiedzieć jak działa ARGV, sprawdź jego dokumentację w Ruby tutaj.