当前位置: 首页 > article >正文

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


http://www.kler.cn/a/537078.html

相关文章:

  • 如何导入第三方sdk | 引入第三方jar 包
  • 文件基础IO
  • 路由器如何进行数据包转发?
  • 数据库系统概论的第六版与第五版的区别,附pdf
  • 51单片机 02 独立按键
  • 【Gitlab】虚拟机硬盘文件丢失,通过xx-flat.vmdk恢复方法
  • Android studio 创建aar包给Unity使用
  • 使用 Axios ——个人信息修改
  • ES6 Set 数据结构用法总结
  • Flutter List 的 every 如果回调函数抛出异常 应该如何处理
  • 尚硅谷 vue3+TS 课程笔记
  • Flutter Isolate解决耗时任务导致卡死
  • 工业以太网profinet网关:解锁生产效率提升的“超级钥匙”
  • 【DeepSeek-R1训练笔记】随手记录一些训练log
  • 【leetcode100】岛屿的最大面积
  • Rust语言进阶之标准输入: stdin用法实例(一百零五)
  • CRM系统中的数据分析和报表功能如何帮助企业?
  • 58页PPT学习华为面向业务价值的数据治理实践
  • windows版的docker如何使用宿主机的GPU
  • nas-群晖docker查询注册表失败解决办法(平替:使用SSH命令拉取ddns-go)
  • opentelemetry-collector 配置elasticsearch
  • 设计高效的测试用例:从需求到验证
  • 协议桥梁~Profinet与Ethernet IP的智慧连接完美应用在汽车制造业
  • 【DeepSeek:国产大模型的崛起与ChatGPT的全面对比】
  • leetcode_47全排列II
  • 【Pytorch】nn.RNN、nn.LSTM 和 nn.GRU的输入和输出形状