【问题标题】:Executing user input from io.read()从 io.read() 执行用户输入
【发布时间】:2017-03-23 22:49:02
【问题描述】:

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

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

等等

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

【问题讨论】:

    标签: lua


    【解决方案1】:

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

    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 鉴于我在程序中使用了其他变量,这是一个非常好的主意。不这样做可能会导致将普通变量作为函数调用。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多