我有一个包含不同食物类型的输入文件
Corn Fiber 17
Beans Protein 12
Milk Protien 15
Butter Fat 201
Eggs Fat 2
Bread Fiber 12
Eggs Cholesterol 4
Eggs Protein 8
Milk Fat 5
(不要太认真地对待这些。我不是营养专家)无论如何,我有以下脚本读取输入文件,然后将以下内容放入表中
file = io.open("food.txt")
foods = {}
nutritions = {}
for line in file:lines()
do
local f, n, v = line:match("(%a+) (%a+) (%d+)")
nutritions[n] = {value = v}
--foods[f] = {} Not sure how to implement here
end
file:close()
(现在有点乱) 另请注意,不同的食物可以有不同的营养素。例如,鸡蛋同时含有蛋白质和脂肪。我需要一种方法来让程序知道我想要调用哪个值。例如:
> print(foods.Eggs.Fat)
2
> print(foods.Eggs.Protein
8
我相信我需要两张桌子,如上图所示。食物表将包含营养表。通过这种方式,我可以拥有多种具有多种不同营养成分的食物类型。但是,我不知道如何处理表格表。我怎样才能在我的程序中实现这个?
答案 0 :(得分:2)
直接的方法是测试food[f]
是否存在,以决定是创建新表还是向现有表添加元素。
foods = {}
for line in file:lines() do
local f, n, v = line:match("(%a+) (%a+) (%d+)")
if foods[f] then
foods[f][n] = v
else
foods[f] = {[n] = v}
end
end