4.2.3 For Each

For Each用于循环遍历集合中每个元素。当我们需要对一个集合中每个元素值执行相同的操作时,就可用For Each活动。

For Each自动遍历集合中每个元素值,保存在如图4-56所示的in前的变量item中。然后,将要对遍历出的每个元素执行的相同操作写入Body循环体中。

需要留意的是item变量无须声明,其只在For Each内的活动中有效,并且item可以根据项目实际需要自定义名称,如Age、Name等。

接下来我们了解下For Each的属性面板。如图4-57所示,Type Argument就是循环元素item的变量类型,默认类型是Object,可根据实际情况更改变量类型。Values就是被循环的数组或集合,Index属性用于输出当前集合遍历时的索引值,可以建一个Int32类型的变量记录,索引值从0开始。

图4-56 For Each活动示意图

图4-57 For Each的属性说明

下面通过一个简单的案例来理解下For Each的用法。

【例4.7】打印一组员工的姓名。

1)进入Studio界面,点击Process创建一个流程,命名为4_7_ForEach,如图4-58所示。

2)进入Main,在活动面板中拖入一个For Each活动到主界面,如图4-59所示。

图4-58 新建流程

图4-59 拖入For Each活动

3)选中第2步生成的For Each活动,在Variables面板中新建一个String类型的数组变量,命名为NameArr,并将其初始值设置为“{"张三","李四","王五"}”,如图4-60所示。

图4-60 新建变量

4)选中第2步生成的For Each活动,查看其属性,然后将Type Argument更改为String,Values属性改为变量NameArr,item改为name,如图4-61所示。

图4-61 设置For Each属性值

5)在For Each活动Body内拖入一个Write Line,按图4-62所示更改其Text属性。

6)点击Run File执行程序,查看Output面板,参考结果如图4-63所示。

图4-62 拖入输出活动Write Line

图4-63 执行结果

大家已经学习了UiPath提供的主要循环结构活动While、Do While和For Each,那么在实际项目中我们该选择哪一种循环活动呢?有以下几点使用场景供大家参考:

□如果是有规律地遍历一个集合中的每个元素,执行相同的操作,首选For Each。

□如果没有规律的循环,未知循环多少次,但需要反复执行同一个操作,比如猜数字、等待某个控件出现,但是并不知道等多久,再比如一次按钮点击结果不稳定,需要多次尝试点击的,就首选While循环或Do While循环。

□如果希望条件不满足时,循环体一次都不执行,就选择While循环。

□如果希望即使条件不满足,循环体也至少能执行一次,就选择Do While循环。

注意

UiPath提供的For Each循环有两种,一种就是本章所学的用来遍历数组集合类型的For Each循环,另外一种是For Each Row,专门用于遍历DataTable,大家不要混淆了。关于For Each Row的用法本书会在第5章Excel自动化操作中详细解读。