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

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.lryc.cn/news/533081.html

相关文章:

  • Safari常用快捷键
  • Git登录并解决 CAPTCHA
  • Websocket从原理到实战
  • Ubuntu 下 nginx-1.24.0 源码分析 - ngx_get_options函数
  • 判断您的Mac当前使用的是Zsh还是Bash:echo $SHELL、echo $0
  • Centos执行yum命令报错
  • 订单超时设计(1)--- 如何使用redis实现订单超时实时关闭功能
  • 485网关数据收发测试
  • RabbitMQ快速上手及入门
  • 4种架构的定义和关联
  • 109,【1】攻防世界 web 题目名称-文件包含
  • leetcode90 子集II
  • DeepSeek模型构建与训练
  • PyTorch torch.unbind、torch.split 和 torch.chunk函数介绍
  • 【愚公系列】《循序渐进Vue.js 3.x前端开发实践》061-Vue Router的动态路由
  • 杭州某小厂面试
  • C基础寒假练习(8)
  • 设计模式 ->模板方法模式(Template Method Pattern)
  • Redis存储⑤Redis五大数据类型之 List 和 Set。
  • MySQL开窗函数种类和使用总结
  • DeepSeek——DeepSeek模型部署实战
  • zsh: command not found: pip
  • 机器学习数学基础:16.方程组
  • 即梦(Dreamina)技术浅析(四):生成对抗网络
  • 2025年软件测试五大趋势:AI、API安全、云测试等前沿实践
  • Vue混入(Mixins)与插件开发深度解析
  • 【C++】C++11
  • k8sollama部署deepseek-R1模型,内网无坑
  • mysql8 C++源码中创建表函数,表字段最大数量限制,表行最大存储限制
  • 胜任力冰山模型:深入探索职业能力的多维结构