Usar um loop For para iterar completamente uma lista
Objetivos de aprendizagem
Após concluir esta unidade, você estará apto a:
- Decidir quando usar um loop for tradicional e quando usar um loop for de iteração de lista ou conjunto.
- Escrever um loop for tradicional e um loop for de iteração de lista.
Acompanhar com o Trail Together
Deseja acompanhar um especialista enquanto trabalha nesta etapa? Veja este vídeo que faz parte da série Trail Together no Trailhead Live.
(Este clipe começa na marca dos 01:03:24 minutos, caso você queira retroceder e ver o início da etapa novamente.)
Introdução
Como você aprendeu com as Noções básicas do Apex para administradores, um loop é um bloco de código que é repetido até que uma condição específica seja atendida. Os loops permitem realizar uma tarefa repetidas vezes. O Apex tem três tipos de loop. Você já usou os loops while
e do-while
. O terceiro tipo é o loop for
. Um loop for
se repete em itens da mesma forma que os loops while
e do-while
, mas pode também se repetir em uma lista ou um conjunto. (Você pode usar loops for
também com SOQL, mas deixamos isto pra outro dia.)
Nesta unidade, você vai aprender sobre dois tipos de loops for
.
- O loop
for
tradicional - O loop
for
de iteração de lista ou conjunto
O loop for tradicional
Revisando: os loops while
e do-while
especificam uma condição que controla quantas vezes um bloco de código é executado. O loop acaba quando a condição é falsa. Loops for
fazem a mesma coisa, mas com uma sintaxe mais simples.
Veja como funciona: Quando um loop é iniciado, ele inicializa um counter Depois, ele verifica se a condição de loop é verdadeira. Se a resposta for sim, o loop realizará uma ação, atualizará o counter e voltará a verificar a condição novamente. Quando a resposta à verificação de condição é não, o loop para.
A instrução de declaração de loop faz três coisas.
- Inicializa a variável
i
para 0. - Especifica a condição
i < 5
. - Incrementa a variável
i
em umi++
.
Quando o loop começa, a variável i
é 0
, o que é menos do que 5. A condição é true
, então o loop é executado uma vez. No final daquela iteração, a variável é incrementada e i
se torna 1
, que ainda é menor que 5. Então o loop é executado novamente. Este ciclo continua até que i = 5
. Então, uma vez que a condição é false
, o loop termina.
Escrever e executar um loop for tradicional
- No Developer Console, clique em Debug (Depurar) | Open Execute Anonymous Window (Abrir a janela Executar no modo anônimo).
- Na janela Enter Apex Code (Inserir código do Apex), cole este código:
-
for(Integer i = 0; i < 5; i++){ System.debug('The number is ' + i ); }
- Execute o código e revise o log de depuração.
Você deve ver cinco entradas que mostram o número aumentando de zero a quatro.
Portando, se os loops while
e do-while
fazem a mesma coisa que os loops for
, então por que usamos loops for
? Duas razões:
- Os loops
for
são usados quando sabemos quantas vezes o loop deve ser executado. Se queremos que o loop pare com base em uma condição que não seja o número de vezes que ele é executado, devemos usar o loopwhile
. - Os loops
for
são mais concisos porque eles mantêm as três partes – a variável, a condição, e o incremento – juntos em uma instrução.
Veja neste exemplo, um código escrito com um loop while
e novamente escrito, mas com um loop for
.
Loop while
Integer i = 0; while (i < 5){ System.debug('The number is ' + i); i++; }
Loop for
for(Integer i = 0; i < 5; i++){ System.debug('The number is ' + i ); }
O código loop for
é mais compacto. Ele faz a mesma coisa que o loop while
, mas com três linhas de código em vez de cinco. Duas linhas a mais de código podem parecer uma pequena diferença agora, mas quando sua organização tem milhares de linhas de código, cada linha adicional faz diferença.
Loops for de iteração de lista ou conjunto
O loop for
de iteração de lista ou conjunto (loop for
de iteração) é uma variação do loop for
tradicional. O loop for
de iteração funciona em itens de uma lista ou conjunto. Uma vez que a lista ou o conjunto tem um número específico de itens, não é necessário incrementar uma variável ou verificar uma condição. O loop passa por todos os itens da lista ou conjunto, e então o loop acaba.
A sintaxe de um loop for
de iteração é um pouco diferente da sintaxe do loop for
tradicional. Quando você declara um loop for
de iteração, o tipo de dados da variável deve corresponder ao tipo de dados da lista ou conjunto. Veja a sintaxe para um loop for de iteração.
for (data_type variable_name : list_name or set_name){ // Loop body }
Escrever um loop for de iteração
Vamos criar um loop for
de iteração para percorrer esta lista.
List <String> tea = new List<String>{'Black Tea', 'Green Tea', 'Chai Tea'};
Observe que a lista tea
tem o tipo de dados string (sequência de caracteres). Para declarar o loop for
de iteração, usamos o tipo de dados lista (string) e o nome da lista (tea).
for (String t : tea)
Esta instrução faz duas coisas antes de o loop começar.
- Declara a variável
t
com o tipo de dados string (que corresponde ao tipo de dados da lista). - Especifica a lista tea como a lista na qual o loop se repete.
Temos a declaração da lista e a declaração do loop for
de iteração. Basta colocá-las juntas com o corpo do loop e estamos prontos para executar o código.
Executar o código
- No Developer Console, clique em Debug (Depurar) | Open Execute Anonymous Window (Abrir a janela Executar no modo anônimo).
- Na janela Enter Apex Code (Inserir código do Apex), cole este código:
-
List <String> tea = new List<String>{'Black Tea', 'Green Tea', 'Chai Tea'}; for(String t : tea){ System.debug('We have ' + t); }
- Execute o código e revise o log de depuração.
Revise o log de depuração. Você deveria ver as três entradas mostrando que temos Black Tea, Green Tea, e Chai Tea.
Que maravilha!
Finalizar
Muito bem! Você aprendeu bastante. Se você ainda tiver dúvida sobre algum conceito, consulte os recursos do Apex, como o Guia do desenvolvedor do Apex. Se você sabe onde achar as respostas, e está empenhado em ultrapassar os problemas, a codificação do Apex fica cada vez mais fácil. Seja paciente. Feliz código!
Recursos
- Apex Developer Guide: For Loops