TSL语言基础 > TSL语言基础 > 基础知识 > 常量与变量

把数组绑定到变量    

  • 说明:将数组中的值依次赋值给对应位置的变量
    语法:[变量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
    ...//获取到的正常值继续进行计算