检查参数 |
|
int luac_checkargs(lua_State *L, int count, ...) { va_list ap; int i, t, u; va_start(ap, count); for (i = 1; i <= count; i++) { t = va_arg(ap, int); if (t<=LUA_TNIL) continue; u = lua_type(L, i); if (t!=u) { va_end(ap); return luaL_typerror(L, i, lua_typename(L, t)); } } va_end(ap); if (lua_gettop(L)>count) return luaL_argerror (L, count+1, "too many arguments"); return 0; }
此函数的示例用法如下所示
static int luac_testcheckargs(lua_State *L) { luac_checkargs(L, 3, LUA_TNUMBER, LUA_TNIL, LUA_TBOOLEAN); return 0; }
对于重载函数,它可以用来专门测试单个参数是否符合多种类型。LUA_TNIL
和 LUA_TNONE
用作转义符,因此此函数不会检查该参数的类型。
欢迎评论。