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