![UiPath RPA开发:入门、实战与进阶](https://wfqqreader-1252317822.image.myqcloud.com/cover/221/39888221/b_39888221.jpg)
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开始。
![](https://epubservercos.yuewen.com/CF253F/20784355001359406/epubprivate/OEBPS/Images/4-56.jpg?sign=1739277272-zYUsG9GmmN6bLCJpjb5pUUIVSiO07KRG-0-ff74542e396a44a7713f661db1877d10)
图4-56 For Each活动示意图
![](https://epubservercos.yuewen.com/CF253F/20784355001359406/epubprivate/OEBPS/Images/4-57.jpg?sign=1739277272-6ltKDMTD2LQj9LxlbhU1Wj3aPnH8VQOX-0-da1b1dea350fb51a8a7416be9dcd3af4)
图4-57 For Each的属性说明
下面通过一个简单的案例来理解下For Each的用法。
【例4.7】打印一组员工的姓名。
1)进入Studio界面,点击Process创建一个流程,命名为4_7_ForEach,如图4-58所示。
2)进入Main,在活动面板中拖入一个For Each活动到主界面,如图4-59所示。
![](https://epubservercos.yuewen.com/CF253F/20784355001359406/epubprivate/OEBPS/Images/4-58.jpg?sign=1739277272-YSb72wNuGEZZqtEFSDJeoWyaWzKiFS8P-0-34fb2b498ec6329e9732a6750a6d6438)
图4-58 新建流程
![](https://epubservercos.yuewen.com/CF253F/20784355001359406/epubprivate/OEBPS/Images/4-59.jpg?sign=1739277272-FDeqfJcJNFMmR4atMwCy3F4ENU6SS96V-0-3d70d27307c243345c3de427978bba13)
图4-59 拖入For Each活动
3)选中第2步生成的For Each活动,在Variables面板中新建一个String类型的数组变量,命名为NameArr,并将其初始值设置为“{"张三","李四","王五"}”,如图4-60所示。
![](https://epubservercos.yuewen.com/CF253F/20784355001359406/epubprivate/OEBPS/Images/4-60.jpg?sign=1739277272-a9IoMs9FZN559UUaCDBadacueMmDXoTm-0-a1c0fea9ace451ead32812f0b5d2f9ea)
图4-60 新建变量
4)选中第2步生成的For Each活动,查看其属性,然后将Type Argument更改为String,Values属性改为变量NameArr,item改为name,如图4-61所示。
![](https://epubservercos.yuewen.com/CF253F/20784355001359406/epubprivate/OEBPS/Images/4-61.jpg?sign=1739277272-tMyc7DYFkUiJtQWfX7tYDLPZf7NasO5o-0-c4543a04e1ecc5c5adffe8e47c63f19c)
图4-61 设置For Each属性值
5)在For Each活动Body内拖入一个Write Line,按图4-62所示更改其Text属性。
6)点击Run File执行程序,查看Output面板,参考结果如图4-63所示。
![](https://epubservercos.yuewen.com/CF253F/20784355001359406/epubprivate/OEBPS/Images/4-62.jpg?sign=1739277272-t2qJVdCHuuYn3yIkimqS2Xl8qqgJmpAu-0-338bd42eec5900b338f1e8490c1d481b)
图4-62 拖入输出活动Write Line
![](https://epubservercos.yuewen.com/CF253F/20784355001359406/epubprivate/OEBPS/Images/4-63.jpg?sign=1739277272-JVTYztoHvVuG3BlpWTvnvNE6pWWqfcPS-0-8c7b1cc8f9d6335177242dddd6033447)
图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自动化操作中详细解读。