我想在Lua中使用评估函数,
无法使其工作。找不到相关文档,Lua甚至具有eval函数吗?
尝试的代码:
a=1
print(a)
eval('print(a)')
eval 'print(a)'
Run Code Online (Sandbox Code Playgroud)
Lua官方演示口译员:https : //www.lua.org/cgi-bin/demo
输出:
1
input:3: attempt to call a nil value (global 'eval')
Run Code Online (Sandbox Code Playgroud)
Lua具有loadstring函数,该函数可解析字符串并返回执行该代码的函数,前提是给定的字符串是语法正确的Lua函数体。
a = 1
local f = loadstring "print(a)"
f() --> 1
Run Code Online (Sandbox Code Playgroud)
请注意,使用的函数loadstring将无法访问局部变量,而只能访问全局变量。同样,有关使用eval其他语言的常规警告也适用于Lua-它很可能在现实世界的系统中引起安全性和稳定性问题。
对于Lua 5.2+,请参阅最新版本的Loadstring函数替换 -已由替换load,这在Lua 5.2+中更为宽松。