首页 果壳精灵教程 当前文章

【新手入门】第 4 讲:调用命令的五种写法

xLeaves(xxrpa) 发布于 2022年05月26日 18:33:24


命令相当于指挥电脑完成一个任务,这个任务可以是有反馈的,也可以是无反馈的。

例如 TracePrint 命令的作用是向调试输出窗口一段文字,这种命令是不需要反馈的;而 GetTickCount 命令的功能是获取时间戳,就需要反馈给我时间信息。

电脑,本质上也是一种仿生工具,它模仿的就是人类的大脑,就如同大脑给人体发送命令一样,有些命令需要反馈,有些则不需要。


我们在学习使用更多命令之前,需要先学会看命令的帮助文档,在功能列表中选择一条命令点击,集成帮助窗口就会显示与这条命令有关的帮助文档。

一条命令的帮助文档由:语法、功能、参数、返回值、范例 五部分组成。



语法也称为这条命令的原型定义,是描述这条命令是如何设计定义的,当你学会实现自己的命令时,也就知道这种定义是怎么来的了,学习初期可以忽略。

描述是关于这条命令能实现的功能介绍。

参数和返回值比较重要,参数是我们传递给命令的相关数据,例如大脑控制我们行走,就要告诉我们行走的方向、行走的步数。

参数可以一个都没有,也可以有很多个,还存在可选参数和可变参数等概念,我们暂时先不考虑这么多概念,只需要能看懂参数列表即可。

每个参数从左到右,分别是参数的名字、参数的数据类型、参数是否可选、参数的描述。

参数的名字多数情况下我们不需要在意,这也是在设计命令阶段才会使用的。

参数的数据类型就好比我们的大脑在处理数据时,文字是文字,数字是数字,不可混为一谈。

例如大脑无法计算出 “你是谁” + 123 等于多少钱,因为“你是谁”是文字,而 123 是数字,数据类型不同,不可以进行计算,必须是同类型数据才能进行计算。

如果一个参数是必选的,那么在调用这个命令时,必须提供这个参数,如果一个参数是可选的,那么在调用这个命令时,可以提供这个参数,也可以不提供。

最后参数的描述,是给参数的使用者讲解这个参数含义的。


如下图所示,虽然 InputBox 命令需要三个参数,但有两个参数是可选的,所以我们最少只需要一个参数,就可以调用 InputBox 命令:



InputBox 命令的功能是弹出一个输入对话框,用户可以自由输入一些内容,并在点击确定按钮后将输入的内容返回给我们的脚本。

因此这个命令是有一个返回值的,返回值可以保存起来,或者传递给其他命令作为参数,我们可以这样理解,这是一整个命令调用语句:

InputBox("弹出窗口显示的提示内容")

当我们输入了一行文字,假设输入了【我是果壳精灵】,那么实际上这行命令调用本身,就等价于 "我是果壳精灵" 。

那么已知我们可以这样写代码:

MsgBox("我是果壳精灵")

而上述代码与 "我是果壳精灵" 是等价的,那么我们是不是可以这样写呢:

MsgBox(InputBox("弹出窗口显示的提示内容"))

当然是可以的,这样果壳精灵就会先弹出一个输入对话框,然后将用户输入的内容弹出消息框显示出来。


现在我们知道了,命令是执行一个功能的载体,命令可以有参数,决定命令执行的效果,也可以有返回值,这样命令就相当于一个动态的数据了。

这个特性,是不是和数学里的函数特别像?所以在计算机里,命令的正式称呼,就叫【函数】,毕竟是计算机嘛,用来做计算的。


那么我们怎么调用一个命令呢?这就涉及到语法了,语法是固定的写法,必须遵循一个标准去写,不然电脑认不出来,你的代码就无法执行!


第一种写法:

命令名 参数, 第二个参数 ...

例子:

InputBox "显示的提示信息", "默认内容", "窗口标题"

这种写法不能接收返回值,先写命令的名字,然后用空格将命令和参数隔开,之后写参数,参数之间用半角逗号隔开。

这种写法不太规范(看起来第一感觉不像是命令调用),因此不建议使用。


第二种写法:

Call 命令名(参数, 第二个参数 ...)

例子:

Call InputBox("显示的提示信息", "默认内容", "窗口标题")

这种写法同样不能接收返回值,先写命令的名字,然后用括号将所有参数括起来,参数之间用半角逗号隔开。

这种写法是老BASIC的写法,现在基本放弃使用了,也不推荐。


第三种写法:

命令名(参数, 第二个参数 ...)

例子:

InputBox("显示的提示信息", "默认内容", "窗口标题")

就是第二种写法去掉了 Call 关键字,推荐使用这种写法,几乎所有编程语言都采用这样的方式调用命令。

这种写法也可以接收返回值,直接将他作为一个数据赋值给变量,或作为参数传递给其他命令即可。


第四种写法:

Call 命令名(参数, 第二个参数 ...)

例子:

Call "Input" & "Box"("显示的提示信息", "默认内容", "窗口标题")

乍一看和第二种方法好像一样?但看例子又不一样?这种写法是将命令名作为一个字符串进行处理后,得出最终要调用的命令名。

这种写法是 TB 独有的,优点是比较灵活,可以实现一些特殊的功能。


第五种写法:

Call_IfExists 命令名(参数, 第二个参数 ...)

例子:

Call_IfExists "Input" & "Box"("显示的提示信息", "默认内容", "窗口标题")

这种写法和第四种类似,都可以将命令名以字符串的形式处理后,得出最重要调用的命令名,所以同样非常灵活,也是 TB 独有的写法。

但这个用法的逻辑是,当命令名存在的情况下,才会调用命令,否则继续执行,而 Call 语句如果命令名不存在会报错。


为第二、第四、第五种写法添加返回值支持:

第四种和第五种写法无法接收返回值怎么办呢?好办,这样写就可以啦(返回值会保存到 RetValue 变量内):

Call_IfExists "Input" & "Box"("显示的提示信息", "默认内容", "窗口标题") To RetValue


好啦,一共五种命令调用方式,你学废了嘛?


若无特殊声明,上述内容为本站原创,未经授权禁止转载!