首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从文件还原表会引发错误

从文件还原表会引发错误
EN

Stack Overflow用户
提问于 2014-09-01 06:56:29
回答 1查看 37关注 0票数 1

我将一个具有混合值(没有用户数据)的表保存到一个文件中。当我试图从该文件恢复表时,我会得到“{”-Errors附近的“出乎意料的符号”。

这里有一个例子:

代码语言:javascript
运行
复制
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()

现在是关键部分:

代码语言:javascript
运行
复制
loadet_eTable = loadfile(filename) -- "unexpectet Symbol near '{'"

loadet_eTable = dofile(filename) -- "unexpectet Symbol near '{'"

其他尝试:

代码语言:javascript
运行
复制
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()之间的区别,在本例中不是问题。但我不明白这个错误是怎么发生的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-09-01 07:55:19

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

代码语言:javascript
运行
复制
{[1] = "foo", [2] = "bar"}

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

代码语言:javascript
运行
复制
return {[1] = "foo", [2] = "bar"}

现在,如果加载并成功运行,表就已经在那里了:

代码语言:javascript
运行
复制
local fun = assert(loadfile(filename))
local t = fun()
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25600352

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档