2

この方法でテーブルから情報を取得できるように、テーブルを作成する必要があります。

table[attacker][id]

そして、私が使用する場合

print(table[attacker][id])

を出力する必要があります。

いろいろ試しましたが、良い方法が見つかりません...

こんな感じでいいのかな…

table.insert(table, attacker, [id] = value)

^これは機能しません。

誰かが私を助けることができますか?


編集

さて、私がこのように試してみると:

x = {}
function xxx()
    if not x[attacker][cid] then
        x[attacker][cid] = value
    else
        x[attacker][cid] = x[attacker][cid] + value
    end
    print(x[attacker][cid])
end

次のようなエラーが表示されます。

フィールド '?' にインデックスを付けようとしています (ゼロ値)

4

3 に答える 3

5

内部テーブルを作成するには中かっこが必要です。

table.insert(my_table, attacker, {[id]=value})

また

-- the advantage of this is that it works even if 'attacker' isn't a number
my_table[attacker] = {[id]=value}

a = 1
b = 2
c = 3
d = {}
table.insert(d, a, {[b]=c})
print(d[a][b]) -- prints '3'
于 2011-07-18T07:24:58.677 に答える
2

とはattacker? つまり、どのような値が含まれていますか? Lua テーブルは任意の Lua 値をキーとして使用できるため、内容は重要ではありません。しかし、知っておくと便利です。

いずれにせよ、それは本当に簡単です。

tableName = {}; --Note: your table CANNOT be called "table", as that table already exists as part of the Lua standard libraries.
tableName[attacker] = {}; --Create a table within the table.
tableName[attacker][id] = value; --put a value in the table within the table.

上記のステップ 2 に注意しなかったために、編集の問題が発生しました。Lua テーブルの値は、値が設定されるまで空 (nil) です。したがって、2 行目までtableName[attacker]nilです。nil 値にインデックスを付けることはできません。したがって、インデックスを作成する予定のキーが実際にテーブルであることを確認する必要があります。tableName

別の言い方をすれば、それが真実であると知らtableName[attacker][id]なければできないということです。type(tableName[attacker]) == "table"

于 2011-07-18T07:26:05.277 に答える
1

使用table = {['key']='value'}すると簡単になります。

于 2011-11-19T16:39:47.983 に答える