如何将字符串转换为变量调用并为对应变量赋值?
通过字符串操作变量(Lua)
针对全局变量,你之前听说的
_G用法是正确的——Lua的全局变量本质上是全局环境表_G中的键值对,直接用字符串作为键就能访问或修改对应的变量:local string = "variable" -- 给全局变量variable赋值新值 _G[string] = "这是新值" -- 验证结果 print(variable) -- 输出:这是新值如果要操作局部变量,Lua没有原生的直接实现方式,只能借助
debug库(仅推荐用于调试场景,生产环境不建议使用,会破坏封装性且影响性能):local variable = "旧值" local var_name = "variable" -- 遍历当前栈帧的局部变量,找到目标后修改 for i = 1, math.huge do local name, val = debug.getlocal(1, i) if not name then break end if name == var_name then debug.setlocal(1, i, "新的局部变量值") break end end print(variable) -- 输出:新的局部变量值
注意:如果之前测试_G没成功,大概率是你要操作的变量是局部变量(不在_G表中),而非全局变量,调整变量作用域即可解决。
内容的提问来源于stack exchange,提问作者Zelta
相关产品推荐
相关产品推荐

