Добавлен Nelloy,
опубликован
Алгоритмы, Наработки и Способности
Способ реализации:
Lua
Тип:
Алгоритм
Версия Warcraft:
1.31+
Хочу поделиться функцией для проверки типа переменной.
Пример:
Пример:
local test = Player(0)
IsType(test, 'string') -- -> false
IsType(test, 'player') -- -> true
IsType(test, {'player'}) -- -> true
IsType(test, {'unit', 'player'}) -- -> true
IsType(test, {'unit', 'string'}) -- -> false
-- Change it to false for disabling
local enabled = true
---@param var_type any
---@param need_type string[]
---@return boolean
local function forList(var_type, need_type)
for i = 1, #need_type do
if var_type == need_type[i] then
return true
end
end
return false
end
---@param var any
---@return string
local function getWcType(var)
local wc3_type_string = tostring(var)
local pos = wc3_type_string:find(':')
return wc3_type_string:sub(1, pos - 1)
end
---@param var any
---@param need_type string | string[]
---@return boolean
function IsType(var, need_type)
if not enabled then
return true
end
local err = false
local is_list = false
if type(need_type) == 'table' then
is_list = true
for i = 1, #need_type do
if type(need_type[i]) ~= 'string' then
err = true
break
end
end
elseif type(need_type) ~= 'string' then
err = true
end
if err then
error('isType: need_type must be string or string[] type.', 2)
end
local var_type = type(var)
if var_type == 'userdata' then
var_type = getWcType(var)
end
if is_list then
return forList(var_type, need_type)
else
return var_type == need_type
end
end
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
Отредактирован GetLocalPlayer
Отредактирован Nelloy
Очень помог!