我創建並填充表:LUA變量如表鍵
table.insert(logTable,{[probeName] =「日誌文本」}
是正確的方式在使用變量[關鍵]部分?
我想Lua是interprating這是一個整數,而不是字符串?
我創建並填充表:LUA變量如表鍵
table.insert(logTable,{[probeName] =「日誌文本」}
是正確的方式在使用變量[關鍵]部分?
我想Lua是interprating這是一個整數,而不是字符串?
如果probeName
是一個數字,Lua的將它解釋爲這樣的,但它不會轉換包含數字的字符串到一個數字。如果它是一個數字,並且您想將其轉換爲字符串,則可以使用強制(["" .. probeName]
)或字符串格式([string.format("%d", probeName)]
)。
的答案您正在查找的函數恰當地命名爲'tostring'。 – 2012-07-06 15:56:56
{[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迭代它。相反,如果您希望通過探針名稱將所有日誌累積到一個表格中,則需要執行如下操作:logTable [probeName] =「log text」這實際上更簡單。用對迭代它。
希望這會有所幫助。
另請參閱http://stackoverflow.com/questions/11359227/lua-table-addressing/11360021#11360021 – 2012-07-06 10:01:39