当调用像这样的lua函数时
PrintMe(我的变量名)
我希望能够实际打印“MyVariableName”而不是它的值(嗯,用于演示目的)。
显然我可以只传递字符串,但这需要额外的引号,我也想打印它的值。
例如,
MyVariable = 4
PrintVariable(MyVariable)
将打印“MyVariable is 4”或其他
我不想重复名称和变量,例如
PrintVariable(MyVariable, "MyVariable")
因为这是不必要的重复。
lua可以处理吗?
我现在正在做的是在引号中传递变量名并使用 loadstring 来获取值,但我想直接传递变量而不需要额外的不必要的引号(我认为 debug.getlocal 做了但它最终返回了值而不是名称)。
这是模拟示例
function printme1(var, val)
print(var.." = "..val)
end
function printme2(v)
local r
loadstring("r = "..v)() -- equivalent to r = a but must be used since v is a string representing a and not the object a
print(v.." = "..tostring(r))
end
function printme3(v)
-- unknown
end
a = 3
printme1("a", a)
printme2("a")
printme3(a)
在这种情况下,所有 3 都应该打印相同的东西。printme3 显然是最方便的。