使用 pair/ipair 简化 lua 函数
Using pair/ipair to simplify a lua function
我有以下有效的代码:
function group1color()
for _, roomid in ipairs(group1rooms) do
if roomid == '1+' then
Controls.room1background.Color = '#dba643'
end
if roomid == '2+' then
Controls.room2background.Color = '#dba643'
end
if roomid == '3+' then
Controls.room3background.Color = '#dba643'
end
end
end
但是,我需要将roomid if语句再复制5次,然后针对8个不同的房间组复制8次函数。我想弄清楚是否有办法使用 pairs 或 ipairs 来简化这个?我主要是在寻找有关如何简化函数迭代的建议。
您可以通过_G["varname"]
访问全局变量
function groupcolor()
for N = 1, 8 do
local groupNrooms = _G["group"..N.."rooms"]
for _, roomid in ipairs(groupNrooms) do
local M = roomid:match"^(%d+)%+$"
if M then
Controls["room"..M.."background"].Color = '#dba643'
end
end
end
end
我有以下有效的代码:
function group1color()
for _, roomid in ipairs(group1rooms) do
if roomid == '1+' then
Controls.room1background.Color = '#dba643'
end
if roomid == '2+' then
Controls.room2background.Color = '#dba643'
end
if roomid == '3+' then
Controls.room3background.Color = '#dba643'
end
end
end
但是,我需要将roomid if语句再复制5次,然后针对8个不同的房间组复制8次函数。我想弄清楚是否有办法使用 pairs 或 ipairs 来简化这个?我主要是在寻找有关如何简化函数迭代的建议。
您可以通过_G["varname"]
function groupcolor()
for N = 1, 8 do
local groupNrooms = _G["group"..N.."rooms"]
for _, roomid in ipairs(groupNrooms) do
local M = roomid:match"^(%d+)%+$"
if M then
Controls["room"..M.."background"].Color = '#dba643'
end
end
end
end