SetUpdateCallback Опять косячит ?

Страницы: 1
RSS
SetUpdateCallback Опять косячит ?
 
Здравствуйте,

Развейте пожалуйста мои сомнения насчет того, что Quik и в частности SetUpdateCallback() - опять работают, какбудто бы их написал через %опу, и что руки их %опы, растут, как раз таки у меня.

Использую такой простейший код для теста: просто вывожу последнюю цену сделки и обьем по последней минутной свече:

Код
function main()
    local class_code = "TQBR" -- Код класса
    local sec_code = "SBER" -- Код бумаги

    ds = CreateDataSource(class_code, sec_code, INTERVAL_M1)
    ds:SetUpdateCallback(function(index)
        local last_price = ds:C(index)
        local volume = ds:V(index) -- Получение объема по свече
        message("Last Price of " .. sec_code .. ": " .. tostring(last_price) .. ", Volume: " .. tostring(volume)) -- Вывод цены и объема по свече
    end)

    while true do
        sleep(1000)
    end
end

Данный код исправно работает.
НО, как только я вывожу код SetUpdateCallback в отдельный колбек, то ничего более не работает. Ошибок также в скрипте нет, но он не сообщает ни о каких измененениях, то есть колбек функция указанная в качестве параметра для SetUpdateCallback - тупо не вызывается при изменнеии цены:
Код
function updateCallback(index)
    local last_price = ds:C(index)
    local volume = ds:V(index) -- Получение объема по свече
    message("Last Price of " .. sec_code .. ": " .. tostring(last_price) .. ", Volume: " .. tostring(volume)) -- Вывод цены и объема по свече
end

function main()
    local class_code = "TQBR" -- Код класса
    local sec_code = "SBER" -- Код бумаги

    ds = CreateDataSource(class_code, sec_code, INTERVAL_M1)
    ds:SetUpdateCallback(updateCallback)

    while true do
        sleep(1000)
    end
end
Кто из нас рукожоп ? Я или разрабы Квика ? Надеюсь, что я.
 
В теории да. Но меня прямо коробит (без обид) такая запись. Переменная ds глобальная, объявляется где-то там.
В первом варианте анонимная функция хотя бы видит ее как up-value, а во втором - вся надежда на то, что она объявлена и инициализирована.

Хотя бы объявите переменную в самом начале кода.
 
Цитата
Nikolay написал:
В теории да. Но меня прямо коробит (без обид) такая запись. Переменная ds глобальная, объявляется где-то там.
В первом варианте анонимная функция хотя бы видит ее как up-value, а во втором - вся надежда на то, что она объявлена и инициализирована.

Хотя бы объявите переменную в самом начале кода.
Да рукожоп я. Я забыл зону видимости. Передал "ds" в колбек через замыкание.
Страницы: 1
Читают тему
Наверх