好记性不如铅笔头

C && C++, Lua, 编程

Lua快速学习笔记:栈中元素的操作API

CONTENTS

备注:

1 本笔记只记录了LUA的一小部分内容,对于LUA的描述并不全面,以后随用随增加吧。
2 本笔记参考《Lua程序设计 第二版》,截图和代码属于原作者所有。
3 作者初学LUA,经验和能力有限,笔记可能有错误,还请各位路过的大牛们给予指点。
4 API参考网址:参考网址: http://www.codingnow.com/2000/download/lua_manual.html

压入元素到栈中:

栈中元素的索引值:

修改栈中元素的值:

lua_is*:

lua.h部分代码示例:

LUA_API int             (lua_isnumber) (lua_State *L, int idx);
LUA_API int             (lua_isstring) (lua_State *L, int idx);
LUA_API int             (lua_iscfunction) (lua_State *L, int idx);
LUA_API int             (lua_isuserdata) (lua_State *L, int idx);

#define lua_isfunction(L,n)	(lua_type(L, (n)) == LUA_TFUNCTION)
#define lua_istable(L,n)	(lua_type(L, (n)) == LUA_TTABLE)
#define lua_islightuserdata(L,n)	(lua_type(L, (n)) == LUA_TLIGHTUSERDATA)
#define lua_isnil(L,n)		(lua_type(L, (n)) == LUA_TNIL)
#define lua_isboolean(L,n)	(lua_type(L, (n)) == LUA_TBOOLEAN)
#define lua_isthread(L,n)	(lua_type(L, (n)) == LUA_TTHREAD)
#define lua_isnone(L,n)		(lua_type(L, (n)) == LUA_TNONE)
#define lua_isnoneornil(L, n)	(lua_type(L, (n)) <= 0)

lua_type:

lua.h部分代码示例:

LUA_API int             (lua_type) (lua_State *L, int idx);

lua_to*:

lua.h部分代码示例:

LUA_API lua_Number      (lua_tonumber) (lua_State *L, int idx);
LUA_API lua_Integer     (lua_tointeger) (lua_State *L, int idx);
LUA_API int             (lua_toboolean) (lua_State *L, int idx);
LUA_API const char     *(lua_tolstring) (lua_State *L, int idx, size_t *len);
LUA_API size_t          (lua_objlen) (lua_State *L, int idx);
LUA_API lua_CFunction   (lua_tocfunction) (lua_State *L, int idx);
LUA_API void	       *(lua_touserdata) (lua_State *L, int idx);
LUA_API lua_State      *(lua_tothread) (lua_State *L, int idx);
LUA_API const void     *(lua_topointer) (lua_State *L, int idx);

#define lua_tostring(L,i)	lua_tolstring(L, (i), NULL)

lua_typename:

lua.h部分代码示例:

LUA_API const char     *(lua_typename) (lua_State *L, int tp);

返回 tp 表示的类型名, 这个 tp 必须是 lua_type 可能返回的值中之一。

lua_gettop:

lua.h部分代码示例:

LUA_API int   (lua_gettop) (lua_State *L);

返回栈顶元素的索引。 因为索引是从 1 开始编号的, 所以这个结果等于堆栈上的元素个数(因此返回 0 表示堆栈为空)。

lua_settop:

lua.h部分代码示例:

LUA_API void  (lua_settop) (lua_State *L, int idx);

发表评论

17 + 8 =

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据