我想在 Lua 中使用 eval 函数,
不能让它工作。没有找到关于它的文档,Lua 甚至有 eval 函数吗?
代码尝试:
a=1
print(a)
eval('print(a)')
eval 'print(a)'
官方 Lua 演示解释器:https ://www.lua.org/cgi-bin/demo
输出 :
1
input:3: attempt to call a nil value (global 'eval')
我想在 Lua 中使用 eval 函数,
不能让它工作。没有找到关于它的文档,Lua 甚至有 eval 函数吗?
代码尝试:
a=1
print(a)
eval('print(a)')
eval 'print(a)'
官方 Lua 演示解释器:https ://www.lua.org/cgi-bin/demo
输出 :
1
input:3: attempt to call a nil value (global 'eval')
Lua 有一个loadstring
函数,它解析一个字符串并返回一个执行该代码的函数,只要给定的字符串是一个语法正确的 Lua 函数体。
a = 1
local f = loadstring "print(a)"
f() --> 1
请注意,使用的函数loadstring
无法访问局部变量,只能访问全局变量。此外,关于在其他语言中使用的正常警告也eval
适用于 Lua——它很可能会导致现实世界系统中的安全性和稳定性问题。
对于 Lua 5.2+,请参阅最新版本中的 Loadstring 函数替换- 它已被替换为load
,这在 Lua 5.2+ 中更为宽松。