向 Lua 中的表格添加附加值

Adding additional values to tables in 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

(不要太认真。我不是营养专家)无论如何,我有以下脚本读取输入文件然后将以下内容放入 table

    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

我想我需要两个 table,如上所示。食物 table 将含有 table 的营养。这样,我就可以拥有多种具有多种不同营养成分的食物。但是,我不确定如何处理 table 中的 table。我如何在我的程序中实现它?

直接的方法是测试 food[f] 是否存在,以决定是创建一个新的 table 还是向现有的添加元素。

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