内のローカル変数を作成し、私は別の変数(この例ではvarnameという)に格納された変数名(例えば、「X」)を持っている場合、私はこれは複雑な方法であるLuaの
_G[varname]=42
を介してグローバル変数を作成することができますつまり、
x=42
ローカル変数についても同じことをしたいと思います。出来ますか?
内のローカル変数を作成し、私は別の変数(この例ではvarnameという)に格納された変数名(例えば、「X」)を持っている場合、私はこれは複雑な方法であるLuaの
_G[varname]=42
を介してグローバル変数を作成することができますつまり、
x=42
ローカル変数についても同じことをしたいと思います。出来ますか?
ローカル変数を変更するのに実際に文字列を使用する必要がある場合は、ローカルテーブルを使用することをお勧めします。
local localVars = {}
function setValue(varname, value)
localVars[varname] = value
end
function getValue(varname)
return localVars[varname]
end
このようにローカル変数を実際に作成したり破棄したりすることはありませんが、かなり近づいています。
いいえ。ローカル変数はテーブルに保存されていないか、名前を関連付けた構造体に格納されていないためです。 luaコードがバイトコードにコンパイルされると、ローカル変数名はluaスタックの数値オフセットに変換されます。
ローカル変数_per function_が必要な場合は、各関数に独自の 'local localVars = {}'を与える必要があります。現在の方法では、ローカル変数はすべての関数で共有され、関数呼び出しの間に存続します。また、今のように、 'localVars ['a']'を使用する関数を呼び出し、その関数が 'localVars ['a']'を使用する関数を呼び出すと、2番目の関数は最初の値を壊します。 –
絶対に!まあまあ。 – kikito