我使用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])
答案 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]
此方法将产生一个表,该表与另一个产生数组的方法并列。支持第一种方法的效率有所不同,这是要牢记的。