Lua - 在数组中匹配字符串?

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

这是我的列表:

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

如果我输入文本"red car",我希望输出类似这样的内容:

The red car costs 10000 dollars.

在 Lua 中该如何做到呢?我只找到一些字符串匹配的示例,但我想输出一个包含价格的内容。那么如何得到价格呢?我甚至不知道从哪里开始。

点赞
用户1009479
用户1009479

在你的简单例子中不需要使用模式匹配。

local str = "红色汽车"
for _, v in ipairs(itemlist) do
    if v.name == str then
        print("这辆" .. v.name .. "售价" .. tostring(v.price) .. "元。")
    end
end
2014-10-27 03:27:49
用户2226988
用户2226988

你应该阅读手册中关于表格和带有序列的表格的部分。然后你可以决定使用 pairs 还是 ipairs 来迭代表格。

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

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

-- 或者甚至是这样

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

print(itemlist["red car"].price);
print(prices["red car"]);
2014-10-27 03:36:35