如何通过参数动态访问profile.Data中的不同数据字段?
动态访问Lua Table字段的正确方法
你不需要把字符串转成可执行代码,Lua本身就支持用**方括号[]**动态访问table的字段,这是最安全高效的方式,完全不用搞字符串拼接那套。
正确的实现代码如下:
local expType = tostring(type1) local expTypeStat = expType:gsub("Exp", "") -- 用方括号传入变量,动态获取对应字段的值 local currentExp = profile.Data[expType] local currentStat = profile.Data[expTypeStat] if currentExp <= math.round(100 * (currentStat / 2)) then -- 这里编写你的业务逻辑 end
为什么你之前的方法失效?
- 你拼接出来的
profileDataExpType只是普通字符串(比如"profile.Data.StrengthExp"),Lua只会把它当成文本,不会自动解析成代码去访问table。 - 用
profile.Data.expType时,Lua会把expType当作字面量字段名,也就是去查找profile.Data["expType"]这个不存在的字段,而非用变量expType的值去匹配对应字段。
可选的容错处理
如果担心传入的字段名不存在导致报错,可以先做存在性校验:
if not profile.Data[expType] or not profile.Data[expTypeStat] then -- 字段不存在时的处理逻辑,比如直接返回或打印提示 return end
内容的提问来源于stack exchange,提问作者Lukas Raby
相关产品推荐
相关产品推荐

