源码已经更新在CSDN的码库里:
git clone https://gitcode.com/funsion/CLua.git
在src文件夹下的ltablib.c 表格操作函数,此模块是C语言编写的,是Lua语言中的一个库文件,主要用来提供表格操作的功能。
该库提供了许多函数,可以用来创建、操作和管理Lua中的表格。
这些函数可以用于在Lua中执行诸如查找、插入、删除、排序等表格操作。
该库还提供了将表格转换为字符串和将字符串转换为表格的函数。
增加中文版 【连接】等 的tab_funcs列表,保留英文版【concat 】等 的tab_funcs列表。
原始的代码为:
static const luaL_Reg tab_funcs[] = {{"concat", tconcat},{"insert", tinsert},{"pack", tpack},{"unpack", tunpack},{"remove", tremove},{"move", tmove},{"sort", sort},{NULL, NULL}
};
更改成以下代码:
/** 定义用于注册到Lua的表函数的数组。* 每个元素都是一个结构体,包含函数名和对应的C函数指针。* 功能包括:连接字符串、插入元素、打包、解包、移除元素、移动元素、排序。*/
static const luaL_Reg tab_funcs[] = {{"concat", tconcat}, // 字符串连接{"连接", tconcat}, // 中文名称的字符串连接{"insert", tinsert}, // 在表中插入元素{"插入", tinsert}, // 中文名称的插入函数{"pack", tpack}, // 打包表为一个数组{"打包", tpack}, // 中文名称的打包函数{"unpack", tunpack}, // 解包数组为表{"解包", tunpack}, // 中文名称的解包函数{"remove", tremove}, // 从表中移除元素{"移除", tremove}, // 中文名称的移除函数{"move", tmove}, // 移动表中的元素{"移动", tmove}, // 中文名称的移动函数{"sort", sort}, // 对表进行排序{"排序", sort}, // 中文名称的排序函数 {NULL, NULL} // 结束标志
};
为了保证中英文 函数都可以加载,以便你可以复制英文原码来进行更改。所以保留了英文版 函数名列表,这样就能使用两种文的函数。
{"concat", tconcat}, // 字符串连接
{"连接", tconcat}, // 中文名称的字符串连接,与concat相同,但是使用中文名称
其实它们都是加载同样的库名,算是加载了2次,以Lua内部算法,应该只会加载一次。
更改完之后,同样需要重新编译Lua的源码,实现以上列出的关键词的中文化。
注意,在Window系统下编译Lua, 最好将所有Lua的源码,重新保存成ANSI格式的文件,刚下载的默认的源码会是UTF-8格式的。
这个事情说三遍,
1,不然就会出现,Window下的UTF-8源码可编译,但Shell里的中文输出会乱码。
2,要不然就是Window的ANSI源码不可编译(假如你没做以上步骤),
3,如果是用ANSI格式的源码编译的Lua.exe,对应的,你在Window下写的Lua程序也是需要保存成ANSI格式的。这样就可以在Shell里输出正确的中文显示。