高级快捷指令(五):在“快捷指令”中使用“重复”操作

捷径技巧 2020-08-12 11:03

“重复”操作和“为每个项目重复”操作允许您在快捷指令中连续多次运行一组操作。


使用“重复”操作

将“重复”操作添加到快捷指令中时,操作会包括两个标记:“重复”(不显示为单独的标签)和“结束重复”。将要重复运行的操作放在“重复”和“结束重复”标记之间,然后指定想要操作重复的次数。快捷指令运行时,标记之间放置的操作会按您指定的循环次数循环运行。

例如,包含“使设备振动”操作且设为“重复 3 次”的重复循环会在快捷指令运行时使您的 iOS 设备振动三次。

设为重复三次的“使设备振动”操作。

您可以在重复循环内放置无限多个操作。操作按顺序从上到下运行,当到达最后一个操作时,快捷指令会回到第一个操作,然后再次运行,直到运行了指定的次数。

【提示】在快捷指令中,您可以将“重复”操作放在彼此内部:在快捷指令编辑器中拖移第二个“重复”操作,使其与第一个“重复”操作的下部重叠。则第二个“重复”操作会嵌套(缩进)到第一个“重复”操作的下方。


关于“重复”操作中的数据流

重复循环中每一次迭代的最后一个操作的输出会集中在一个列表中,此列表会成为整个“重复”操作的输出。

“重复”操作中的“文本”操作设为循环 5 次。

例如,一个运行四次且包含“获取最新的照片”操作的“重复”操作会在循环的每一次迭代中输出存储到“照片”的最近照片。四次迭代全部运行完成后,输出会集中到一起,并创建一个包含四张相同照片的列表。这四张照片会成为整个“重复”操作的输出,然后传递到重复循环之后的下一个操作。

“重复”操作示例。

若要了解输入流和输出流的更多信息,请参阅快捷指令的工作原理介绍

【提示】按住重复参数以将重复次数设为变量。例如,如果将“每次均询问”变量添加到“重复”操作中的“重复”参数,快捷指令运行时会让您选取循环应重复的次数。


使用“为每个项目重复”操作

“为每个项目重复”操作接收项目列表作为输入,然后针对列表中的每一项运行一次同一组操作。处理多个文件或多份内容时,此操作会很有帮助。这种类型的循环会一直重复,直到将传入“为每个项目重复”操作中的每一项都进行了迭代。

例如,如果有一个“获取临近日程”操作设为取回接下来的四个临近“日历”日程,而您将“为每个项目重复”操作放在此操作之后,则重复循环会运行四次,每一次迭代都接收其中一个“日历”日程作为输入。

将“为每个项目重复”操作添加到快捷指令中时,操作会包括两个标记:“为每个项目重复”(不显示为单独的标签)和“结束重复”。

在重复循环的结尾,传递到“结束重复”标记的每一次迭代的输出会集中起来,作为整个“为每个项目重复”操作的输出。


“重复项目”变量

“为每个项目重复”操作提供了一个用于跟踪当前项目的特殊变量:“重复项目”。“重复项目”变量会在循环每一次迭代时更新,其中包含传入本次迭代的项目。

例如,如果您将 10 个“日历”项目传入“为每个项目重复”操作,则随着快捷指令循环过每一个“日历”项目,每一次迭代中的“重复项目”变量就代表其中一个“日历”日程。

【注】如果将一个“为每个项目重复”操作放入另一个“为每个项目重复”操作内,则变量名称会变为“重复项目 1”或“重复项目 2”,分别代表重复内部的项目和更深一层循环的项目,以此类推。


“重复索引”变量

所有重复循环都提供一个用于跟踪当前循环迭代的特殊变量,叫做“重复索引”。“重复索引”变量包含目前为止循环已经重复的次数,从 1 开始(代表循环中的第一次迭代),每次增加一。循环第二次运行时,“重复索引”为 2。循环第三次运行时,“重复索引”为 3;以此类推。

【注】如果将一个“重复”操作放在另一个“重复”操作内(即创建了嵌套重复循环),则内部“重复”操作的变量名称会变为“重复索引 2”。另一个内嵌“重复”操作则会提供“重复索引 3”变量,以此类推。

有关更多信息,请参阅在“快捷指令”中使用变量


创建无限循环

虽然“快捷指令”不提供永远重复运行一组操作的操作,但您可以使用“运行快捷指令”操作来模仿这一行为。“运行快捷指令”操作允许您在一个快捷指令内运行另一个快捷指令。配置“运行快捷指令”操作以运行其内部包含的同一个快捷指令,它会从头到尾一直重复,直到您停止快捷指令。


测试输出

学习使用“重复”和“为每个项目重复”时,测试“结束重复”标记之后产生的结果对于确保获得了想要的内容是很有帮助的。在“结束重复”标记之后放置“快速查看”操作以预览重复循环输出的项目。

您还可以在“结束重复”标记之后放置“显示提醒”操作,并在信息框中插入“重复结果”魔法变量以显示循环输出的文本。如果正在测试长快捷指令中间的循环,使用“显示提醒”操作来预览结果是很有帮助的,因为您可以在提醒中包括一个“取消”按钮来在此循环处结束快捷指令。