テーブルを作成して入力します。
table.insert(logTable, { [プローブ名] = "ログ テキスト" }
[key] セクションで変数を使用する正しい方法はありますか?
lua はこれを文字列ではなく整数として解釈していると思いますか?
テーブルを作成して入力します。
table.insert(logTable, { [プローブ名] = "ログ テキスト" }
[key] セクションで変数を使用する正しい方法はありますか?
lua はこれを文字列ではなく整数として解釈していると思いますか?
{ [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"これは実際にはもっと単純です.ペアで繰り返します.
お役に立てれば。
が数値の場合probeName
、Lua はそのように解釈しますが、数字を含む文字列を数値に変換しません。数値を文字列に変換する場合は、強制 ( ["" .. probeName]
) または文字列の書式設定 ( [string.format("%d", probeName)]
) を使用できます。