LUA 和 table 数据 - 在嵌套循环中查找数据
LUA and table data - finding data in a nested loop
我有以下table
scavenging =
{
{
type = "Greenskin|16",
fast_levelup = 20, --Number of levels with 75% chance to level up after required level
normal_levelup = 40, --Number of levels with 50% chance to level up after fast_levelup + required level
slow_levelup = 40, --Number of levels with 25% chance
drops = --Drops
{
{items = {"Linen", "Bolt of Linen", "Coarse Thread", "Feather", "Cotton"}, droprates = {60, 10, 10, 10, 2}},
},
},
}
这是一系列中的一个数据值。我用
function scavenge_meta(scavenge_name)
for _, meta in pairs(scavenging) do
if string.match(meta.type, scavenge_name) then
return meta
end
end
end
拉取需要的数据。问题是,是否有一种简单的方法可以在无需为(对)做一些操作的情况下获得掉率值?例如,现在我可以使用:
local founditem = scavenge_meta("Greenskin|16")
这行得通,然后我可以使用 founditem.fast_levelup 等。例如,我希望使用 founditem.drops.items 访问掉落 table,但这行不通,我需要做一个 pairs(founditem.drops) 然后 pairs(valuefound.items) /etc.
也许有更好的方法?
如果您可以更改 table 则执行:
scavenging =
{
["Greenskin|16"] = {
type = "Greenskin|16",
fast_levelup = 20,
normal_levelup = 40,
slow_levelup = 40,
drops =
{
{items = {"Linen", "Bolt of Linen", "Coarse Thread", "Feather", "Cotton"}, droprates = {60, 10, 10, 10, 2}},
},
},
}
直接通过索引获取数据
print(scavenging["Greenskin|16"].fast_levelup)
否则,只需像您一样搜索即可。
我有以下table
scavenging =
{
{
type = "Greenskin|16",
fast_levelup = 20, --Number of levels with 75% chance to level up after required level
normal_levelup = 40, --Number of levels with 50% chance to level up after fast_levelup + required level
slow_levelup = 40, --Number of levels with 25% chance
drops = --Drops
{
{items = {"Linen", "Bolt of Linen", "Coarse Thread", "Feather", "Cotton"}, droprates = {60, 10, 10, 10, 2}},
},
},
}
这是一系列中的一个数据值。我用
function scavenge_meta(scavenge_name)
for _, meta in pairs(scavenging) do
if string.match(meta.type, scavenge_name) then
return meta
end
end
end
拉取需要的数据。问题是,是否有一种简单的方法可以在无需为(对)做一些操作的情况下获得掉率值?例如,现在我可以使用:
local founditem = scavenge_meta("Greenskin|16")
这行得通,然后我可以使用 founditem.fast_levelup 等。例如,我希望使用 founditem.drops.items 访问掉落 table,但这行不通,我需要做一个 pairs(founditem.drops) 然后 pairs(valuefound.items) /etc.
也许有更好的方法?
如果您可以更改 table 则执行:
scavenging =
{
["Greenskin|16"] = {
type = "Greenskin|16",
fast_levelup = 20,
normal_levelup = 40,
slow_levelup = 40,
drops =
{
{items = {"Linen", "Bolt of Linen", "Coarse Thread", "Feather", "Cotton"}, droprates = {60, 10, 10, 10, 2}},
},
},
}
直接通过索引获取数据
print(scavenging["Greenskin|16"].fast_levelup)
否则,只需像您一样搜索即可。