Using Loops

DEX455 - Apex 开发入门指南

📄 第 19 页 🎬 视频课程

课程章节介绍

好,同学们。我们前面聊了if语句,它可以根据条件选择性地执行一段代码。但很多时候,我们想让程序重复去做一件事,直到某个条件不再满足,这个就是咱们今天要说的循环。 在Apex里,循环就是不断地执行相同的代码块,只是每次可能处理不同的数据,或者计数器在变化。Apex给我们提供了好几种循环结构,来应对不同的场景。 咱们先从最简单的do-while循环说起。它的特点呢,是“先做了再说”。循环体会无条件地先执行一次,然后才去检查条件。如果条件还是true,那就再执行一遍,重复这个过程,直到条件变成false。所以这种循环至少会执行一次。比如你让用户至少输入一次密码,输错了才让他重新输入,就可以用这个思路。 然后是while循环。跟do-while相反,它是“先检查,再执行”。一开始就判断条件,条件为真,才会进入循环体;要是条件一开始就是假的,那循环体一次都不会执行。像那种“只要余额大于0就继续购物”的场景,用while就很合适。 接着就是功能更强大的for循环了。在Apex里,for循环有两种主要的写法,能给我们更精细的控制。 第一种,是传统的for循环,需要你在括号里定义三个部分:一个初始化变量,一个退出条件,还有一个每次循环结束后的操作。比如for(Integer i = 0; i < 10; i++),这就是典型的从0数到9,循环10次。你可以灵活地改变计数器,跳着走,甚至倒着走,控制力非常强。 第二种呢,是Apex特有而且非常推荐的一种for循环,专门用来遍历集合或者SOQL查询结果的,叫作for-each循环。语法很简洁,for(数据类型 变量名 : 列表或者查询结果)。比如你从数据库查出一批客户,想挨个更新他们的信用等级,就可以写成 for(Account acc : [SELECT Id, Name FROM Account]){...}。这样系统会一次取出查询结果里的每一行记录,依次放进acc变量里让你处理。 这里有个特别重要的点:当你在for循环的括号里直接放SOQL查询时,Apex会聪明地利用内部的高效批量机制,一次取200条记录,在后台悄悄帮你循环,这样能避免达到堆大小的限制。但要注意,如果循环里又包含了别的SOQL查询,那就可能会出事,因为循环次数不定,很容易碰到调控器限制。如果预先用列表把查询结果装起来,再用for-each遍历列表,执行次数就是明确的,但也需要留意列表本身的容量。所以两种方式要根据场景选用。 好了,总结一下。do-while循环保证至少执行一次,while循环可能一次都不执行,传统的for循环给了你精细的控制,而集合或查询的for-each循环让处理大量数据变得特别简洁。把这些结构用熟了,你就能根据不同的业务逻辑,写出高效又清晰的Apex代码。

关键词

Apex Salesforce Developer Guide