我将具有混合值(无用户数据)的表保存到文件中。 当我尝试从该文件恢复表格时,我会在''"" -Errors附近找到" unexpectet符号。
以下是一个例子:
eTable = {}
eTable.[1] = { [1] = 2, [2] = 3}
eTable.[2] = { [1] = 2, [2] = 9}
eTable.x = { [1] = 12, [31] = "aString", ["wildcard"] = function()something end}
local eTable_as_String = table.tostring(eTable)
local file_hanlder,err = io.open(filename,"w+")
if err then print(err) end -- doesn't raise errors
err = nil
file_hanlder:write(eTable_as_String)
file_handler:flush()
现在关键部分:
loadet_eTable = loadfile(filename) -- "unexpectet Symbol near '{'"
loadet_eTable = dofile(filename) -- "unexpectet Symbol near '{'"
其他尝试:
loadet_file_value,err = file_handler:read()
if err then print(err) end -- doesn't raise errors
err = nil
loadet_eTable = loadstring(loadet_file_value) -- "unexpectet Symbol near '{'"
我知道loadfile()和dofile()之间的区别,在这种情况下它不是问题。但我不明白,这个错误是怎么发生的。
答案 0 :(得分:2)
您只将表格的内容写入文件。作为一个更简单的例子,
{[1] = "foo", [2] = "bar"}
是无效的Lua代码,您可以在表构造函数前添加return
以返回如下表:
return {[1] = "foo", [2] = "bar"}
现在,如果它已加载并成功运行,则该表已存在:
local fun = assert(loadfile(filename))
local t = fun()