gpt4 book ai didi

lua - 在数学环境中评估 Lua 中的表达式

转载 作者:行者123 更新时间:2023-12-04 00:20:07 25 4
gpt4 key购买 nike

我想写一个函数来评估数学环境中的数学表达式。这是我的尝试。

function mathEval(...)
local _ENV = math
return ...
end

print(mathEval(sin(0)))

这给出了 sin 为 nil 的错误,尽管环境设置为数学。我知道我可以通过将全局环境设置为数学来做到这一点。但我不想污染全局空间。我的要求很简单。我想编写一个函数来评估本地数学环境中的数学表达式。是否可以在不污染全局空间的情况下在 lua 中轻松完成?

最佳答案

您可以将整个表达式变成一个字符串,然后使用 load 来执行该表达式。

function mathEval(exp)
return load("return " .. exp, exp, "t", math)()
end

print(mathEval("sin(0)"))
print(mathEval("sin(0)+cos(1)+2^2"))

lua 5.3 中的输出

0.0

4.5403023058681

如果您使用 5.1

,则需要使用 loadstring

load函数引用:

https://www.lua.org/manual/5.2/manual.html#pdf-load

关于lua - 在数学环境中评估 Lua 中的表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61368698/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com