2

次の方法でローカル動的変数名を設定しています _local["cracks"..brick.index] = ...

たとえばremoveSelfなどの変数にアクセスするにはどうすればよいですか? 私が試したこと _local["cracks"..brick.index]:removeSelf()

4

2 に答える 2

5
_local["cracks"..brick.index]:removeSelf()
  1. _local値を取得するためのテーブルとしてのインデックス"cracks"..brick.index、それを呼び出すt
  2. t別の値を取得するためのテーブルとしてのインデックス"removeSelf"、それを呼び出すm
  3. mのメソッドとして呼び出しますt。これは呼び出しに似ていますm(t)

それが機能するには、次のようなことをしなければなりませんでした:

_local["cracks"..brick.index] = 
{ 
    removeSelf = function(self)
        --do something with self, 
        --which refers to the table that removeSelf is a member of (the {})
        return --something if wanted 
    end 
}

通常、メソッドはパラメーターfunction t:m() endを暗黙的に宣言する構文で定義されselfます。しかし、実際のt変数がなければそれを行うことはできません。この場合はありません。

または、明示的に

local tabl = {}
function tabl:removeSelf()
    --do something with self, 
    --which refers to the table that removeSelf is a member of (tabl)
    return --something if wanted 
end 

_local["cracks"..brick.index] = tabl

これで質問の内容が説明されない場合は、質問にコードを追加してください。

于 2013-06-28T23:32:15.693 に答える
2

いいえ、あなたは間違っています。これを行う方法は次のとおりです。

local myTable = {}
myTable[brick.index] = image

その後、アクセスできます:

myTable[brick.index]:removeSelf() 
于 2013-06-28T22:19:36.983 に答える