序列参数不好用

代码大致如下:

Vars 
    Series<Numeric> d1;

    Global Numeric i(0);
Events
    OnBar(ArrayRef<Integer> indexs)
    {
        //d1=10,d1[1]=10
        test3(d1); //test3是个用户函数,只是记录下参数d1和d1[1]的值,d1=10,d1[1]=0
        if(Mod(i,10)==0)
        {
            d1=i;
        }
        i=i+1;

        //d1=10,d1[1]=10
    }

当i=11的时候,各位置的d1和d1[1]的值如上。为什么序列变量在函数里和函数外的值不一样?

用户函数传参数问题,数值型和序列型参数能相互转换?
请问在defs空间中如何申明序列类型的参数?
序列变量
为什么BARSLAST传入的参数不是序列,代码实现也没有使用循环
换手率的系统例程里面,为什么Average函数的参数不是序列型?
时间序列
TBL初学疑问之序列类型
序列变量求解
关于序列变量函数和if
TB公式编写必看——序列函数避坑指南