【问题标题】:How can I define this variable before arrays?如何在数组之前定义此变量?
【发布时间】:2019-06-28 22:55:59
【问题描述】:

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

【问题讨论】:

    标签: lua


    【解决方案1】:

    第二种方式不起作用,因为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]
    

    【讨论】:

    • 它有效,谢谢弗拉德。但是是否可以避免 var 的双引号?像这样:var = array1
    • 没有。构造var = array1 意味着将变量array1 的值复制到变量var 中。如果array1 还不存在,那么它将读取nil,所以不会做任何有用的事情。
    【解决方案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]
    

    这可以稍微清理一下代码,还可以让您在具有该功能的 ide 中折叠 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]
    

    此方法将生成一个表,与其他方法相对的是生成一个数组。有利于第一种方法的效率有所不同,这是需要牢记的。

    【讨论】:

    • > it would also allow you to collapse the arrays definition 不在罗技软件的内置编辑器中;)
    • @DarkWiiPlayer 有效积分!修改了答案的那部分。
    • var 必须是整数,所以?在我的脚本中,我更喜欢使用字符串来选择角色的配置
    • @Era 你可以嵌套数组并给他们密钥我已经将该选项添加到我的答案中。
    猜你喜欢
    • 2014-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多