Apex - For Loop semelhante a Java

Existe um tradicional Java for loop disponível no Apex.

Sintaxe

for (init_stmt; exit_condition; increment_stmt) { code_block }

Diagrama de fluxo

Exemplo

Considere o seguinte exemplo para entender o uso do loop tradicional for -

// The same previous example using For Loop
// initializing the custom object records list to store the Invoice Records
List<apex_invoice__c> PaidInvoiceNumberList = new List<apex_invoice__c>();

PaidInvoiceNumberList = [SELECT Id,Name, APEX_Status__c FROM APEX_Invoice__c WHERE 
   CreatedDate = today];

// this is SOQL query which will fetch the invoice records which has been created today
List<string> InvoiceNumberList = new List<string>();

// List to store the Invoice Number of Paid invoices
for (Integer i = 0; i < paidinvoicenumberlist.size(); i++) {
   
   // this loop will iterate on the List PaidInvoiceNumberList and will process
   // each record. It will get the List Size and will iterate the loop for number of
   // times that size. For example, list size is 10.
   if (PaidInvoiceNumberList[i].APEX_Status__c == 'Paid') {
      
      // Condition to check the current record in context values
      System.debug('Value of Current Record on which Loop is iterating is 
         '+PaidInvoiceNumberList[i]);
      
      //current record on which loop is iterating
      InvoiceNumberList.add(PaidInvoiceNumberList[i].Name);
      // if Status value is paid then it will the invoice number into List of String
   }
}

System.debug('Value of InvoiceNumberList '+InvoiceNumberList);

Etapas de execução

Ao executar este tipo de for loop, o mecanismo de tempo de execução do Apex executa as seguintes etapas -

  • Execute o init_stmtcomponente do loop. Observe que várias variáveis ​​podem ser declaradas e / ou inicializadas nesta instrução.

  • Executar o exit_conditionVerifica. Se for verdadeiro, o loop continua e se for falso, o loop termina.

  • Execute o code_block. Nosso bloco de código é para imprimir os números.

  • Execute o increment_stmtdeclaração. Ele aumentará a cada vez.

  • Volte para a Etapa 2.

Como outro exemplo, o código a seguir gera os números de 1 a 100 no log de depuração. Observe que uma variável de inicialização adicional, j, está incluída para demonstrar a sintaxe:

//this will print the numbers from 1 to 100}
for (Integer i = 0, j = 0; i < 100; i++) { System.debug(i+1) };

Considerações

Considere os seguintes pontos ao executar este tipo de for loop declaração.

  • Não podemos modificar a coleção durante a iteração sobre ela. Suponha que você esteja iterando sobre uma lista'ListOfInvoices', então, durante a iteração, você não poderá modificar os elementos da mesma lista.

  • Você pode adicionar elemento na lista original durante a iteração, mas deve manter os elementos na lista temporária durante a iteração e, em seguida, adicionar esses elementos à lista original.