Lua 五三

lua-users home
wiki

Lua 5.3 将很快成为继 5.2 之后 Lua 的最新主要版本。本页包含一些关于 5.3 的笔记。有关 Lua 5.3 的官方信息和下载,请访问 https://lua.ac.cn/manual/5.3

此处提供 5.2 和 5.3 之间差异的摘要

公告

wiki 上还描述了受影响的区域,包括

本页可能涉及的其他领域:LuaJIT?以及 LuaImplementations?IDE 支持?

table.move

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_getntmove。)

lua_rotate

void lua_rotate (lua_State *L, int idx, int n); https://lua.ac.cn/manual/5.3/manual.html#lua_rotate

讨论

观察 lua.hlua_insertlua_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

自述文件说“arg 表对所有代码可用”。

讨论

“userdata 可以拥有任何 Lua 值作为 uservalue”

讨论


最近更改 · 偏好设置
编辑 · 历史记录
最后编辑于 2018 年 3 月 1 日上午 9:09 GMT (差异)