我创建并填充一个表:
table.insert(logTable, { [probeName] = "日志文本" }
这是在 [key] 部分中使用变量的正确方法吗?
我在想 lua 将其解释为整数而不是字符串?
我创建并填充一个表:
table.insert(logTable, { [probeName] = "日志文本" }
这是在 [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 将包含一堆整数索引的表条目,每个都有一个值(日志文本),由某个值(probeName)作为键。使用ipairs对其进行迭代。如果您希望通过探针名称将所有日志累积到一个表中,则需要执行类似logTable [ probeName] = "log text"这实际上更简单。用pairs遍历它。
希望这可以帮助。
如果probeName
是一个数字,Lua 会这样解释它,但它不会将包含数字的字符串转换为数字。如果它是一个数字并且您想将其转换为字符串,您可以使用强制转换 ( ["" .. probeName]
) 或字符串格式化 ( [string.format("%d", probeName)]
)。