Блог им. _sk_
-- -- Выполнение действий с массивами. -- local pairs = pairs local type = type module(...) --- Создать копию массива (таблицы) -- @return копию массива (таблицы) function copy(array) local copy_array = {} if type(array) ~= "table" then return array end for k, v in pairs(array) do if type(v) == "table" then copy_array[k] = copy(v) else copy_array[k] = v end end return copy_array end --- Узнать, начинается ли индексация в массиве с нуля или с единицы. -- @return 0 или 1 function base(array) if array[0] ~= nil then return 0 else return 1 end end --- Вычислить число элементов в массиве. -- @return число элементов в массиве function size(array) local n = 0 for _, _ in pairs(array) do n = n + 1 end return n end --- Проверить пустой или нет массив. -- @return true/false function isEmpty(array) for _, _ in pairs(array) do return false end return true end --- Получить первый индекс массива, где ничего не записано. Поиск начинается с 1. -- @return первый индекс массива, где ничего не записано function firstEmptyIndex(array) local i = 1 while array[i] ~= nil do i = i + 1 end return i end
-- -- Выполнение действий с массивами. -- local Arrays = {} --- Создать копию массива (таблицы) -- @return копия массива (таблицы) local function copy(array) local copy_array = {} if type(array) ~= "table" then return array end for k, v in pairs(array) do if type(v) == "table" then copy_array[k] = copy(v) else copy_array[k] = v end end return copy_array end Arrays.copy = copy --- Узнать, начинается ли индексация в массиве с нуля или с единицы. -- @return 0 или 1 local function base(array) if array[0] ~= nil then return 0 else return 1 end end Arrays.base = base --- Вычислить число элементов в массиве. -- @return число элементов в массиве local function size(array) local n = 0 for _, _ in pairs(array) do n = n + 1 end return n end Arrays.size = size --- Проверить пустой или нет массив. -- @return true/false local function isEmpty(array) return next(array) == nil end Arrays.isEmpty = isEmpty --- Получить первый индекс массива, где ничего не записано. Поиск начинается с 1. -- @return первый индекс массива, где ничего не записано local function firstEmptyIndex(array) local i = 1 while array[i] ~= nil do i = i + 1 end return i end Arrays.firstEmptyIndex = firstEmptyIndex return ArraysВторое важное изменение касается целочисленной арифметики. В Lua 5.3 есть 2 типа чисел: integer и float. Для первых реализована целочисленная арифметика, вторые нужны для представления вещественных чисел. Можно считать, что в Lua 5.1 были только float-числа. Номера заявок и сделок теперь будут представляться типом integer, и там хватит места для 19-значных чисел.
local tointeger = math.tointeger or (function(x) return x end) --- Сделать вещественное число целым, если это возможно. -- @param x вещественное число -- @return целое число или исходное вещественное число, если преобразование невозможно function tryInt(x) return tointeger(x) or x endТеперь ищем все места, где заполняется таблица с параметрами транзакции для постановки заявки, и там вместо обычного
QUANTITY = tostring(выражение),пишем
QUANTITY = tostring(tryInt(выражение)),В принципе, этого должно быть достаточно для правильной работы скриптов.
Вроде, поместили функции в массив, и пользуйся на здоровье.
local Arrays = require(«util.Arrays»)
как у Вас терминал 8.5.2 не падал? у меня дак рекорд 7 дней и сегодня упал без дампа( но стал заметно стабильнее чем 8.5.1 тот совсем только два дня держался
А вот для целых чисел применение math.floor бессмысленно!
Отрицательное число это округлит до ближайшего меньшего целого.
www.lua.org/manual/5.3/
> = math.modf (-1.2345)
-1 -0.2345
local tostring__ = tostring
Function tostring(x)
If math.tointeger(x) then
Return string.format("%0i",x)
End
Return tostring__(x)
End
Ну и размер массива можно вычислить встроенной функцией, а не пользовательской. Функция появилась в 5.3 в пространстве table
Также там есть теперь и table.copy… Одним словом, выкинуть можно весь этот модуль полностью)))))
что-то у меня скомпиленный индикатор не хочет запускать
даже после перекомпиляции под lua 5.3.5
а без компиляции норм
upd: разобрался, надо использовать x64 luac, а я случайно собрал x86 luac из исходников