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

这个文件被加载到一个表中。然后我可以运行命令来检查项的值。例如>print(foods.Eggs.Fat) 2

我需要做的是能够搜索表中是否已经有了一个项。我有一个检查表是否有一个值的函数,但它似乎不起作用。我的代码如下:

  file = io.open("food.txt")

    function has_value (tab, val)
    for index, value in ipairs(tab) do
        if value == val then
            return true
        else
            return false
        end
    end
end

    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
    file:close()

    if has_value(foods, "Eggs") then
        print("是的")
    else
        print("不是")
    end

即使表格中包含该项,我仍然会从函数中得到错误的返回值。在上面的示例中,即使我知道Eggs在表中,if has_value(names, "Eggs") then也会打印"不是"。我的错误在哪里?

点赞
用户7170955
用户7170955

在这种情况下,您应该寻找,而不是

function has_key(table, key)
    return table[key]~=nil
end

这个函数应该能够满足您的需求,并且比搜索值要快得多!

2017-03-30 04:13:09