Lua中文语言编程源码-第十一节,其它小改动汉化过程

__tostring 汉化过程

liolib.c metameth[] {"__转换为字符串", f_tostring},

lauxlib.c luaL_callmeta(L, idx, "__转换为字符串")

lua.c luaL_callmeta(L, 1, "__转换为字符串")

__len 汉化过程

ltm.c luaT_eventname[]

ltablib.c checkfield(L, "__长度", ++n)

__len

lua_len 找 luaV_objlen 如果是表格,就找fasttm 定义 gfasttm 找表格的flags,或找luaT_gettm表格的TMS找ename luaH_getshortstr表格对应的名值,keyisshrstr找哈希值对应名值返回相应的哈希值。

_gc 汉化过程

ltm.c luaT_eventname[]

liolib.c metameth[]

lauxlib.c boxmt[]

lbaselib.c int o = optsnum[luaL_checkoption(L, 1, "collect", opts)]; 不能更改成收集,否则收集功能不正常。

ldebug.c *name = "__gc"; 这个不用改,仅用于回收

lgc.c luaE_warnerror(L, "__gc"); 这个不用改,仅用于提示收回出错。

loadlib.c 该函数用于创建并初始化一个名为CLIBS的全局表,并为其设置元表和垃圾回收函数。

__close 汉化过程

ltm.c luaT_eventname[]

liolib.c metameth[]

lauxlib.c boxmt[]

__newindex 汉化过程

loadlib.c checktab[]

__index 汉化过程

liolib.c metameth[] 另createmeta()设置元表的 __index 字段为方法表。

lua_setfield 注意???

相关推荐
敖云岚20 分钟前
【云原生技术】容器技术的发展史
开发语言·云原生·perl
忧郁的蛋~36 分钟前
JavaScript性能优化的12种方式
开发语言·javascript·性能优化
人工智能研究所38 分钟前
使用OpenCV与Python编写自己的俄罗斯方块小游戏
开发语言·python·opencv
DDD小小小宇宙38 分钟前
python列表基础知识
开发语言·windows·python
海盗强40 分钟前
prototype和proto的区别
开发语言·javascript·原型模式
哥谭居民00011 小时前
mybatis注册一个自定义拦截器,拦截器用于自动填充字段
java·开发语言·jvm·mybatis
钟离墨笺1 小时前
【c++】【智能指针】什么情况下不适合智能指针
开发语言·c++
moz与京1 小时前
【记】如何理解kotlin中的委托属性?
android·开发语言·kotlin
左少华2 小时前
Kotlin-inline函数特效
android·开发语言·kotlin
懒大王爱吃狼2 小时前
Python + Qt Designer构建多界面GUI应用程序:Python如何调用多个界面文件
开发语言·数据库·python·qt·mysql·python基础·命令模式