的函數參數的名稱當調用像一個Lua函數獲取LUA
PrintMe(MyVariableName)
我想能夠實際打印「MyVariableName」,而不是它的價值(當然,對於演示目的)。
很明顯,我可以傳遞字符串,但需要額外的引號,我也想打印它的值。
例如,
MyVariable = 4
PrintVariable(MyVariable)
將打印 「MyVariable的是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顯然是最方便的。
你可以在不調用loadstring的情況下完成它(請參閱我的示例),但不能在沒有引號的情況下執行此操作。不健壯。 API中沒有任何內容會告訴你你需要什麼。你*可以*在調用者的範圍內尋找一個具有通過它的值的本地,但那將是不可靠的。無論如何,我會告訴你怎麼寫(看我的答案)。 – Mud