说明:将数组中的值依次赋值给对应位置的变量
语法:[变量1,变量2,...]:=array(值1,值2,...);
注意:
1 右边的数组行标(即第一维)必须是自然数字下标,支持多维数组。
2 左边变量必须从第一个开始,依次赋值,前面的变量不能为空。当变量名存在同名时,后面的会覆盖前面的。
3 该种用法中,变量个数只有一个时,后面的逗号不能省,即最短写法为[r1,]:=array(1);
4 右边的值必须是一个数组,可以是多维数组
5 左边的变量数大于右边的行数时,无对应值的变量值为nil。左边的变量个数可以少于右边数组的行数。
6 支持在函数传参中使用,具体用法可参考范例05。
范例:
范例01:一般用法
//将数组中每个值都赋值给对应位置变量
[r1,r2]:=array(1,3,5,7,9);
return r1+r2;//返回4,其中,r1的值为1,r2的值为3。
范例02:变量最少的用法
//将数组第一个值赋值给变量
[re,]:=array(1,2,3,4);
return re;//返回1
范例03:变量个数多于数组长度的示例
//数组中只有一个值
[r1,r2]:=array(1);
return r2;//返回nil
范例04:二维数组
[r1,r2]:=array((1,2),(3,4));
return r2;//返回array(3,4)
范例05:函数传参
说明:调用函数时,当参数是表达式时,会先根据参数的位置依次执行表达式,然后将表达式的值传入到被调函数中。
比如存在函数test(a,b,c),具体实现如下,在调用时,执行如下:
return test(e:=3,[f,g]:=array(1,2),g);
其传参数可理解为:先将3赋值给变量e,再将e的值作为函数的第一个参数传入,再执行表达式[f,g]:=array(1,2),分别给变量f、g赋值并将变量f([f,g]中的第一个值)的值作为函数的第二个参数传入,最后一步将变量g的值作为函数的第三个参数传入;所以执行结果为3+1+2=6。
而当执行return test(e:=3,[f,g]:=array(1,2))会返回4。原因是,没有传入第三个参数,因此结果为3+1+nil=4。(nil参与运算不报错的情况下,若报错模式则会引发程序报错)。
注:此种用法并不常用。
//test函数内容
function test(a,b,c)
begin
return a+b+c;
end
范例06:实用场景,当我们执行某个程序之后想要返回多个指标值,可以采用这种方式进行处理会更快便捷。比如在数据库交互过程中,做一个数据提取的操作的时候,我既希望可以返回提取的数据结果集,又希望在提取失败时返回具体失败的信息,方便查看失败的原因。那此时,就希望能一次返回两个结果,一个代表数据库操作是否成功的Bool类型结果,另一个代表的是提取的结果集或报错信息。那通过数组绑定变量的方式就可以很好地读取到对应的信息值,大致过程如下所示:
//被调函数
function add(a,b)
begin
if not (ifreal(a) and ifreal(b)) then
return array(1,"传入参数不为实数");
return array(0,a+b);
end
调用方式如下:
[error,re]:=add(3,4); //error变量取到的是计算结果是否异常,re代表的是执行结果或报错信息
if error then begin
...//异常处理
end
...//获取到的正常值继续进行计算