从文件恢复表格时出现错误。

我正在将一个混合值的表格(没有用户数据)保存到文件中。当我试图从那个文件中恢复表格时,我会得到“unexpectet symbol near '{'”错误。

下面是一个示例:

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 -- 不会引发错误
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  -- 不会引发错误
err = nil
loadet_eTable = loadstring(loadet_file_value) -- "unexpectet Symbol near '{'"

我知道loadfile()和dofile()之间的区别,但在这种情况下这不是问题。但我不明白为什么会出现这个错误。

点赞
用户1009479
用户1009479

你只是把表格的内容写入文件中,这里举个更简单的例子:

{[1] = "foo", [2] = "bar"}

这不是有效的 Lua 代码,你可以在表格构造器前加上 return 来返回这个表格,像这样:

return {[1] = "foo", [2] = "bar"}

现在如果成功加载和运行,这个表格已经存在了:

local fun = assert(loadfile(filename))
local t = fun()
2014-09-01 07:55:19