LUA 5.1 中的 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')
点赞
用户2616735
用户2616735

Lua有 loadstring 函数,它解析一个字符串并返回执行该代码的函数,但前提是给定的字符串是一个语法上正确的Lua函数体。

a = 1
local f = loadstring "print(a)"
f() --> 1

请注意,使用loadstring创建的函数只能访问全局变量,而无法访问局部变量。此外,请注意使用eval在其他语言中也适用于Lua,它很可能会在真实世界的系统中导致安全和稳定性问题。

对于Lua 5.2+,请参见 Loadstring function replacement in latest version -- 它已被load替换,并在Lua 5.2+中更具宽容性。

2018-09-07 22:52:21