5

我想在 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')
4

1 回答 1

7

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

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

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

对于 Lua 5.2+,请参阅最新版本中的 Loadstring 函数替换- 它已被替换为load,这在 Lua 5.2+ 中更为宽松。

于 2018-09-07T22:52:21.733 回答