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 = optsnumluaL_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 注意???

相关推荐
LDR00614 天前
Type-C 快充全面升级!LDR6601 赋能个人护理便携电机,重塑剃须刀 / 理发器新体验
c语言·开发语言
雪碧聊技术14 天前
Tree.js是什么?一文讲透
开发语言·javascript·ecmascript
码云数智-园园14 天前
C++20 Modules 模块详解
java·开发语言·spring
swordbob15 天前
NIO的channel中什么是 fd(File Descriptor,文件描述符)
java·开发语言·nio
源分享15 天前
Java线程同步的多种实现方法(非常详细)
java·开发语言·jvm
Luminous.15 天前
C语言--day30
c语言·开发语言
玖玥拾15 天前
C/C++ 数据结构(七)栈、容器适配器
c语言·数据结构·c++··容器适配器
何以解忧,唯有..15 天前
Go语言循环语句详解:for、range与循环控制
开发语言·算法·golang
謓泽15 天前
C语言不是语法,是通往机器的地图。
c语言·开发语言
云水一下15 天前
从零开始学 PHP 系列(一):PHP 的前世今生与开发环境搭建
开发语言·php