Lua не имеет функции перегрузки или проверки типов аргументов, при необходимости они должны быть реализованы нужным.Передача информации об использовании вашей функции также зависит от вас.
Если вы не удовлетворены предоставленным фрагментом, вы можете переписать его другими способами, например:
function(arg1,arg2,arg3)
tab=arg1
if not arg3 then
value=arg2
index=#tab+1
else
assert(type(arg2)=='numer',"bad argument #2 to 'insert' (number expected, got table)")
value=arg3
index=arg2
end
table.insert(tab,index,value)
end
или:
f2=function(a,b)
--do smth
end
f3=function(a,b,c) end
f=function(...)
args={...}
nargin=#args
if nargin==2 then
f2(args[1],args[2]) --one way to use varied arguments
elseif nargin==3 then
f3(...) --other one
else error("wrong number of arguments")
end
end
Я не рекомендую делать функции с необязательными аргументами среднего положения.По крайней мере, не в языке без проверки типов времени компиляции, и даже в тех.
Если вам действительно нужны необязательные аргументы, поместите их в таблицу:
function(args)
tab=args.table
index=args.index or #tab+1
value=args.value
--other arguments, options and associated logic here
table.insert(tab,index,value)
end