lua来自用户输入的变量名

时间:2016-02-10 14:56:28

标签: lua

我想在lua中制作一个“shell”。

但主要问题是,我无法从用户输入定义变量名称。 这是我目前拥有的核心。我对what[2] = what[3]行的问题与下面的评论有关。

我怎样才能更好地实现这个目标?

function lsplit(inputstr, sep)
    if sep == nil then
        sep = "%s"
    end

    local t={} ; i=1
    for str in string.gmatch(inputstr, "([^"..sep.."]+)") do
        t[i] = str
        i = i + 1
    end
    return t
end

function def(what)
    if (what[1] == "end") then
        os.exit(0)
    elseif (what[1] == "help") then
        print("Commander version 0.0")
    elseif (what[1] == "var") then
        what[2] = what[3] --Can not define
    else
        print("[ERR] not a command!")
    end
end

while(true) do
    io.write("-->")
    local usr = io.read("*l")
    local cmd = lsplit(usr, " ")
    def(cmd)
end

1 个答案:

答案 0 :(得分:2)

你用第二个覆盖你的第一个参数,而不是创建一个新的var ...尝试这个代码!应该工作但是未经测试!

local userdefinedVars = { }

function lsplit(inputstr)
    words = {}
    for word in s:gmatch("%w+") do
        table.insert(words, word)
    end
end

function def(what)
    if (what[1] == "end") then
        os.exit(0)
    elseif (what[1] == "help") then
        print("Commander version 0.0")
    elseif (what[1] == "var") then
        -- This is how you get your things done!
        userdefinedVars[what[2]] = what[3]
    else
        print("[ERR] not a command!")
    end
end

while(true) do
    io.write("--> ")
    local usr = io.read("*line")
    local cmd = lsplit(usr)
    def(cmd)
end