如何在数组之前定义变量?

我正在为我的游戏使用 Logitech Gaming Software 编写 LUA 脚本,但我遇到了一个问题。

我只想在数组之前定义变量“var”。

我有超过 50 个数组,所以每次想要更改这个变量时都需要向下滚动,这让我感到很疲惫。

我该怎么做?

以下是我的脚本的简化版本。

它可以工作 :

array1 = { "TRUE", 5, 4, 5, 5 }
array2 = { "FALSE", 6, 3, 8, 5 }
array3 = { "FALSE", 3, 2, 5, 3 }

var = array1

OutputLogMessage(var[1])

它无法工作:

var = array1

array1 = { "TRUE", 5, 4, 5, 5 }
array2 = { "FALSE", 6, 3, 8, 5 }
array3 = { "FALSE", 3, 2, 5, 3 }

OutputLogMessage(var[1])
点赞
用户5675002
用户5675002

第二种方法不起作用,因为在将array1复制到var变量时,此时array1不存在。

如果您想保持现有代码不变,即稍后创建任意命名的变量,但在前面指定所需的链接,则必须在创建所有数组后解决赋值问题。它可以像这样进行:

var = "array1"

array1 = {blah-blah1}
array2 = {blah-blah2}
array2 = {blah-blah3}

-- 这里将使用实际值替换变量
var = _G[var]
2019-06-27 17:39:56
用户7396148
用户7396148

你可以将数组嵌套到另一个数组中。

var = 1

arrays = {
    { "TRUE", 5, 4, 5, 5 },    --数组1
    { "FALSE", 6, 3, 8, 5 },   --数组2
    { "FALSE", 3, 2, 5, 3 },   --数组3
}

print(arrays[var][1]) --使用arrays [1]中的第一个项

这可以简化代码,还允许你折叠在具有此功能的 ide 中的“数组”定义,这样你就不必滚动它们了。


此外,如果你需要键是一个字符串,你可以这样定义“数组”:

var = "array1" --必须有引号

arrays = {
    array1 = { "TRUE", 5, 4, 5, 5 },
    array2 = { "FALSE", 6, 3, 8, 5 },
    array3 = { "FALSE", 3, 2, 5, 3 },
}

print(arrays[var][1]) --与arrays[array1]中的第一个项一起做一些事情

这种方法将产生一个表,而不是另一种方法产生的数组。在效率上有所不同,有利于第一种方法,这是需要记住的。

2019-06-27 17:53:27