Кстати, возникло любопытство: как в SearchItems по именам переменных, заданных в строке, получают сами эти переменные?
В последнем (необязательном) параметре SearchItems получает строку вида 'flags, price, sec_code', а пользовательская функция, которую вызывает SearchItems для фильтрации записей из таблицы, получает уже сами эти переменные:
local function fn(flags, price, sec_code). Как я понял, Lua не Perl, который был гениальной задумкой Larry Wall: в Перле a - имя переменной, $ - оператор разыменования, который по имени переменной выдаёт её значение. Поэтому, если $a = 'b', то $$a это то же, что и $b:
Код |
---|
$a = 'b';
$b = 'bbb';
print "$$a\n"; # выводит строку bbb |
Если в Lua действовать полным перебором типа "если в строке имя переменной 'flags', то берём переменную flags и т.п." Получится очень большой перебор, особенно, если иметь в виду, что в этой строке для SearchItems можно указывать поля вложенных таблиц, напр., 'datetime.hour'.
Кто тут глубокий копатель Lua, который может это объяснить?