LUA 5.1 中的 eval 函数
Eval function in LUA 5.1
我想在 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
函数,它解析一个字符串,returns 一个函数可以执行该代码,前提是给定的字符串在语法上是正确的 Lua函数体。
a = 1
local f = loadstring "print(a)"
f() --> 1
请注意,使用 loadstring
创建的函数无法访问局部变量,只能访问全局变量。此外,关于在其他语言中使用 eval
的正常警告也适用于 Lua——它很可能在现实世界的系统中引起安全和稳定性问题。
对于 Lua 5.2+,请参阅 -- 它已被 load
取代,后者在 Lua 5.2+ 中更为宽松。
我想在 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
函数,它解析一个字符串,returns 一个函数可以执行该代码,前提是给定的字符串在语法上是正确的 Lua函数体。
a = 1
local f = loadstring "print(a)"
f() --> 1
请注意,使用 loadstring
创建的函数无法访问局部变量,只能访问全局变量。此外,关于在其他语言中使用 eval
的正常警告也适用于 Lua——它很可能在现实世界的系统中引起安全和稳定性问题。
对于 Lua 5.2+,请参阅 load
取代,后者在 Lua 5.2+ 中更为宽松。