Ruby: Stejným způsobem, jakým v Ruby předáváme argumenty metodám, můžeme je předávat i celým programům: Argumenty příkazového řádku pomocí ARGV

Pozadí

. Právě k tomu slouží argumenty příkazového řádku. Při každém spuštění našeho programu v jazyce Ruby můžeme zadat různé argumenty příkazového řádku a získat různé výsledky.

Proč se to učit?##

V lekci Ruby nazvané Vložení formuláře do formátovače jste použili gets.chomp k tomu, abyste do svého programu v Ruby přivedli uživatelský vstup. Použití argumentů příkazového řádku přidává do vašeho opasku s nástroji Ruby nový nástroj, který můžete použít k tomu, abyste do svého programu dostali uživatelský vstup, pokud se tak rozhodnete.

Použití argumentů příkazového řádku##

Ruby zachycuje argumenty příkazového řádku pomocí speciálního pole s názvem ARGV. Při zápisu uvnitř vašeho programu v jazyce Ruby ARGV převezme příkaz příkazového řádku, který vypadá takto:ruby testing_argv.rb these are elements in the argv array

a vytvoří pole, které vypadá takto:

Teď to zkuste!

Vyzkoušejte ARGV##

  1. V aplikaci Sublime Text vytvořte soubor s názvem testing_argv.rb příkazem Soubor > Nový soubor …
  2. Jakmile vytvoříte testovací soubor, nezapomeňte jej uložit na snadno dostupné místo a můžeme začít psát náš kód!
  3. Nastavte ARGV pro zachycení argumentů příkazového řádkuUvnitř testing_argv.rb přiřaďte ARGV poli s názvem input_array, které obsah ARGV sváže s proměnnou.

ARGV-Example-1

Protože ARGV vytváří pole, můžete na input_array volat libovolnou metodu, kterou můžete volat na normálním poli. Například puts input_array.length vrátí počet argumentů, které uživatel předal.

Výsledky pole ARGV můžete také vypsat pomocí puts input_array.to_s. Celý soubor testing_argv.rb může vypadat takto:

ARGV-Example-2

Pro otestování souboru spusťte program na příkazovém řádku s více argumenty za názvem souboru, například takto: ruby testing_argv.rb these are elements in the argv array

Příkazový řádek by vám měl sdělit, že v poli je 7 položek, a vypsat je do konzoly takto:

ARGV Výstup na konzoli Příklad 1

Použití Splat k oddělení prvního argumentu od ostatních##

Pro svůj program můžete chtít použít první argument příkazového řádku jako příkaz a ostatní argumenty pak použít jako textový řetězec, se kterým můžete něco dělat. Zde je nový výraz v jazyce Ruby, který vám to pomůže jednoduše provést: first_arg, *the_rest = ARGV

Tady přiřazujete dvě proměnné najednou! Odděluje je čárka a * se nazývá splat. Podobným způsobem jste splat použili v lekci Codecademy o metodách, blocích a řazení v jazyce Ruby. Kvůli * Ruby ví, že má přiřadit ARGV k first_arg a zbytek argumentů k the_rest. Dokážeme to:

V programu napište:

: puts first_argputs the_rest

Poté spusťte ruby testing_argv.rb first and all the rest! uvnitř příkazového řádku.

##Jak můžete tuto techniku použít?##Příkazový řádek může být mocným rozhraním pro program, který jste napsali. Tyto metody vám umožní zachytit vstupy od uživatele a pak je dobře využít.

Pokud jste například vytvořili program pro bankomat v jazyce Ruby, můžete pomocí argumentů příkazového řádku volat metody a upravovat bankovní účet. Mohli byste napsat pole ARGV, které by přijalo první argument příkazového řádku pro provedení metody, například „vybrat“, a pak by pomocí argumentů za ním, třeba „20 dolarů“, určilo, kolik peněz se má vybrat.

Existuje nekonečné množství způsobů, jak využít ARGV a splats k získání dat z příkazového řádku a přimět je, aby pro vás něco udělaly. Pokud chcete přijít na kloub tomu, jak ARGV funguje, podívejte se na jeho Ruby-doc zde.