检查参数 |
|
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 用作转义符,因此此函数不会检查该参数的类型。
欢迎评论。