# 子程序 # 概述 **子程序**类似于编程语言中的“**函数**”。
它用于将一些**步骤**和**变量**封装在一起,变成一个新的具有更强大功能的**“自定义模块”**。 一般只在设计比较复杂的动作的时候才需要用到子程序。
子程序有这些用处: - 在动作中复用一部分功能。 - 将大的功能拆分成多个较为独立的小的功能,把复杂的问题分解为小的简单的问题。 1.10.x版本对子程序进行了比较大的修改,本文适用于最新版本。
![image.png](https://cdn.nlark.com/yuque/0/2020/png/272392/1601945576724-97164ee5-160d-4148-b566-b150cf8706b1.png#crop=0&crop=0&crop=1&crop=1&height=251&id=kZ2mf&margin=%5Bobject%20Object%5D&name=image.png&originHeight=502&originWidth=1163&originalType=binary&ratio=1&rotation=0&showTitle=false&size=77086&status=done&style=none&title=&width=581.5) ## 子程序的类别 根据可复用范围和实际存储位置,可以将子程序分为三类: - **动作内子程序**:仅在当前动作内部使用,存储在动作内。比1.10.x更早版本的子程序都是这类子程序。 - **公共子程序**:可以在您的任意动作中使用,存储在动作外部,支持自动同步。 - **网络共享子程序**:Quicker网站子程序库中的子程序,可以通过关键字搜索后直接拖放到步骤中使用。 ## 通用的使用方法 子程序的使用方法和普通的模块基本一致。找到目标子程序后,按住并拖放到步骤列表的合适位置即可。
![使用子程序.gif](https://cdn.nlark.com/yuque/0/2020/gif/272392/1601946336696-639e9191-2c78-4bb2-a36f-58e62f49bdeb.gif#crop=0&crop=0&crop=1&crop=1&height=270&id=WJ0Ed&margin=%5Bobject%20Object%5D&name=%E4%BD%BF%E7%94%A8%E5%AD%90%E7%A8%8B%E5%BA%8F.gif&originHeight=522&originWidth=1079&originalType=binary&ratio=1&rotation=0&showTitle=false&size=165169&status=done&style=none&title=&width=558)
然后在步骤参数设置窗口中为子程序设定好输入和输出。
![image.png](https://cdn.nlark.com/yuque/0/2020/png/272392/1580791900493-bd9d8bfb-14d7-480b-84c9-3b4d1d7e589a.png#crop=0&crop=0&crop=1&crop=1&height=375&id=aLbLT&name=image.png&originHeight=766&originWidth=1180&originalType=binary&ratio=1&rotation=0&showTitle=false&size=70620&status=done&style=none&title=&width=577) ## 子程序的定义 子程序和组合动作一样,由步骤和变量组成。
![image.png](https://cdn.nlark.com/yuque/0/2020/png/272392/1580792047956-42f13e19-dd1e-4723-ac1a-e5ef2c44a83c.png#crop=0&crop=0&crop=1&crop=1&height=452&id=XnWmN&name=image.png&originHeight=904&originWidth=1211&originalType=binary&ratio=1&rotation=0&showTitle=false&size=96301&status=done&style=none&title=&width=605.5) 子程序中的变量和主程序中的变量是**各自独立**的: - 每次运行子程序,它内部的变量都将被自动初始化。 - 子程序中可以使用和主程序中一样的变量名(尽量不要这样做),他们的值互不影响。(通过参数传入列表和词典等复杂对象时,主程序和子程序将指向相同的对象,在子程序中修改列表或词典也会影响主程序。) 就像那些基础模块一样,子程序需要从外部接受参数输入,并将需要的结果返回给外部。
我们通过**为变量设置输入输出标记**来实现这一目的。下图的变量列表中,变量名前面的图标表示了某个变量可能是输入或输出参数。
![image.png](https://cdn.nlark.com/yuque/0/2020/png/272392/1580793968028-3a5b1ce7-e05b-44d6-99f2-2347a087b8be.png#crop=0&crop=0&crop=1&crop=1&height=224&id=tNAPf&name=image.png&originHeight=357&originWidth=487&originalType=binary&ratio=1&rotation=0&showTitle=false&size=36217&status=done&style=none&title=&width=306) 子程序开始运行时,会对作为输入参数的变量赋值。
子程序运行结束后,会将作为输出参数的变量读取出来输出到主程序中。 ### 输入参数 子程序的变量和动作主程序的变量是独立的。你可以通过附加的选项,使得子程序的某个变量变身为输入参数或输出参数。
![image.png](https://cdn.nlark.com/yuque/0/2020/png/272392/1580708022773-ccb5a5ce-866d-44eb-bf23-8608a58c1464.png#crop=0&crop=0&crop=1&crop=1&height=323&id=ZYajP&name=image.png&originHeight=646&originWidth=1180&originalType=binary&ratio=1&rotation=0&showTitle=false&size=103762&status=done&style=none&title=&width=590)
当某个变量作为子程序的输入或输出参数时,尽量不要修改其变量名。如有修改,请编辑使用了此子程序的“运行子程序”模块,重新设置参数值。 ### 输出参数 在变量属性中,选中“子程序的输出”选项即可将此变量转换成子程序的输出参数。
![image.png](https://cdn.nlark.com/yuque/0/2020/png/272392/1580796360523-1a9ff9ee-d82d-4c03-a3ab-fc876aa95f4f.png#crop=0&crop=0&crop=1&crop=1&height=383&id=WgBOH&name=image.png&originHeight=766&originWidth=1180&originalType=binary&ratio=1&rotation=0&showTitle=false&size=108208&status=done&style=none&title=&width=590) # 动作内子程序 动作内子程序保存在动作内部,仅可在当前动作内使用。
![image.png](https://cdn.nlark.com/yuque/0/2020/png/272392/1601947093629-4e715cd7-3991-45b0-8a22-eb8fc02eee2f.png#crop=0&crop=0&crop=1&crop=1&height=430&id=zEXCH&margin=%5Bobject%20Object%5D&name=image.png&originHeight=800&originWidth=650&originalType=binary&ratio=1&rotation=0&showTitle=false&size=62641&status=done&style=none&title=&width=349)
1)动作内子程序标签页。
2)动作内子程序列表。
3)点击编辑子程序。
4)创建新的动作内子程序。
5)导入网络子程序(先在子程序库中复制子程序网址,然后点击此按钮)。也可以直接在共享子程序标签页中搜索到子程序后从右键菜单中直接导入。
6)从文件导入子程序。
7)删除选中的子程序。 在子程序上点击右键,可以看到右键菜单:
![image.png](https://cdn.nlark.com/yuque/0/2020/png/272392/1601947731766-a0324cce-4a9f-472f-a7d7-52f9b29c2254.png#crop=0&crop=0&crop=1&crop=1&height=90&id=hOQ3d&margin=%5Bobject%20Object%5D&name=image.png&originHeight=179&originWidth=644&originalType=binary&ratio=1&rotation=0&showTitle=false&size=22807&status=done&style=none&title=&width=322)
1)高亮步骤:将子程序名称作为高亮关键字,高亮步骤列表中的相应步骤。(只能高亮展开的步骤)。
2)转换为公共子程序:将动作内子程序转换为公共子程序,以方便在其它动作中使用。
3)删除此子程序。 ## 创建子程序 点击子程序列表下面的创建按钮,可添加新的动作内子程序。
![image.png](https://cdn.nlark.com/yuque/0/2020/png/272392/1601948243998-195e5d0e-0564-4cf8-be55-a88b91ba47e2.png#crop=0&crop=0&crop=1&crop=1&height=75&id=Wz5s8&margin=%5Bobject%20Object%5D&name=image.png&originHeight=150&originWidth=509&originalType=binary&ratio=1&rotation=0&showTitle=false&size=5155&status=done&style=none&title=&width=254.5) ## 编辑子程序 点击子程序后的编辑按钮即可编辑子程序。
![image.png](https://cdn.nlark.com/yuque/0/2020/png/272392/1601949029420-452f1469-e866-49e3-be63-56bfe87c5916.png#crop=0&crop=0&crop=1&crop=1&height=215&id=k43k0&margin=%5Bobject%20Object%5D&name=image.png&originHeight=429&originWidth=1197&originalType=binary&ratio=1&rotation=0&showTitle=false&size=82844&status=done&style=none&title=&width=598.5)
1)点击子程序后的打开按钮。
2)点击步骤列表中子程序后的打开按钮。
3)双击子程序名称。 ## 删除子程序 从右键菜单中删除,或者选中子程序后点删除按钮。
![image.png](https://cdn.nlark.com/yuque/0/2020/png/272392/1601949240215-e29be1d2-7b38-46af-81b5-29a564269cc0.png#crop=0&crop=0&crop=1&crop=1&height=271&id=i4RuN&margin=%5Bobject%20Object%5D&name=image.png&originHeight=541&originWidth=530&originalType=binary&ratio=1&rotation=0&showTitle=false&size=30614&status=done&style=none&title=&width=265) ## 转换为动作内子程序 通过步骤的右键菜单,可以将公共子程序和网络共享子程序转换为动作内子程序。
![image.png](https://cdn.nlark.com/yuque/0/2022/png/272392/1647846124378-f09b5a91-d7da-4082-95d2-0c265990dff3.png#clientId=ud389f246-9666-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=240&id=ue67fe088&margin=%5Bobject%20Object%5D&name=image.png&originHeight=360&originWidth=760&originalType=binary&ratio=1&rotation=0&showTitle=false&size=43539&status=done&style=none&taskId=u466245f1-f4c2-4c55-b920-53746790595&title=&width=506.6666666666667) ## 其它操作 可以在子程序列表上右键,对子程序进行重命名、复制、创建副本、复制名称等。
![image.png](https://cdn.nlark.com/yuque/0/2022/png/272392/1647846289416-bb1354e8-6e57-4fce-9601-9e6756df9e0c.png#clientId=ud389f246-9666-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=293&id=u6445defc&margin=%5Bobject%20Object%5D&name=image.png&originHeight=440&originWidth=485&originalType=binary&ratio=1&rotation=0&showTitle=false&size=54529&status=done&style=none&taskId=u39d9084f-31c6-439a-a488-ebf21bd0db9&title=&width=323.3333333333333)
复制子程序后,可以在其它动作的子程序列表的空白处右键粘贴。
![image.png](https://cdn.nlark.com/yuque/0/2022/png/272392/1647846325770-ed2ae9a6-80de-4e49-9520-860fb7c51bf1.png#clientId=ud389f246-9666-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=92&id=u76d2f0e8&margin=%5Bobject%20Object%5D&name=image.png&originHeight=138&originWidth=545&originalType=binary&ratio=1&rotation=0&showTitle=false&size=18920&status=done&style=none&taskId=u8f9a525b-ded3-4c92-8bc4-df86e3dfef4&title=&width=363.3333333333333) # 公共子程序 公共子程序可以在本地所有动作中使用。
![image.png](https://cdn.nlark.com/yuque/0/2020/png/272392/1601954873257-0ccc1e7b-c0f3-4f43-94a6-21e45555d3c2.png#crop=0&crop=0&crop=1&crop=1&height=400&id=wkcZb&margin=%5Bobject%20Object%5D&name=image.png&originHeight=800&originWidth=1197&originalType=binary&ratio=1&rotation=0&showTitle=false&size=109393&status=done&style=none&title=&width=598.5)
1)公共子程序标签页。
2)筛选子程序(在公共子程序数量较多时使用)
3)子程序列表。
4)创建新的公共子程序。
5)双击,或点击右侧的按钮可以编辑此公共子程序。
6)右键菜单。
7)分享公共子程序到共享库。
8)查找使用此公共子程序的动作:在所有本地动作中查找有使用到此子程序的动作。
9)复制为动作内子程序。
10)在步骤列表中高亮此子程序(仅高亮展开的步骤)。
11)删除此子程序。 ## 分享公共子程序 **请勿分享任何含有恶意内容的子程序,否则将停用您的账号!** 在公共子程序上点右键,从菜单中选择“分享”。
![image.png](https://cdn.nlark.com/yuque/0/2020/png/272392/1601955396997-e1b4fc21-f374-42c8-ab76-bccc558b824d.png#crop=0&crop=0&crop=1&crop=1&height=349&id=q5Jyy&margin=%5Bobject%20Object%5D&name=image.png&originHeight=697&originWidth=797&originalType=binary&ratio=1&rotation=0&showTitle=false&size=47371&status=done&style=none&title=&width=398.5)
可以选择分享新的子程序,或者更新之前已分享的子程序。 # 共享子程序 子程序网站:[https://getquicker.net/Share/SubPrograms](https://getquicker.net/Share/SubPrograms)
子程序不会经过管理员审核,使用前请检查验证子程序内容。如有发现含有恶意内容的子程序,欢迎反馈到197906@qq.com,将奖励1年专业版兑换码。 ## 方法一:导入为动作内子程序 方法见[动作内子程序](#Kr3Nm)部分 ## 方法二:直接使用共享子程序 ![image.png](https://cdn.nlark.com/yuque/0/2020/png/272392/1601955587686-a87dde0f-dde6-4c6f-b99c-5fd28688f8d0.png#crop=0&crop=0&crop=1&crop=1&height=400&id=ConiA&margin=%5Bobject%20Object%5D&name=image.png&originHeight=800&originWidth=1197&originalType=binary&ratio=1&rotation=0&showTitle=false&size=123064&status=done&style=none&title=&width=598.5) 1. 切换到共享子程序标签页。 1. 输入关键词。 1. 点击查询按钮。 1. 符合条件的结果将显示在子程序列表中。 1. 按住并拖放到步骤区域即可。 1. 双击子程序、点击右边的打开按钮,可以打开共享子程序网页。 ![image.png](https://cdn.nlark.com/yuque/0/2020/png/272392/1601956274369-e2baffe1-d9a7-48e0-b4c5-731e28687d78.png#crop=0&crop=0&crop=1&crop=1&height=90&id=a6a0y&margin=%5Bobject%20Object%5D&name=image.png&originHeight=179&originWidth=767&originalType=binary&ratio=1&rotation=0&showTitle=false&size=19414&status=done&style=none&title=&width=383.5)
在共享子程序上点右键,菜单中可选:
1)查看子程序定义:在编辑窗口中查看子程序的内部定义。
2)导入为动作内子程序:如果需要对子程序的定义做修改调整,可以导入为动作内子程序使用。