Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --
- -- SearshTables
- --
- --
- -- Универсальная функция обратного вызова для SearchTables.
- -- Реализует проверку условий для переменного набора параметров
- -- Возвращает true если удовлетворены ВСЕ условия (AND), иначе - false
- --
- function fmsg(fmt_str, ...)
- message(fmt_str:format(...))
- end
- function fn(t,...)
- local arg = {...}
- for k,v in ipairs(arg) do
- if k % 2 == 1 then
- key = v
- else
- val = v
- if t[key] ~= val then
- return false
- end
- end
- end
- return true
- end
- --
- -- Функция поиска элементов (таблиц) удовлетворяющих набору критериев.
- -- Переменное число параметров и соответствующих значенией, например :
- --
- -- SearchTables("trades",0,getNumberOf("trades")-1,fn,"seccode","SBER","qty",1,"price",120)
- --
- -- Возвращает таблицу, сожержащую сделки (таблицы) по SBER с qty=1 И price=120.
- function SearchTables(tables,s,e,fn,...)
- local f = {},k
- local arg = {...}
- k = 0
- for n = s,e do
- local t = getItem(tables,n)
- if fn(t,...) then
- k = k+1
- table.insert(f,k,t)
- end
- end
- return f
- end
- --
- -- Пример использования SearchTables
- --
- function main()
- _start = os.clock()
- for i = 1, 100 do
- st = SearchTables("all_trades",0,getNumberOf("all_trades")-1,fn,"sec_code","RIM6","class_code",'SPBFUT',"qty",1)
- end
- _end = os.clock()
- fmsg("found %d, took %.3f sec" , #st, _end-_start)
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement