Существует ли популярный способ отмечать типы переменных и аргументов функций в Lua?

#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 нет понятия системы типов 🙂