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

相关推荐
想吃火锅10057 分钟前
【leetcode】405.数字转换为十六进制数js
开发语言·javascript·ecmascript
专注VB编程开发20年38 分钟前
AI 生成C# WinForm 窗体 = 目前就是垃圾
开发语言·人工智能·c#
cfm_291439 分钟前
JVM GC垃圾回收初步了解
java·开发语言·jvm
~小先生~1 小时前
Python从入门到放弃(一)
开发语言·python
许彰午1 小时前
17_synchronized关键字深度解析
java·开发语言
z落落1 小时前
C# 泛型接口和泛型类+泛型约束
开发语言·c#
阿正的梦工坊2 小时前
【Rust】02-变量、不可变性与基础类型
开发语言·后端·rust
阿正的梦工坊2 小时前
【Rust】08-集合类型、字符串与迭代器入门
开发语言·rust·c#
FuckPatience2 小时前
C# 使用泛型协变将派生类类型替换为基类类型
开发语言·c#
张忠琳2 小时前
【Go 1.26.4】(Part 1) Go 1.26.4 超深度源码分析 — 总体架构与模块全景
开发语言·golang