LUA 5.1中的Eval函数

问题描述 投票:2回答: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 eval lua-5.1
1个回答
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+中更为宽松。

© www.soinside.com 2019 - 2024. All rights reserved.