用户函数传参数问题,数值型和序列型参数能相互转换?

RSI公式源码中: TotChgAvg = Average( Abs( Close - Close[1] ), Length ) ; 调用Average函数传的一个数值参数Abs( Close - Close[1] ) Average函数源码: Params Numeric Price(1); //数值型序列值 Numeric Length(10); //周期数 Vars Numeric AvgValue; Begin AvgValue = Summation(Price, Length) / Length; Return AvgValue; End 而Average函数中调用Summation函数传的也是Numeric数值参数Price, Summation函数源码: Params Series<Numeric> Price(1); //数值型序列值 Numeric Length(10); //周期数 Vars Numeric SumValue(0); Numeric i; Begin SumValue = 0; for i = 0 to Length - 1 { SumValue = SumValue + Price[i]; } Return SumValue; End 而Summation需要的是序列参数Price,这个里面转来转去到底是TB这个示例代码错误,还是参数可以自行转换?

我打个比方吧 往函数里传参,就好比工作中,给你的同事交代工作资料 average里执行一次Summation(Price, Length),就意味着给同事,用price这个容器,交代了一些数据,相当于你拿着一张纸(Numeric Price from Average)把数据给了同事 然后同事拿到这张纸(Numeric Price from Average)以后,自己掏了一个本子(Series<Numeric> Price from Summation)出来,然后把这张纸(Numeric Price from Average)上的数据,放到了这个本子(Series<Numeric> Price from Summation)中的一页中,这个是传参的执行过程。 所以这里不是什么转化的问题,函数并没有对传进来的容器进行操作,你说的那种用指针方式工作的容器叫指针,TBL中的称呼叫&ldquo;引用型&rdquo;

回复:明白了,感谢

回复:感觉Summation中把函数参数Series<Numeric> Price(1)放到其变量区,参数区还是Numeric Price1,然后在函数体中把Price1赋值给序列变量Price保存,会更加好理解一些。

回复:可以这么理解