如何让我的添加命令找到第一个变量和第二个变量的值,然后将它们加在一起?

vars = {}
values = {}

function open(file)
    lex(file)
end

function lex(file)
    local data = io.open(file, "r")
    for char in data:lines() do
        --Print
        if char:sub(1, 6) == "print:" then
            print(char:sub(7))
        end
        --Integer
        if char:sub(1, 2) == "V:" then
            vars [#vars + 1] = char:sub(3, 5)
            if char:sub(6, 6) == "=" then
                values [#values + 1] = char:sub(7)
            end
        end
        --Add
        if char:sub(1, 4) == "add:" then
            local varsToAdd = {}
            for varToAdd in char:sub(5):gmatch("[^,]+") do
                varsToAdd[#varsToAdd + 1] = varToAdd
            end
            local result = 0
            for _, varName in pairs(varsToAdd) do
                for i, name in pairs(vars) do
                    if name == varName then
                        result = result + tonumber(values[i])
                        break
                    end
                end
            end
            print(result)
        end
    end
end

function run()
    while true do
        print("Open a file")
        file = io.read()
        print("File name:"..file)
        print("")
        lex(file)
        print("")
    end
end

run()

基本上在 "--Add" 中,我想要它查找我们在文本文件中设置的名称进行设置的变量,然后查找另一个我们使用相同名称的变量,例如:V:Var= 12(下一行)V:Vr2=10(下一行)add:Var,Vr2,然后它将添加设置的值

点赞
用户308010
用户308010

你走在正确的方向上。我会做的更改是将V:后面的内容作为变量表中的一个键,将等号后面的内容作为值,例如:

if char:sub(1,2) == "V:" and char:sub(6, 6) == "=" then
  vars[char:sub(3,5)] = tonumber(char:sub(7))
end

然后,你只需在你的add函数中进行以下操作:

function add_vars(one, two)
  return vars[one] + vars[two]
end

至少,我认为我明白你的意图。如果不是,你需要详细说明你得到了什么以及你期望得到什么。

2015-08-17 05:07:01