#types #lua #lint
#типы #lua #lint
Вопрос:
Я нахожу способ отмечать типы переменных и аргументы функций в Lua. Есть ли способ? И какой-нибудь похожий на LINT инструмент для проверки этих типов?
Комментарии:
1. lua-users.org/wiki/LuaTools -> Раздел документации по коду и lua-users.org/wiki/LuaLint . Не уверен, что это то, что вы ищете…
Ответ №1:
Мне не нравятся типы кодирования в именах переменных. Я предпочитаю давать переменным достаточно явные имена, чтобы их назначение было ясным.
Если мне нужно больше, я использую функцию проверки типов, когда это необходимо:
function foo(array, callback, times)
checkType( array, 'table',
callback, 'function',
times, 'number' )
-- regular body of the function foo here
end
Функция checkType
может быть реализована следующим образом:
function checkType(...)
local args = {...}
local var, kind
for i=1, #args, 2 do
var = args[i]
kind = args[i 1]
assert(type(var) == kind, "Expected " .. tostring(var) .. " to be of type " .. tostring(kind))
end
end
Преимущество этого заключается в правильном выводе ошибки при выполнении. Если у вас есть тесты, ваши собственные тесты будут выполнять ненужную работу и завершатся неудачей, если тип является неожиданным.
Комментарии:
1. Спасибо за ответ. Я понял, что в Lua нет понятия системы типов 🙂