1

我有一个功能,例如

function run()
    print("hi")
end

我有一个名为 message 的字符串,其中包含单词“run”:

activity = message
print(activity) --returns run

但是我无法使用字符串活动来运行该函数run()。我努力了:

func = loadstring(activity.."()")
func() -- I get an error on line 1 saying: attempt to call nil
4

2 回答 2

2

好吧,函数 run 存储在 _G 所以简单的答案:

_G[message]()
于 2015-07-03T19:22:50.540 回答
1
function run() print("hi") end
activity = "run"
loadstring(activity.."()")()

只要loadstring在与. _ run换句话说,该loadstring行等价于_G[activity]()。如果全局run是在其他环境中创建的,则评估结果为nil.

鉴于 Lua 函数是一流的值,就像字符串一样,如果可能的话,最好这样做:

function run() print("hi") end
activity = run
activity()

尽管如果这是在您从配置文件或其他内容中获取字符串值的上下文中,那将无法正常工作。

于 2015-07-02T20:53:26.357 回答