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.