2016-10-01 3 views
-3

ので、同じように、私は、テーブルの内容に変数を設定します。Luaの奇数テーブルの動作

colorTable = {{255, 255, 255}} 
color = colorTable[1] 

私の問題は、私はそれがcolorTable

で元の値を変更する colorの値を編集するときであります初めにそう

colorTable[1][1]255に等しいが、私はこれを実行した後:

color[1] = color[1] - 10 

colorTable[1][1]はに等しいです。 何か助けていただければ幸いです。我々は唯一のコピーのいずれかの手段を示唆していない値への参照を操作している

color = colorTable[1] 

+1

これは奇妙な動作ではありません.Luaマニュアルの「基本概念」の章を少なくとも読んでいれば、その動作は期待されます。 https://www.lua.org/manual/5.3/manual.html#2.1これは2番目のページのようなものです... テーブルは常に参照によってコピーされます。 colorはcolorTable [1]と非常に同じテーブルを参照するため、color [1]はcolourTable [1] [1]を参照します。 – Piglet

+2

'color [1] = color [1] -10'は' 'color''の値を編集しません。キー番号1のメンバの値を更新するだけです。 'color'はまったく変更されません。それは同じテーブル参照です。 –

答えて

5

次の行colorTable内のテーブルへ参照(color)を作成します。

我々は、代わりに、次のことをしようとした場合:

color = {table.unpack(colorTable[1])} 

我々は255, 255, 255を含む、colorTable[1]からを展開値でそれを埋める、コンストラクタを呼び出しています。私たちは、その後、新しいテーブル、これらの値を保持し、それらに対する演算を実行するにはcolorTable中のものには影響を与えませんがあります。

print(colorTable[1][1]) 

結果:

その後
255 

color[1] = color[1] - 10 

print(colorTable[1][1]) 

結果:

255