变量和数组
什么是变量?
变量是一个用于临时存放数据的符号,在本软件中主要用于命令之间交换数据,参与表达式运算,为一些命令提供可变化的数据等等。如下列的表达式中,使用了内置变量mousecur_x,此变量内的数据是当前鼠标的X坐标值,在魔法播放时,这个表达式的最终结果将取决于mousecur_x存放的数字。
%=mousecur_x + 10%
变量在本软件中是一个非常重要的角色,通过它可以使一个魔法脚本具有极大的灵活性,比如一个需要将大量数据从Excel表格中导入到网页的魔法脚本,如果没有变量将无法实现。在一些操作固定,但数据不同的步骤中,可以使用变量代替实际的数据,从而使魔法脚本可以针对不同的数据完成相同的操作。
如何在命令中使用变量
绝大部分命令都可以使用变量或是表达式做为参数,除非特别说明,否则一个变量必须以百分号括起来,如:%mousecur_x% 魔法播放器会将百分号内的内容当作变量或是表达式来处理,通过运算(表达式)或是取值(变量)来代替原来的内容,关于表达式的更多内容,请参考如何使用表达式.
变量的类型
本软件中变量分为:用户自定义变量、用户自定义全局变量、预定义内置变量三种类型。
- 用户自定义变量
在一个脚本中根据需要增加的变量,自定义变量可以通过编辑器的“变量”菜单进行增加、删除、修改,具体请参见 在编辑器中修改自定义变量。
- 全局变量
对于一个自定义变量,可以设置为全局变量,这样在后面的函数中则可以直接使用此变量,主要用于保存一些全局性的数据。全局变量只能在主函数中定义,普通函数中不能定义。
- 预定义内置变量
预定义内置变量用于存放一些系统相关的数据,魔法脚本可以通过读取这些变量得到系统相关的数据,比如当前鼠标位置,魔法脚本的文件名称,当前系统的时间等等。
预定义内置变量均为只读变量,只能读不能设置内容。
自定义变量的命名规则
- 一个变量的名字必须一个非数字的字符开始,也可以使用下划线。
- 变量名称不区分大小写,V_ABC和v_abc是相同的。
- 变量名中不能有空格,引号,斜杠,反斜杠之类的特殊字符。
数组
数组和普通变量类似,但普通变量只能保存一个数据,数组则可以在里面保存很多个数据,所以数组特别适合需要保存一组相关或者同类数据的情况,比如一个屏幕的坐标会有X和y两个数据来对应水平和垂直的位置,用数组来保存就会更方便合理。
语法:
数组名称 [ 元素索引或者元素名称 ]
数组的使用规则
- 下标数字从0开始,0 表示第一个元素, 1是第二个元素,依此类推。
- 数组元素的索引号可以不是连续的,比如:1, 5, 10这样排列是允许的。当一个数组没有初始化,且使用了设置变量值的命令时就有可能出现这类情况,详细情况看下面的数组和普通变量转换
- 每一个数组元素都可以有一个名称。
- 数组下标,也就是索引号或者是元素名称以方括号括起来,如:
ar_abc[1], ar_abc[2], ar_abc['x'], ar_abc['y']
- 数组可以有很多层(维),比如: v[1], v[1][1], v[2][1][3],依此类推。
- 多维数组的元素可以使用元素路径方式访问,也就是不同维数之间用逗号隔开,如:
ar_abc[1, 2], ar_abc[2, 'x']
也可以用方括号隔开:ar_abc[1][2], ar_abc[2]['x']
- 每一个数组元素都可以保存不同类型的数据。
- 下标可以是一个表达式,如:
a_abc[2+3], ar_abc[ v_var1 * 3, 2]
- 下标也可以是一个变量,如:
a_abc[v]
如果v的值为1,则:a_abc[v]相当于a_abc[1], 如果v的值是一个元素路径,比如: 1, "name",则: a_abc[v] 相当于 a_abc[1,"name"]
数组和普通变量之间的转换
- 数组可以不用创建,直接对普通变量按数组方式进行数据设置,播放器会自动转换变量为数组,并保留原来的值做为第一个元素。
比如有一个变量 v,原来的值为文本'abc', 如果某个命令直接使用 v['x'] 对其进行设置数字200,则执行完后会变成一个有两个元素的数组,第一个元素是原来的变量值'abc',第二个会新增的名称为'x'的元素,值为200。
提示: 使用此方式转换普通变量有可能会出现一个非连续的索引号。比如对一个普通变量 v, 只有命令设置了 v[1]和 v[10]两个元素,索引号2 - 9的元素不会自动增加。
- 对于需要连续索引号的数组,应使用重定义数组命令进行初始化,然后再使用。
- 有些命令需要数组存放返回的数据,播放器也会自动进行转换命令中指定的变量或者数组。