当前位置 : 主页 > 网络编程 > lua >

数组 – Lua:在数组中“拖动”元素序列

来源:互联网 收集:自由互联 发布时间:2021-06-23
我正在尝试创建一个函数,将一系列连续元素“拖动”到数组中的新位置,约束到数组的当前大小.其他项目应围绕“拖动”项目摇摆. 例如,如果我的数组有7个元素,我想拖动中间三个…
我正在尝试创建一个函数,将一系列连续元素“拖动”到数组中的新位置,约束到数组的当前大小.其他项目应围绕“拖动”项目摇摆.

例如,如果我的数组有7个元素,我想拖动中间三个…

1, 2, 3, 4, 5, 6, 7  <-- keys
a, b, C, D, E, f, g  <-- values

大写字母是我想要“拖动”的字符.如果我拖动到数组的开头(拖动到1),数组将如下所示:

1, 2, 3, 4, 5, 6, 7  <-- keys
C, D, E, a, b, f, g  <-- values

如果我拖动到位置5(或上面 – 不能拖动到当前数组大小之外),数组将如下所示:

1, 2, 3, 4, 5, 6, 7  <-- keys
a, b, f, g, C, D, E  <-- values

知道如何使用Lua以非狡猾的方式实现这一目标吗?

这是在Lua 5.3中使用 table.move的版本.

它将要拖动的组复制到另一个表中,并向上或向下移动值以为该组腾出空间.

function drag(t, src, len, dest)
    local copy = table.move(t, src, src + len - 1, 1, {})

    if src >= dest then
        table.move(t, dest, src - 1, dest + len)
    else 
        table.move(t, src + len, dest + len - 1, src)
    end

    table.move(copy, 1, len, dest, t)
 end
网友评论