Lua eval实现
Posted 一觉睡到小时候
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Lua eval实现相关的知识,希望对你有一定的参考价值。
因为loadstring总是在全局环境中编译它的串,所以编译出的函数访问的变量是全局变量。为了避免污染全局环境我们需要用setfenv修改函数的环境
function eval(equation, variables) if(type(equation) == "string") then local eval = loadstring("return "..equation); if(type(eval) == "function") then setfenv(eval, variables or {}); return eval(); end end end
使用:
local str = "200+lv*10+growth*0.1"
local val = eval(str, {lv = 3, growth = 100})
print(val)--240
以上是关于Lua eval实现的主要内容,如果未能解决你的问题,请参考以下文章