FAQ > 金融建模 > 建模问题 > 语法相关

Q:为什么在天软中给子矩阵赋值的语句返回值为0?    

  • A:我们执行以下两段语句:

    b:=array(1,2,3);
    return a:=b;
    //返回1,2,3序列


    b:=array(1,2,3);//b:=1;
    a:=zeros(3,'a');
    return a[:,'a']:=b;
    //返回0

    会发现,同样是赋值语句,为什么第一段返回b的值,而第二段返回的却是0?
    原因是天软没有支持这种子矩阵赋值的返回值的写法。
    因为实现中给赋值语句返回值存在效率的额外开销,一般而言使用这种返回值的情况极少。此外,子矩阵赋值存在一些问题,例如第二段中,若b:=1;,则a[:,'a']:=b后,a[:,'a']是一个值为1的序列,是对数组的单元格一一赋值为1 的操作,所以,此时返回是选标量1还是值为1的数组序列呢,也不容易解读。