我正在为Lua项目上大学工作,但这是我第一次看到Lua,所以我不知道老师要我做的一切。
我需要阅读一个文件,我们必须说" text.txt",其数据以这种方式组织:
entry
{
--
name = "John",
--
sex = "M" ou "F",
--
age = 20,
--
}
然后我需要将这些数据放在一个数组中,以便以后可以使用它们。
有谁知道怎么做,可以帮我解决这个问题吗?
答案 0 :(得分:4)
这种格式是Lua语法的一个子集,所以你应该很容易解析它,假设你被允许使用一些库函数。
就文件的格式而言:f{ ...}
是函数调用f({...}
的语法糖。
大括号中的其他内容是注释(从--
开始)和表字段(age = 20,
)
因此,例如,上面的示例(使用" M"我们可以选择)将解析为函数调用entry({name = "John", sex = "M", age = 20})
,它是有效的Lua代码,并且可以使用标准库中的函数load(string)
或loadfile(path
。
要实际提取数据,您需要按照以下方式执行操作:
local filecontents = [the contents of your file as a string]
local entries = {}
do
-- define a function that our data-as-code will call with its table
-- its job will be to simply add the table it gets to our array.
local function entry(entrydata)
table.insert(entries, entrydata)
end
-- load our data as Lua code
local thunk = load(filecontents, nil, nil, {entry = entry})
thunk()
end