目前,我有以下代码:
runtable={}
for _,v in pairs(akeys) do
if string.match(string.upper(v),string.upper(area)) then
table.insert(runtable,area)
break
end
end
if #runtable = 0 then
for i,_ in pairs(akeys) do
if string.match(string.upper(i),string.upper(area)) then
table.insert(runttable,area)
end
end
end
此脚本的目的是首先遍历所有值,并查看区域变量是否与值匹配。如果确实如此,它将是一次性的事情,所以它将停止循环并继续使用脚本的其余部分(超出if #runtable = 0
)。如果它未能在值中找到任何内容,则它会再次遍历列表,但这次将索引与区域进行比较,并且每次找到匹配(部分或全部)时,它都会将其添加到runtable。 / p>
有更有效的方法吗?或者这是运行它的最佳方式,无论它看起来多么混乱?
答案 0 :(得分:2)
local rt1, rt2 = {}, {}
for i,v in pairs(akeys) do
if string.match(string.upper(v),string.upper(area)) then
table.insert(rt1,area)
break
end
if string.match(string.upper(i),string.upper(area)) then
table.insert(rt2,area)
end
end
local runtable = #rt1 > 0 and rt1 or rt2
在丑陋方面不是一个巨大的节省,但它节省了第二个循环。可悲的是,没有任何一种魔法我知道这会让这更漂亮,但这是一种与Lua一样紧凑的语言的权衡之一。