Ruby: Argumentos de Linha de Comando com ARGV
- Fundo
- Porquê Aprender? ##
- Usar argumentos de linha de comando##
- Tentando ARGV###6676> Em Texto Sublime, crie um arquivo chamado testing_argv.rb indo para Arquivo > Novo arquivo … Após ter criado seu arquivo de teste, certifique-se de salvá-lo em um local fácil de encontrar, e vamos começar a escrever nosso código! Configure ARGV para capturar argumentos de linha de comandoInside testing_argv.rb, atribua ARGV a um array chamado input_array, que irá ligar o conteúdo de ARGV a uma variável.
- Usando Splat para separar o primeiro argumento do resto##
Fundo
Da mesma forma que passamos argumentos a métodos em Ruby, também podemos passar argumentos a programas inteiros. É exatamente isso que os argumentos de linha de comando fazem. Cada vez que corremos o nosso programa Ruby podemos alimentar diferentes argumentos de linha de comandos, e obter resultados diferentes.
Porquê Aprender? ##
Na lição Ruby intitulada Putting the Form in Formatter, você usou gets.chomp
para trazer a entrada do utilizador para o seu programa Ruby. Usando argumentos de linha de comando adiciona uma nova ferramenta ao seu cinturão de ferramentas Ruby, que você pode usar para obter a entrada do usuário no seu programa, se você escolher.
Usar argumentos de linha de comando##
Ruby captura argumentos de linha de comando com um array especial chamado ARGV
. Quando escrito dentro do seu programa Ruby, ARGV
irá pegar num comando de linha de comandos com esta aparência:ruby testing_argv.rb these are elements in the argv array
e criar um array com esta aparência:
Agora você tenta!
Tentando ARGV###6676>
- Em Texto Sublime, crie um arquivo chamado
testing_argv.rb
indo para Arquivo > Novo arquivo …
- Após ter criado seu arquivo de teste, certifique-se de salvá-lo em um local fácil de encontrar, e vamos começar a escrever nosso código!
- Configure
ARGV
para capturar argumentos de linha de comandoInside testing_argv.rb
, atribua ARGV
a um array chamado input_array
, que irá ligar o conteúdo de ARGV
a uma variável.
testing_argv.rb
indo para Arquivo > Novo arquivo … ARGV
para capturar argumentos de linha de comandoInside testing_argv.rb
, atribua ARGV
a um array chamado input_array
, que irá ligar o conteúdo de ARGV
a uma variável.Desde que ARGV
crie um array, você pode chamar qualquer método em input_array
que você possa chamar em um array normal. Por exemplo, puts input_array.length
retornará com o número de argumentos que um usuário passou.
Você também pode imprimir os resultados do array ARGV
usando puts input_array.to_s
. O arquivo completo testing_argv.rb
pode se parecer com isto:
Para testar seu arquivo, execute o programa na linha de comando com múltiplos argumentos seguindo o nome do arquivo, desta forma: ruby testing_argv.rb these are elements in the argv array
A sua linha de comando deve dizer-lhe que existem 7 itens no array, e imprimi-los para o seu console, assim:
Usando Splat para separar o primeiro argumento do resto##
Para o seu programa, você pode querer usar o primeiro argumento da linha de comando como um comando, e então usar o resto dos argumentos como uma string de texto com o qual você pode fazer coisas. Aqui está uma nova expressão Ruby que o pode ajudar a realizar isto de forma simples: first_arg, *the_rest = ARGV
Aqui, você está atribuindo duas variáveis ao mesmo tempo! A vírgula as separa, e a *
é chamada de splat. Você usou o splat de maneira similar na lição da Codecademy sobre Métodos Ruby, Blocos e Ordenação. Por causa do *
, Ruby sabe atribuir ARGV
a first_arg
, e o resto dos argumentos ao_rest. Vamos prová-lo:
No seu programa, escreva: puts first_arg
puts the_rest
>Então execute ruby testing_argv.rb first and all the rest!
dentro da sua linha de comandos.
##Como pode usar esta Técnica?##A linha de comandos pode ser uma interface poderosa para um programa que tenha escrito. Estes métodos lhe permitirão capturar a entrada do usuário, e então colocá-lo em bom uso.
Por exemplo, se construiu e criou um programa ATM com Ruby, pode usar argumentos de linha de comandos para chamar métodos e modificar a sua conta bancária. Você poderia escrever um array ARGV que pegasse seu primeiro argumento de linha de comando para executar um método, como “retirar”, e então usar os argumentos depois dele, talvez “$20”, para especificar quanto dinheiro retirar.
Existem infinitas maneiras de usar ARGV e splats para obter dados da linha de comando e fazer com que ele faça algo por você. Se você quer chegar ao fundo de como ARGV funciona, veja o seu Ruby-doc aqui.