Есть ли популярный способ отметить типы переменных и аргументов функций в Lua? - PullRequest
0 голосов
/ 11 июня 2011

Я нахожу способ отметить типы переменных и аргументы функций в Lua. Есть ли способ? И какой-нибудь LINT-подобный инструмент для проверки этих типов?

1 Ответ

3 голосов
/ 11 июня 2011

Мне не нравятся типы кодирования в именах переменных. Я предпочитаю давать переменным достаточно явные имена, чтобы их намерение было ясным.

Если мне нужно больше, я использую функцию проверки типов при необходимости:

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

Это имеет то преимущество, что правильно выдает ошибку при выполнении. Если у вас есть тесты, ваши собственные тесты выполнят LINT и не выполнятся, если тип неожиданный.

...