2

テーブルを作成して入力します。

table.insert(logTable, { [プローブ名] = "ログ テキスト" }

[key] セクションで変数を使用する正しい方法はありますか?

lua はこれを文字列ではなく整数として解釈していると思いますか?

4

2 に答える 2

3

{ [probeName] = "log text" }は、変数 probeName の値によってインデックス付けされたリテラル テーブルを作成します。したがって、その値のタイプに依存します。整数、文字列、関数、テーブルなどです。

そう:

probeName = 'abc'
for k, v in pairs({ [probeName] = "log text" }) do print(type(k), k, v) end
probeName = 123
for k, v in pairs({ [probeName] = "log text" }) do print(type(k), k, v) end
probeName = { 'another table' }
for k, v in pairs({ [probeName] = "log text" }) do print(type(k), k, v) end

出力を生成します:

string  abc log text
number  123 log text
table   table: 0xfa6050 log text

ここで、table.insert(logTable, { [probeName] = "log text" }は実際にそのリテラル テーブルを取得し、整数インデックスを持つ別のテーブル (logTable) に挿入します。したがって、logTable には整数インデックス テーブル エントリの束が含まれます。それぞれが何らかの値 (プローブ名) によってキー付けされた単一の値 (ログ テキスト) を持ちます. ipairsでそれを繰り返します. プローブ名ごとにすべてのログを 1 つのテーブルに蓄積したい場合は、logTable[ probeName] = "log text"これは実際にはもっと単純です.ペアで繰り返します.

お役に立てれば。

于 2012-09-10T17:27:32.203 に答える
1

が数値の場合probeName、Lua はそのように解釈しますが、数字を含む文字列を数値に変換しません。数値を文字列に変換する場合は、強制 ( ["" .. probeName]) または文字列の書式設定 ( [string.format("%d", probeName)]) を使用できます。

于 2012-07-06T09:50:57.107 に答える