SetUpdateCallback

Страницы: 1
RSS
SetUpdateCallback
 
Странная наблюдается закономерность. Как и в случае с SearchItems,  https://forum.quik.ru/messages/forum10/message15516/topic36/#message15516
пользоваться функциями QLUA непосредственно в реальных ситуациях крайне неудобно. Всегда нужны какие-от дополнительные обертки, костыли ...
Вот и SetUpdateCallback для CreateDataSource. В руководстве приведен замечательный пример, который сразу же вызывает вопросы (такие же как и
в случае с SearchItems) Там функция обратного вызова содержит явное использование источника данных, который никак туда не передается. Это что
же, для каждого источника писать свою функцию, даже когда нужна одинаковая стандартная обработка ? Фактически так и есть и остроумное решение
https://forum.quik.ru/messages/forum10/message1689/topic233/#message1689 лишь скрывает этот факт (еще одна обертка).

С другой стороны, ds:SetUpdateCallback(ucb)   эквивалентен  ds.SetUpdateCallback(ds,ucb) и источник данных должен быть доступен
в SetUpdateCallback через self, но тогда что мешает явно передать его ucb ?


 
 
Последняя строчка Вашего вопроса вроде бы уже содержит ответ,  или нет?
 
Если бы это было возможно, можно было бы просто писать

function ucb(index,ds)
   c = ds:C(index)
   ...
end

for i=1,n do
 sec[i].ds = CreateDataSource(sec[i].ClassCode,sec[i].SecCode,sec[i].Int)
 sec[i].ds:SetUpdateCallback(ucb)  
end
 
Цитата
Андрей 77 написал:
function ucb(index,ds)
   c = ds:C(index)
   ...
end

for i=1,n do
 sec.ds = CreateDataSource(sec.ClassCode,sec.SecCode,sec.Int)
 sec.ds:SetUpdateCallback(ucb)  
end
т е Вам не нравится такое решение:

for i=1,n do
 sec.ds = CreateDataSource(sec.ClassCode,sec.SecCode,sec.Int)
   sec.ds:SetUpdateCallback(function (index) ucb(index,ds) end)
end
--------
по причине лишнего вызова функции?
Понятно.  
 
Андрей 77, прочтите как использовать в Lua upvalue и closure.
Страницы: 1
Читают тему
Наверх