luaL_optinteger (lua_State *L, int narg, lua_Integer def)
narg指第几个。
栈索引
def指默认值。
也就是narg指定的栈上没数据时,用def的值替代。
和默认参数一个概念。
类似get_stack_bydefault(L,index,default)?
LUALIB_API lua_Integer luaL_optinteger (lua_State *L, int narg,
lua_Integer def) {
return luaL_opt(L, luaL_checkinteger, narg, def);
}
其内部是传递一个check integer类型的函数啊。
也就是靠这个函数来check值。
#define luaL_opt(L,f,n,d) (lua_isnoneornil(L,(n)) ? (d) : f(L,(n)))
就是先看指定的栈索引是否为nil,不是nil那就check一个数据
#define lua_isnoneornil(L, n) (lua_type(L, (n)) <= 0)
#define LUA_TNIL 0
nil类型就是0
narg指第几个。
栈索引
def指默认值。
也就是narg指定的栈上没数据时,用def的值替代。
和默认参数一个概念。
类似get_stack_bydefault(L,index,default)?
LUALIB_API lua_Integer luaL_optinteger (lua_State *L, int narg,
lua_Integer def) {
return luaL_opt(L, luaL_checkinteger, narg, def);
}
其内部是传递一个check integer类型的函数啊。
也就是靠这个函数来check值。
#define luaL_opt(L,f,n,d) (lua_isnoneornil(L,(n)) ? (d) : f(L,(n)))
就是先看指定的栈索引是否为nil,不是nil那就check一个数据
#define lua_isnoneornil(L, n) (lua_type(L, (n)) <= 0)
#define LUA_TNIL 0
nil类型就是0
本文详细解释了Lua编程中`luaL_optinteger`函数的作用,如何通过指定参数索引和默认值来获取栈上的数值。讨论了与默认参数的概念相似性,并提供了内部实现细节,包括如何通过`luaL_opt`函数来检查和处理栈上的数据。此外,还介绍了Lua中用于判断元素是否为nil的函数`lua_isnoneornil`。
980

被折叠的 条评论
为什么被折叠?



