LUA 5.1中的评估功能

时间:2018-09-07 22:46:49

标签: lua eval lua-5.1

我想在Lua中使用评估函数,

无法使其正常工作。找不到文档,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')

1 个答案:

答案 0 :(得分:4)

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+中更宽容。