Lua - 将字符串与数组中的项匹配?

时间:2014-10-27 03:04:59

标签: arrays string lua pattern-matching

我是Lua的新手,我想尝试显示一个数组中的项目,但它就像一个数组中的数组。

这是我的清单:

local itemlist = {
    { name="blue car", price=5000 },
    { name="red car", price=10000 },
    { name="green car", price=2000 }
}

所以如果我输入文字"红车"我希望它输出这样的东西:

The red car costs 10000 dollars.

我怎么能在lua中这样做? 到目前为止,我只找到了一些字符串匹配示例,我可以看到数组是否包含一个项目,但我想要的是输出和价格。我怎么得到这个价格?我不知道从哪里开始。

2 个答案:

答案 0 :(得分:2)

您应该阅读手册中包含序列的表格和表格。然后,您可以决定是使用pairs还是ipairs来迭代表格。

另一种方法,如果名称将是唯一的,将改变结构:

local itemlist = {
    ["blue car"] = { price=5000 },
    ["red car"] = { price=10000 },
    ["green car"] = { price=2000 }
}

-- or even 

local prices = {
    ["blue car"] = 5000,
    ["red car"] = 10000,
    ["green car"] = 2000
}

print(itemlist["red car"].price);
print(prices["red car"]);

答案 1 :(得分:1)

在您的简单示例中,您不需要模式匹配。

local str = "red car"
for _, v in ipairs(itemlist) do
    if v.name == str then
        print("The " .. v.name .. " costs " .. tostring(v.price) .. " dollars.")
    end
end