【发布时间】:2020-10-26 21:47:17
【问题描述】:
reference manual 对 Lua 5.3 中引入的 table.move 函数有这样的说法:
table.move (a1, f, e, t [,a2])将元素从表
a1移动到表a2,相当于执行以下多重赋值:a2[t],··· = a1[f],···,a1[e]。a2的默认值为a1。目标范围可以与源范围重叠。要移动的元素数量必须适合 Lua 整数。
这个描述还有很多不足之处。我希望得到一个比参考手册更详细的功能的一般、规范解释。 (奇怪的是,我在网上的任何地方都找不到这样的解释,也许是因为这个功能相当新。)
在阅读参考手册的解释几次后我仍然感到困惑:
- 当它说“移动”时,这意味着项目正在从其原始位置移走,对吗?被移除项目上方的项目索引是否向下移动以填补空白?如果是这样,并且我们在同一张桌子内移动,
t是否会在任何东西开始移动之前指向原始位置? - 索引字母
f、e、t的选择有什么意义吗? - 在我所知道的任何其他语言中都没有类似的功能。我可以如何使用它的一个例子是什么?由于它是仅有的七个表函数之一,我认为它非常有用。
【问题讨论】:
-
a2[t],··· = a1[f],···,a1[e]是一个非常清晰的描述。换句话说,正在复制一系列连续的数组索引。 “移动”这个词可能具有误导性。但是,当您在同一个表中将 100 个元素从 3..102 复制到 4..103 时,它们是被移动而不是被复制。未修改索引 3 处的元素。 -
我的猜测:
ffrom、eend、tto 是表索引。
标签: lua