LUA 学习笔记 03

1. 压入元素:

 

void lua_pushnil ( lua_State *L );

void lua_pushboolean ( lua_State *L, int bool );

void lua_pushnumber ( lua_State *L, lua_Number n );

void lua_pushinteger ( lua_State *L, lua_Integer );

void lua_pushlstring ( lua_State *L, const char *s, size_t len );

void lua_pushstring ( lua_State *L, const char *s );

 

2. 查询元素:

 

元素在 LUA 虚拟栈中的索引 ( 顶在最上 )

从上到下: -1-2-3…

从下到上: 123…

 

int lua_is* ( lua_State *L, int index );

int lua_toboolean ( lua_State *L, int index );

lua_Number lua_tonumber ( lua_State *L, int index );

lua_Integer lua_tointeger ( lua_State *L, int index );

const char *lua_tolstring ( lua_State *L, int index, int *len ); /* len 存储返回字符串的长度 */

size_t lua_objlen ( lua_State *L, int index );

 

int lua_type ( lua_State *, int index );

 

LUA_TNIL,

LUA_TBOOLEAN,

LUA_TNUMBER,

LUA_TSTRING,

LUA_TTABLE,

LUA_TTHREAD,

LUA_TUSERDATA,

LUA_TFUNCTION

 

3. LUA 虚拟栈操作:

 

int lua_gettop ( lua_State *L );

void lua_settop ( lua_State *L, int index );

void lua_pushvalue ( lua_State *L, int index ); /* index 复制,压入栈顶 */

void lua_remove ( lua_State *L, int index ); /* 删除 index */

void lua_insert ( lua_State *L, int index ); /* 把栈顶元素插入 index */

void lua_replace ( lua_State *L, int index ); /* 用栈顶元素替换 index */

void lua_getglobal ( lua_State *L, char *varname ); /* LUA 全局量压入栈顶 */

 

#define lua_pop ( L, n )   lua_settop ( L, -(n)-1 )

 

4. 调用 LUA 函数:

 

压入函数:     lua_getglobal();

压入参数:     lua_push*();   /* 逐个压入 */

调用函数:     lua_pcall();     /* lua_call() */

获取结果:     re = lua_to*(L,-1); /* 从栈顶得到最后一个返回值 */

 

(一般还要将函数结果弹出, lua_pop(L,1)

 

5. dofile 只是调用 loadfile ,并做了错误处理:

   function dofile ( filename )

              local f = assert ( loadfile ( filename ) )

              return f()

   end

 

6. loadstring ,调用 loadloadfile 也是),但是速度较慢,并且如内部无声明一直在全局环境编译字符串。

 

7. LUA 将所有独立程序块视为一匿名函数的函数体,且该匿名函数有可变长实参。

 

8. 加载程序块后,要对其中函数进行定义后才能使用。

 

9. local f = package.loadlib ( path, funcname );

 

10. 若函数执行失败,返回的错误消息在最后一个返回值后面。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值