Lua 五三 |
|
此处提供 5.2 和 5.3 之间差异的摘要
公告
wiki 上还描述了受影响的区域,包括
string.dump
https://lua.ac.cn/work/doc/manual.html#pdf-string.dump strip
可用于 LuaCompilerInLua,之前在 LuaJit 中。
本页可能涉及的其他领域:LuaJIT?以及 LuaImplementations?IDE 支持?
table.move (a1, f, e, t [,a2])
https://lua.ac.cn/work/doc/manual.html#pdf-table.move
此新函数复制了一系列值。
从设计上讲,此函数与 C memmove
[1] 函数有些相似,但并非基于它实现。源范围和目标范围可以重叠(与 C memcpy
不同)。
table.move
还提供了一种方便的方法来清除数组(全部或部分)。
table.move(a, #a+1, 2*#a, 1)
table.move
在 5.3.0(alpha) 版本之前被称为 table.copy
。
table.move
在内部使用 lua_geti
/lua_seti
[2][3] 实现,或者(如果 t
缺少 __index
/__newindex
元方法)使用 lua_rawgeti
/lua_rawseti
[4]/[5] 实现。(参见 ltablib.c
中的 checktab
/aux_getn
和 tmove
。)
void lua_rotate (lua_State *L, int idx, int n);
https://lua.ac.cn/manual/5.3/manual.html#lua_rotate
讨论
观察 lua.h
中 lua_insert
和 lua_remove
的定义,它们基于 lua_rotate
。
#define lua_insert(L,idx) lua_rotate(L, (idx), 1) #define lua_remove(L,idx) (lua_rotate(L, (idx), -1), lua_pop(L, 1))
自述文件说“arg 表对所有代码可用”。
讨论
讨论