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的数组序列呢,也不容易解读。