Lua 从io.read()执行用户输入

Lua 从io.read()执行用户输入,lua,Lua,所以我有一个Lua代码,在一个文件中有一堆不同的函数(因为多个脚本使用它们),我希望其中一个能够根据用户输入执行其中的一些函数。因此,如果用户输入addUser()(我的函数之一),那么代码将运行addUser()。现在,我知道你可以这样做 var = io.read() if var == (some function) then (function) else if var == (some other function) then

所以我有一个Lua代码,在一个文件中有一堆不同的函数(因为多个脚本使用它们),我希望其中一个能够根据用户输入执行其中的一些函数。因此,如果用户输入addUser()(我的函数之一),那么代码将运行addUser()。现在,我知道你可以这样做

    var = io.read()
    if var == (some function) then
        (function)
    else
        if var == (some other function) then
等等


但是我想要一种更简单的方法。

让用户只输入函数名,然后执行

var = io.read()
if _G[var]~=nil then _G[var]() end
如果要允许
foo()
,请使用

var = var:gsub("[%s()]","")

刚刚读完。

谢谢。那很好用。我只是想做一个记录(因为我没有真正了解这部分内容,可能是因为我有点累了),io.read()中的插补只是函数名。因此,如果函数是
bla()
,那么输入应该是
bla
,我宁愿测试
type(_G[var])==“function”
,而不只是
nil
,如果你正在进行检查。@OlegV.Volkov,如果设置调用元方法,表和用户数据的行为可能类似于函数。是否有人知道它们是我关闭问题并将其标记为已回答的一种方式,这样就不会得到更多的答复?@OlegV.Volkov鉴于我在程序中使用了其他变量,这是一个非常好的主意。不这样做可能会导致正常变量作为函数调用。谢谢