Ruby: Argumentos de Linha de Comando com ARGV

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>

  1. Em Texto Sublime, crie um arquivo chamado testing_argv.rb indo para Arquivo > Novo arquivo …
  2. 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!
  3. 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.

ARGV-Example-1

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:

ARGV-Example-2

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:

Exemplo de saída do console da ARGV 1

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_argputs 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.