Apex - 类似 Java 的 For 循环

Apex 中有一个传统的类似 Java 的 for 循环。

语法

for (init_stmt; exit_condition; increment_stmt) { code_block }

流程图

Apex For 循环

示例

考虑以下示例来了解传统 for 循环的用法 −

// 与前面使用 For 循环的示例相同
// 初始化自定义对象记录列表以存储账单记录
List<apex_invoice__c> PaidInvoiceNumberList = new List<apex_invoice__c>();

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

// 这是 SOQL 查询,它将获取今天创建的账单记录
List<string> InvoiceNumberList = new List<string>();

// 存储已付账单的账单编号的列表
for (Integer i = 0; i < paidinvoicenumberlist.size(); i++) {
   
	// 此循环将迭代 List PaidInvoiceNumberList 并处理
    // 每条记录。 它将获取列表大小并迭代循环的数量
    // 乘以该大小。 例如,列表大小为 10。
   if (PaidInvoiceNumberList[i].APEX_Status__c == 'Paid') {
      
      // 检查上下文值中当前记录的条件
      System.debug('Value of Current Record on which Loop is iterating is 
         '+PaidInvoiceNumberList[i]);
      
      //循环正在迭代的当前记录
      InvoiceNumberList.add(PaidInvoiceNumberList[i].Name);
      // 如果状态值已支付,那么它将账单号码放入字符串列表中
   }
}

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

执行步骤

执行此类for循环时,Apex运行时引擎执行以下步骤 −

  • 执行循环的init_stmt组件。 请注意,可以在此语句中声明和/或初始化多个变量。

  • 执行exit_condition检查。 如果为 true,则循环继续,如果为 false,则退出循环。

  • 执行code_block。 我们的代码块是打印数字。

  • 执行increment_stmt语句。 每次都会增加。

  • 返回步骤 2。

作为另一个示例,以下代码将数字 1 – 100 输出到调试日志中。 请注意,包含一个附加初始化变量 j 来演示语法:

//这将打印从 1 到 100 的数字}
for (Integer i = 0, j = 0; i < 100; i++) { System.debug(i+1) };

注意事项

执行此类for 循环语句时请考虑以下几点。

  • 我们无法在迭代集合时修改集合。 假设您正在迭代列表 'ListOfInvoices',那么在迭代时您无法修改同一列表中的元素。

  • 迭代时可以在原始列表中添加元素,但迭代时必须将元素保留在临时列表中,然后将这些元素添加到原始列表中。

apex_loops.html