发布时间:2013-01-13 09:01:45
最近阅读proxy代码时,遇到了metatable中的__index,__newindex,一开始还以为像其他的元表一样理解,后来发现不对。 当在表中查找元素没有找到的时候,就会调用__index指定的方法。 当给表中不存在的域赋值时,就会查找__newindex,并调用这个方法 阅读 http://blog.sina.com.cn/s/blog_5b01213501019rr5.html ......【阅读全文】
发布时间:2013-01-12 12:27:19
最近阅读proxy代码时,遇到了metatable中的__index,__newindex,一开始还以为像其他的元表一样理解,后来发现不对。 当在表中查找元素没有找到的时候,就会调用__index指定的方法。 当给表中不存在的域赋值时,就会查找__newindex,并调用这个方法 阅读 http://www.cnblogs.com/simonw/archive/2007/01/17/622032.html ......【阅读全文】
发布时间:2013-01-10 16:23:35
C通过lua C API来与lua脚本交互;当lua_load加载一个提供了很多函数的lua脚本时,整个脚本文件是作为一个整体的,从lua 5.1 手册上可以得到证实,而它的执行就是将脚本中的所有函数导入成了全局函数。 后续使用这些函数时,通过函数名来查找并入栈。lua_getglobal只是将函数找到并将其指针放置在栈中。 在lua环境下回调C函数时,C环境下总是通过正序方式来获取参数。 有一种特别的情况,当调用的方法是一个u......【阅读全文】
发布时间:2013-01-10 00:15:11
lua_getfield 即 取lua虚拟栈中指定位置的表中的指定字段的值,并放入lua虚拟栈中。 lua_setfield 即 取出lua虚拟栈中的栈顶作为value,参数为key构成表字段放置到虚拟栈的指定位置的表中。 如果lua_getfield的操作中,指定位置的表中不存在这个字段,则产生一个nil类型的元素放置在lua栈顶。 LUA_GLOBALSINDEX与LUA_REGISTRYINDEX中的字段都是不会计入lua栈中的。 lua的metatable主要是作为一组操作集出现。它一般与userdata结合起来,形成一个......【阅读全文】