关于Return和Continue的问题

假如在onbar中使用range[0:1]包裹两(多)个数据源,那么无论data0还是data1的tick来了,都是按顺序把data0和data1的程序体都执行一遍,因为range本质上是一个for循环,那么假设想要在data0中用If (data0 and H > ...) {return;}截断部分程序体,但不影响data1的正常运行(此时data1没有满足return条件 If (data1 and H > ...)),就不能使用return,而应该是continue,因为data0的return会把后面所有数据源的执行全部截断,不知道我的理解是否正确,请老师帮我看看

range[1:1]只走data1的数据源

回复:Onbar{} { Range[0:DataCount-1] { """ 程序块1 """ If (H > 100) Return/Continue; """ 程序块2 """ } }我刚才表述可能不清楚,假设有这样一段代码,我想要的效果是每个data都在执行完程序块1后独立判断自己的数据是否满足H>100,满足则跳过程序块2,但是使用return语句发现不止跳过了程序块2,还跳过了后续的所有data的所有程序体,使用continue则可以达到我想要的效果。所以我想向你求证:1.range[]是否是以循环的形式编译的?2.在实盘中,接收到任意一个图层的tick并驱动程序时,是否也是从data0开始循环驱动,所以在遇到return时不止截断了当前图层的程序体2,还截断了后续所有图层的运行?

回复:是的,你描述的很正确,1、range本质就是循环图层做操作 2、如果是0到datacount-1,那任意图层tick驱动都会进入,return是会结束循环的,continue是跳过当前循环

回复:感谢