gpt4 book ai didi

string - 从 Lua 中的表达式中提取变量

转载 作者:行者123 更新时间:2023-12-04 10:10:01 32 4
gpt4 key购买 nike

我在 lua 中有包含标准元表操作的表达式 .__add,.__sub,.__mul, (+,-,*)例如 a+b*xyz-cde我正在尝试提取表中的所有自由变量。对于这个表达式,表将包含 {a,b,xyz,cde} .现在我正在尝试使用字符串操作,如拆分、替换等。这似乎有效,但我觉得它是一种丑陋的方式。由于表达式中可能涉及嵌套和括号,因此它变得并不复杂。例如,表达式 (a+b)-c*xyz*(a+(b+c))应该返回表 {a,b,c,xyz} .有没有一种简单的方法可以提取表达式中的自由变量?我什至在寻找字符串库的简单方法。

最佳答案

如果要进行字符串处理,很简单:

local V={}
local s="((a+b)-c*xyz*(a+(b+c)))"
for k in s:gmatch("%a+") do
V[k]=k
end
for k in pairs(V) do print(k) end

为了好玩,你可以让 Lua 来做这些艰苦的工作:
local V={}
do
local _ENV=setmetatable({},{__index=function (t,k) V[k]=k return 0 end})
local _=((a+b)-c*xyz*(a+(b+c)))
end
for k in pairs(V) do print(k) end

此代码在空环境中计算表达式,其中每个变量的值都为零,将表达式中的变量名称保存在表中。

关于string - 从 Lua 中的表达式中提取变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61378727/

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