从文件还原表会引发错误

时间:2014-09-01 06:56:30

标签: string lua load lua-table

我将具有混合值(无用户数据)的表保存到文件中。 当我尝试从该文件恢复表格时,我会在''"" -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()之间的区别,在这种情况下它不是问题。但我不明白,这个错误是怎么发生的。

1 个答案:

答案 0 :(得分:2)

您只将表格的内容写入文件。作为一个更简单的例子,

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

是无效的Lua代码,您可以在表构造函数前添加return以返回如下表:

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

现在,如果它已加载并成功运行,则该表已存在:

local fun = assert(loadfile(filename))
local t = fun()