lua_rotate 是做什么的?
what does lua_rotate do?
Lua5.3引入了一个新的c api lua_rotate: https://www.lua.org/manual/5.3/manual.html#lua_rotate
Rotates the stack elements between the valid index idx and the top of
the stack. The elements are rotated n positions in the direction of
the top, for a positive n, or -n positions in the direction of the
bottom, for a negative n. The absolute value of n must not be greater
than the size of the slice being rotated.
无法理解lua_rotate的工作原理,尤其是上面的粗体字,需要帮助!
堆栈基本上是一个数组,按明确定义的顺序排列的线性元素序列。假设我们有一个字符数组如下(基于 1 的索引在元素上方):
1 2 3 4 5 6
A Q Z G N K
"Rotation" 是计算机科学中对元素序列的常见操作,很像 "shifting" 或 "sorting" 等等(这就是为什么 Lua 手册不不必费心去详细说明 "rotate" 元素的含义)。将此数组向左或向右旋转某个数字 N
意味着将所有元素 left/right 移动 N
个元素,并将元素移出数组的末尾在新的空白部分,按顺序排列。
因此,如果我们将上述数组右旋 2,您将得到以下结果:
1 2 3 4 5 6
N K A Q Z G
原来的1-4号元素变成了3-6号元素,原来的5-6号元素在新版中变成了1-2号元素。左旋转的工作方式类似。
旋转数组的一部分仅仅意味着做这个操作,而对数组的其他部分不做任何处理。因此,如果你采用上面的原始数组,并向左旋转 3 个元素,但只影响元素 3-6,你会得到以下结果:
1 2 3 4 5 6
A Q K Z G N
Lua5.3引入了一个新的c api lua_rotate: https://www.lua.org/manual/5.3/manual.html#lua_rotate
Rotates the stack elements between the valid index idx and the top of the stack. The elements are rotated n positions in the direction of the top, for a positive n, or -n positions in the direction of the bottom, for a negative n. The absolute value of n must not be greater than the size of the slice being rotated.
无法理解lua_rotate的工作原理,尤其是上面的粗体字,需要帮助!
堆栈基本上是一个数组,按明确定义的顺序排列的线性元素序列。假设我们有一个字符数组如下(基于 1 的索引在元素上方):
1 2 3 4 5 6
A Q Z G N K
"Rotation" 是计算机科学中对元素序列的常见操作,很像 "shifting" 或 "sorting" 等等(这就是为什么 Lua 手册不不必费心去详细说明 "rotate" 元素的含义)。将此数组向左或向右旋转某个数字 N
意味着将所有元素 left/right 移动 N
个元素,并将元素移出数组的末尾在新的空白部分,按顺序排列。
因此,如果我们将上述数组右旋 2,您将得到以下结果:
1 2 3 4 5 6
N K A Q Z G
原来的1-4号元素变成了3-6号元素,原来的5-6号元素在新版中变成了1-2号元素。左旋转的工作方式类似。
旋转数组的一部分仅仅意味着做这个操作,而对数组的其他部分不做任何处理。因此,如果你采用上面的原始数组,并向左旋转 3 个元素,但只影响元素 3-6,你会得到以下结果:
1 2 3 4 5 6
A Q K Z G N