我试图返回具有最大值的对象的名称。让我们假设这些信息:
maxTreeHeight = 0
maxTreeName = ""
maxLeaveLength = 0
maxLeaveName = ""
fruitTab =
{
oF = { name = "Orange", avgTreeHeight = 32, avgLeaveLength = 0.27 },
aF = { name = "Apple", avgTreeHeight = 10, avgLeaveLength = 0.14 },
bF = { name = "Banana", avgTreeHeight = 16, avgLeaveLength = 8.9 },
mF = { name = "Mango", avgTreeHeight = 115, avgLeaveLength = 0.98 }
}
--below in function
for i, v in ipairs(fruitTab) do
if v.avgTreeHeight > maxTreeHeight then
maxTreeHeight = v.avgTreeHeight
maxTreeName = v.name
end
if v.avgLeaveLength > maxLeaveLength then
maxLeaveLength = v.avgLeaveLength
maxLeaveName = v.name
end
end
print(maxLeaveName.." "..maxLeaveLength )
print(maxTreeName.." "..maxTreeHeight)
我尝试提取这种类型的信息,但是该功能并不总是为我提供准确的值(据我所知,具有最大值的名称并不总是正确的)
除非您的某些输入表是无键的,否则不知道如何用该代码获得任何结果。
该ipairs
函数遍历表的索引,该索引旨在与类似数组的表一起使用。相反,您应该使用pairs
通过遍历表中每个字段的函数next
。
简单地进行更改就可以从您的示例代码中得到结果。
这是一些进一步更新的代码:
function get_max (tab)
local maxTreeHeight = 0
local maxTreeName = ""
local maxLeaveLength = 0
local maxLeaveName = ""
for _, v in pairs(tab) do
if v.avgTreeHeight > maxTreeHeight then
maxTreeHeight = v.avgTreeHeight
maxTreeName = v.name
end
if v.avgLeaveLength > maxLeaveLength then
maxLeaveLength = v.avgLeaveLength
maxLeaveName = v.name
end
end
print(maxLeaveName.." "..maxLeaveLength )
print(maxTreeName.." "..maxTreeHeight)
end
local fruitTab = {
oF = { name = "Orange", avgTreeHeight = 32, avgLeaveLength = 0.27 },
aF = { name = "Apple", avgTreeHeight = 10, avgLeaveLength = 0.14 },
bF = { name = "Banana", avgTreeHeight = 16, avgLeaveLength = 8.9 },
mF = { name = "Mango", avgTreeHeight = 115, avgLeaveLength = 0.98 }
}
get_max(fruitTab)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句