У меня есть функция следующим образом:
local function mytest(...)
local args={...}
if(#args==1 and type(args[1])=="table") then
local x, mean=nil, nil
for k,v in pairs(args[1]) do
k=string.lower(k)
if(k=="x") then x=v
elseif(k=="mean") mean=v
--the rest is omitted for brevity
end
Затем сразу после функции (в том же файле скрипта) у меня есть следующие строки:
mytable.test={}
mytable.test.mt={}
mytable.test.mt.__call=mytest
setmetatable(mytable.test, mytable.test.mt)
где mytable
- это некоторая таблица в глобальном пространстве.
Когда я вызываю функцию следующим образом:
mytable.test{x=Vec, mean=3}
, где Vec
имеет тип userdata, кажется, что тип Vec
и тип mean
неправильно передан локальной функции.Фактически, оба, кажется, передаются как таблица.Однако, если я введу следующим образом:
mytable.test=mytest
, тогда все будет работать как положено.Не уверен, какой момент я упускаю.