Projeto: um explorador de argumentos
Aprendemos os principais blocos de construção de um pequeno programa Pop. Vamos combiná-los em uma ferramenta de linha de comando que conta seus argumentos e imprime cada um deles.
Crie explore.pop com o código da Listagem 2-1:
namespace Explorer
function showArguments(arguments: Array<String>) for index = 1, Array.length(arguments) do print(Array.get(arguments, index)) endend
function main(arguments: Array<String>) local count = Array.length(arguments)
print(`Quantidade de argumentos: {count}`)
if count > 0 then print("Argumentos") showArguments(arguments) else print("Nenhum argumento foi fornecido") endendListagem 2-1: Contando e exibindo argumentos da linha de comando
Execute-o com alguns valores:
pop run explore.pop -- Pop "two words" 42O resultado é:
Quantidade de argumentos: 3ArgumentosPoptwo words42O 42 final ainda é uma string, pois todo argumento da linha de comando chega como texto. print escolhe sua sobrecarga de string com base nesse tipo.
Acompanhando o programa
Seção intitulada “Acompanhando o programa”A execução começa em main. Ela obtém o comprimento do array e armazena esse Int em count. Em seguida, o if escolhe entre chamar showArguments e imprimir o caso vazio.
showArguments usa um for numérico inclusivo. Ele começa em 1, porque as posições dos arrays de Pop usam base um, e termina no comprimento do array. O vínculo de laço index é criado para cada iteração e não pode receber atribuição.
O comprimento não muda durante o laço porque os arrays têm comprimento fixo. Isso mantém válida toda posição usada em Array.get.
Experimente
Seção intitulada “Experimente”Altere o programa para imprimir Primeiro argumento e apenas o primeiro item antes de imprimir a lista completa. Lembre-se de fazer isso somente dentro do ramo count > 0, onde sabemos que a posição 1 existe.
Depois, adicione uma variável local chamada remaining, inicializada com count - 1, e imprima-a. Essas pequenas alterações praticam a leitura de um valor, a execução de aritmética inteira verificada e a manutenção do acesso ao array dentro da condição que o torna seguro.
