Поскольку переменные не могут быть изменены, счетчики и т. Д. Реализуются массивами IDataHolder, где счетчик получает значение путем добавления значения к предыдущему значению, которое затем сохраняется в текущей позиции перед переходом к следующей позиции. Этот механизм частично ломается в следующем скрипте сканирования, где чтение переменной, кажется, меняет ее значение, и я хотел бы понять, почему:
# Sum Test
# Build sum starting at the left end
def sum;
if (BarNumber() < 5) {
if (BarNumber() == 1) {
sum = 1;
} else {
sum = sum[1] + 1;
}
} else {
sum = sum[1]; # This causes the problem.
#sum = Double.NaN;# alternative: does not change previous value but useless.
}
# Test that the first sum entry is 1 as expected
plot scan = GetValue(sum, BarNumber() -1) == 1;