命令相当于指挥电脑完成一个任务,这个任务可以是有反馈的,也可以是无反馈的。
例如 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
好啦,一共五种命令调用方式,你学废了嘛?