Modul:Homokozó/Pepo41/UnpackSelectedArgs
Homokozó/Pepo41/UnpackSelectedArgs[mi ez?] • [dokumentáció: mutat, ] • [tesztek: létrehozás]
local function main()
function table.pack(...)
return { n = select("#", ...), ... } -- létrehoz egy új táblát a varargs elemeivel
-- és előtte egy n mezővel , a tábla hossza így n+1
end
-- turns a frame object into a table
local frameargs = {}
frameargs[1]="Mondottam ember küzdj" -- segedtabl[1]
frameargs["eltolás"] = "balra" -- segedtabl[2]
frameargs[2]="és bízva bízzál"
frameargs["szin"] = "kék"
frameargs[3]= "Oszt jónapot!" -- segedtabl[5]
-- a fenti kód megfelel a frame objektum kezelése alábbi kódjának
function unpackSelectedFrame(frame, ...)
-- pl. frameargs, "szin","eltolás",3
local selectedargs = {} -- ide gyűjtjük a frameargsból kiválasztandó argumentumokat: "szin","eltolás",3
selectedargs=table.pack(...) -- első eleme az ilyen argumentumok száma
-- 3, "szin","eltolás",3
local segedtabl = {} -- ezek lesznek a frameargs elemei egész indexekkel
local indextabl = {} -- ezek lesznek az indexei
local i= 0
for k, v in pairs(frame) do -- frame majd frameargs ílesz
i=i+1
segedtabl[i] = v -- gyűlnek a frameargs elemei egész indexekkel
indextabl[i] = k -- gyűlnek a frameargs indexei
end
n=i
--for i=1,n do print (segedtabl[i]) end -- 1="Mondottam ember küzdj",2="és bízva bízzál"
--3="Oszt jónapot!",4="kék",5="balra"
--for i=1,n do print (indextabl[i]) end -- 1,2,3,"szin","eltolás"
local outtabl = {} -- ezt a táblát fogjuk unpackkal kiadni
for i=1, selectedargs.n do -- ezek a kiválasztottak :"szín","eltolás",3
-- melyik i felel meg ezeknek az indextáblában? (4,5,3)
for j=1, n do
if selectedargs[i] == indextabl[j] then outtabl[i]=segedtabl[j] end
--1,2,3,"szin","eltolás"=="szín","eltolás",3
--print(i,j,selectedargs[i],indextabl[j])
end --j ciklus
--print(outtabl[i])
end -- i ciklus
--print (unpack(outtabl))
return unpack(outtabl)
end -- unpackSelectedFrame
--print(unpackSelectedFrame(frameargs,4,5,3,1,2 )) -- szín, eltolás, "oszt.." "Mondottam.." "és bízva.."
print(unpackSelectedFrame(frameargs,"szin","eltolás",3))
print(unpackSelectedFrame(frameargs,1,"eltolás","szin",3))
print(unpackSelectedFrame(frameargs,2,1,"szin","eltolás",3))
end
main()