に関数の引数の名前を取得します。私は実際にそれがデモの値(まあ、だ「MyVariableName」を印刷しないでできるようにしたいと思います目的)。LUA
明らかに私は文字列を渡すことができますが、それは余分な引用符を必要とし、私はその値を印刷したいと思います。
例えば、
MyVariable = 4
PrintVariable(MyVariable)
は "MYVARIABLEが4である" か、私はこれが不要であるとして
PrintVariable(MyVariable, "MyVariable")
のように名前と変数を複製する必要はしたくないものは何でも
印刷し複製。
ルアはそれを処理できますか?
変数名を引用符で渡し、値を取得するためにloadstringを使用していますが、余分な不要な引用符を使わずに変数を直接渡すだけです(これはdebug.getlocalとは思ったが終了する名前の代わりに値を返す)。ここで
すべて3は同じことを印刷する必要があります。この場合
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)
モック例です。明らかにprintme3が最も便利です。
loadstring(私の例を参照してください)を呼び出さなくても実行できますが、引用符なしでは実行できません。強くない。 APIには、必要なものを教えてくれるものは何もありません。呼び出し元のスコープ内で渡された値を持つローカルを探すことはできますが、それは信頼できません。とにかくそれを書く方法を教えてくれるでしょう(私の答えを見てください)。 – Mud