【问题标题】:How to get a variable from a table index如何从表索引中获取变量
【发布时间】:2022-01-10 16:16:50
【问题描述】:

如何将表索引与相应的变量进行比较?

local var1 = 0
local var2 = 5
local var3 = 10

local MyTable = {math.random(0, 10), math.random(0, 10), math.random(0, 10)}

for i, v in ipairs(MyTable) do
    if v = var..i then    --[[ trying to test if the indexed value is equal to
                         the corresponding variable with v = var..i doesnt work ]]
        print("Index "..i.." is equal to variable "..i)
    end
end

从技术上讲,这可以通过 if i == var(x) then.. elseif... 完成,但对于会变得凌乱的较大表格,我希望能够有一种更简单的方法来做到这一点。有任何想法吗?谢谢。

【问题讨论】:

  • 你到底想做什么?为什么要将变量与存储在表中的值进行比较?您是否要查找匹配值的索引?这感觉就像您在问如何做一些可能更容易解决的事情。

标签: lua roblox


【解决方案1】:

只需将原始变量保存在表格中即可:

local var = {0, 5, 10}

local MyTable = {}
for i = 1, 3 do
  MyTable[i] = math.random(0, 10)
end

for i, v in ipairs(MyTable) do
  if v == var[i] then
    print("Index "..i.." is equal to variable "..i)
  end
end

【讨论】:

    【解决方案2】:

    这可能会以另一种方式解决,但如果您想将变量与表值进行比较,请使用:

    var1 = 0
    var2 = 5
    var3 = 10
    
    local MyTable = {math.random(0,10),math.random(0,10),math.random(0,10)}
    
    function GetVariableByValue(val)
        if val == nil then return false end
        for variableName, value in pairs (_G) do
            if val == value then return variableName end
        end
        return false
    end
    
    for key , value in ipairs(MyTable) do
        local variableName = GetVariableByValue(value)
        if variableName then
            print("Value : "..value.." is equal to variable : "..variableName);
        else
            print("Value : "..value.." isn't equal to any variable.");
        end
    end
    

    如果 MyTable 与变量值不匹配,您将收到以下消息: '值:数字不等于任何变量。'

    【讨论】:

      猜你喜欢
      • 2013-07-20
      • 1970-01-01
      • 1970-01-01
      • 2015-07-22
      • 1970-01-01
      • 2022-01-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多