向 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
我有一个包含不同食物类型的输入文件
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