2016-08-02 4 views
1

私はLuaのnoobです。私が持っている二つの配列Luaで変な動作をするアレイ

まず1:

levels={ 
 
-- 1 
 
{ 
 
{9,9,9,9,9,9,9,9,9}, 
 
{9,9,9,9,9,9,9,9,9}, 
 
{9,9,1,0,9,0,3,9,9}, 
 
{9,9,9,9,9,9,9,9,9}, 
 
{9,9,9,9,9,9,9,9,9} 
 
} 
 
, 
 
-- 2 
 
{ 
 
{9,9,9,9,9}, 
 
{9,9,9,9,9}, 
 
{9,9,1,9,9}, 
 
{9,9,0,9,9}, 
 
{9,9,0,9,9}, 
 
{9,9,0,9,9}, 
 
{9,9,0,9,9}, 
 
{9,9,3,9,9}, 
 
{9,9,9,9,9}, 
 
{9,9,9,9,9} 
 
} 
 
, 
 
-- 3 
 
{ 
 
{9,9,9,9,9,9,9,9,9,9}, 
 
{9,9,9,9,9,9,9,9,9,9}, 
 
{9,9,0,9,0,9,9,9,9,9}, 
 
{9,9,1,0,0,9,0,3,9,9}, 
 
{9,9,9,9,9,9,9,9,9,9}, 
 
{9,9,9,9,9,9,9,9,9,9} 
 
} 
 
}
そして第二には、私はこのように宣言:

playingLevel=levels[1]

probl私はplayingLevelの値を変更すると、レベルの配列も同じように変わります。私はplayingLevelだけを変更したい。

答えて

2

表の値はluaでの参照値です。あなたがplayingLevellevels[1]でのテーブル値をコピーしていない

playingLevel=levels[1] 

を行うときに、あなたがそうplayingLevelて配列値を変更し、levels[1]で実際のデータへの参照を取得していることは、本質的価値としての変更と同じですもしあなたがlevels[1][some_index] = new_valueと書いたら。

データのコピーが必要な場合は、コピーを作成する関数が必要です。

このように、copyTableは、ターゲット表のコピーの作成方法を知っている関数のカスタム実装ではなく、playingLevel = copyTable(levels[1])のようになります。

+1

答えをいただきありがとうございます。私は、レベルの値を返す関数を使用して、今すぐ動作します! –

+0

素晴らしい、私はあなたの問題を解決してうれしいよ:) –

関連する問題