-
Notifications
You must be signed in to change notification settings - Fork 347
is_vararg
- Lua 5.1
-
is_vararg = 0
a function without param ...
不带 ... 参数的函数 -
is_vararg = 2
main function, can use ... , arg is always global
主函数,可以用 ... , arg 是全局变量
standalone interpreter(lua.exe) set global arg (_G.arg) with command line arguments , {} at least
独立解释器(lua.exe) 会用命令行参数填充 全局变量 arg (_G.arg) ,至少会是 {} -
#define LUA_COMPAT_VARARG
- function defined with ..., like function f(...) or function f(x,...)
有 ... 参数的函数, 比如 function f(...) 或 function f(x,...)
always has extra local param arg
始终有一个额外的局部参数 arg - is_vararg = 3
use ... in function body, arg = nil
在函数中用了 ... , 此时 arg = nil
compiled binary chunk can be executed in a lua.exe without LUA_COMPAT_VARARG defined
此函数在编译后可以在没定义 LUA_COMPAT_VARARG 的解释器 lua.exe 中运行 - is_vararg = 7
not use ... in function body, extra local param arg = {...}, for source compatity with 5.0
函数中没有使用 ... , 此时额外的局部参数 arg = {...} ,源码兼容 5.0
compiled binary chunk cannot be executed in a lua.exe without LUA_COMPAT_VARARG defined
此函数在编译后不能在没定义 LUA_COMPAT_VARARG 的解释器 lua.exe 中运行
- function defined with ..., like function f(...) or function f(x,...)
-
-- R0 : param arg -- R1 : param a -- R2 : vararg arg -- R3 : local arg -- R4 : local a local function vararg_var3(arg,a,...) -- LUA_COMPAT_VARARG is_vararg=3 , vararg as local arg=nil , override param arg local arg = 3 -- override vararg arg local a = 4 -- override param a return {...} end
local function vararg_var7(arg,a,...) -- LUA_COMPAT_VARARG is_vararg=7 , vararg as local arg={...} , override param arg local arg = 3 -- override vararg arg local a = 4 -- override param a return nil end
* \#undef LUA_COMPAT_VARARG
* is_vararg = 2
function defined with ..., like function f(...) or function f(x,...)
有 ... 参数的函数, 比如 function f(...) 或 function f(x,...)
extra local param arg will not be defined
不会定义默认额外的局部参数 arg
compiled binary chunk can be executed in a lua.exe with LUA_COMPAT_VARARG defined
此函数在编译后可以在定义了 LUA_COMPAT_VARARG 的解释器 lua.exe 中运行
+ Lua 5.2 and 5.3
* is_vararg = 0
a function without param ...
不带 ... 参数的函数
* is_vararg = 1
a function use ... , main included
带 ... 参数的函数, 包括主函数
standalone interpreter(lua.exe) set global arg (_G.arg) with command line arguments , {} at least
独立解释器(lua.exe) 会用命令行参数填充 全局变量 arg (_G.arg) ,至少会是 {}