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

时间:2019-06-27 17:31:46

标签: lua

我使用Logitech游戏软件为我的游戏制作了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])

2 个答案:

答案 0 :(得分:4)

第二种方法无效,因为array1在将其复制到var变量时不存在。

如果您想保持代码不变,即稍后再创建任意命名的变量,但要预先指定所需的链接,则必须在创建所有数组后解决分配问题。可能是这样的:

var = "array1"

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

-- this is where the var will be replaced with actual value
var = _G[var]

答案 1 :(得分:2)

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

var = 1

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

print(arrays[var][1]) -- do stuff with first item in arrays[1]

这可以稍微清理一下代码,也可以使您折叠arrays定义,使其具有该功能,因此您不必滚动它们。


另外,如果您需要将密钥作为字符串,则可以这样定义arrays

var = "array1" -- must have the quotes

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

print(arrays[var][1]) -- do stuff with first item in arrays[array1]

此方法将产生一个表,该表与另一个产生数组的方法并列。支持第一种方法的效率有所不同,这是要牢记的。