Apex - For Loop similar a Java

Hay un tradicional estilo Java for lazo disponible en Apex.

Sintaxis

for (init_stmt; exit_condition; increment_stmt) { code_block }

Diagrama de flujo

Ejemplo

Considere el siguiente ejemplo para comprender el uso del bucle for tradicional:

// 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);

Pasos de ejecución

Al ejecutar este tipo de for loop, el motor de tiempo de ejecución de Apex realiza los siguientes pasos:

  • Ejecute el init_stmtcomponente del bucle. Tenga en cuenta que se pueden declarar y / o inicializar múltiples variables en esta declaración.

  • Realizar la exit_conditioncheque. Si es verdadero, el ciclo continúa y si es falso, el ciclo sale.

  • Ejecute el code_block. Nuestro bloque de código es imprimir los números.

  • Ejecute el increment_stmtdeclaración. Incrementará cada vez.

  • Regrese al paso 2.

Como otro ejemplo, el siguiente código genera los números del 1 al 100 en el registro de depuración. Tenga en cuenta que se incluye una variable de inicialización adicional, j, para demostrar la sintaxis:

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

Consideraciones

Tenga en cuenta los siguientes puntos al ejecutar este tipo de for loop declaración.

  • No podemos modificar la colección mientras iteramos sobre ella. Suponga que está iterando sobre la lista a'ListOfInvoices', luego, mientras itera, no puede modificar los elementos de la misma lista.

  • Puede agregar elementos en la lista original mientras itera, pero debe mantener los elementos en la lista temporal mientras itera y luego agregar esos elementos a la lista original.