【问题标题】:Array acting strange in Lua数组在 Lua 中表现异常
【发布时间】:2016-12-07 20:59:49
【问题描述】:

我是 Lua 的菜鸟。我有两个数组

第一个:

levels={
-- 1
{
{9,9,9,9,9,9,9,9,9},
{9,9,9,9,9,9,9,9,9},
{9,9,1,0,9,0,3,9,9},
{9,9,9,9,9,9,9,9,9},
{9,9,9,9,9,9,9,9,9}
}
,
-- 2
{
{9,9,9,9,9},
{9,9,9,9,9},
{9,9,1,9,9},
{9,9,0,9,9},
{9,9,0,9,9},
{9,9,0,9,9},
{9,9,0,9,9},
{9,9,3,9,9},
{9,9,9,9,9},
{9,9,9,9,9}
}
,
-- 3
{
{9,9,9,9,9,9,9,9,9,9},
{9,9,9,9,9,9,9,9,9,9},
{9,9,0,9,0,9,9,9,9,9},
{9,9,1,0,0,9,0,3,9,9},
{9,9,9,9,9,9,9,9,9,9},
{9,9,9,9,9,9,9,9,9,9}
}
}

第二个我这样声明:

playingLevel=levels[1]

问题是在我更改了playingLevel 值后,levels 数组也发生了同样的变化。我只想改变playingLevel。

【问题讨论】:

    标签: arrays lua


    【解决方案1】:

    表值是 lua 中的引用。当你这样做时

    playingLevel=levels[1]
    

    您不是将levels[1] 处的表值复制到playingLevel,而是在levels[1] 处获得对实际数据的引用,因此通过playingLevel 更改数组值与更改值基本相同好像你写了levels[1][some_index] = new_value

    如果您想要一份数据副本,您将需要一个为您创建副本的函数。 (根据您的用例,浅拷贝或深拷贝)

    所以你的代码看起来像playingLevel = copyTable(levels[1]),而不是copyTable是你自定义的函数实现,它知道如何创建目标表的副本。

    【讨论】:

    • 感谢您的回答,我使用了一个返回级别值的函数,现在可以使用了!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-12
    • 1970-01-01
    • 1970-01-01
    • 2012-05-17
    • 1970-01-01
    相关资源
    最近更新 更多