Lua中向表中添加额外的值

我有一个包含不同食品类型的输入文件

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] = {} 不确定如何在此处实现
    end
file:close()

(现在有点凌乱)也可以注意到不同的食物可以具有不同的营养成分。例如,鸡蛋既含有蛋白质又含有脂肪。我需要一种方法让程序知道我要调用哪个值。例如:

> print(foods.Eggs.Fat)
2
> print(foods.Eggs.Protein
8

我相信我需要两个表,如上所示。食品表将包含营养表的表。这样,我就可以拥有多个食品类型和多个不同的营养成分。但是,我不确定如何处理表格中的表格。如何在我的程序中实现这一点?

点赞
用户1009479
用户1009479

一种直接的方法是测试 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
2017-03-29 06:01:12