Wikibooks plwikibooks https://pl.wikibooks.org/wiki/Wikibooks:Strona_g%C5%82%C3%B3wna MediaWiki 1.47.0-wmf.19 first-letter Media Specjalna Dyskusja Wikipedysta Dyskusja wikipedysty Wikibooks Dyskusja Wikibooks Plik Dyskusja pliku MediaWiki Dyskusja MediaWiki Szablon Dyskusja szablonu Pomoc Dyskusja pomocy Kategoria Dyskusja kategorii Wikijunior Dyskusja Wikijuniora TimedText TimedText talk Moduł Dyskusja modułu Wydarzenie Dyskusja wydarzenia Moduł:Parametry 828 45669 555703 553522 2026-09-11T15:23:54Z Persino 2851 555703 Scribunto text/plain local p={}; p["LiczbaElementówNumerowanychTablicy"]=function(tabela, niepuste_wliczac,mnoga) local liczba_elementow_ponumerowanych_w_tablicy=0; local czy_tylko_niepuste_wliczac=p.CzyTak(niepuste_wliczac); local czy_mnoga=p.CzyTak(mnoga); for _1,_2 in ipairs(tabela)do if((not czy_tylko_niepuste_wliczac)or((czy_tylko_niepuste_wliczac)and(p.CzyTak(_2))))then liczba_elementow_ponumerowanych_w_tablicy=liczba_elementow_ponumerowanych_w_tablicy+1; if((czy_mnoga)and(liczba_elementow_ponumerowanych_w_tablicy>1))then return liczba_elementow_ponumerowanych_w_tablicy;end; end; end; return liczba_elementow_ponumerowanych_w_tablicy; end; p["LiczbaElementówNumerowanychSzablonu"]=function(frame) local parametry_modul=require("Module:Parametry"); return parametry_modul["LiczbaElementówNumerowanychTablicy"](frame:getParent().args,frame.args["niepuste"],frame.args["mnoga"]); end; p["LiczbaElementówNienazwanychTablicy"] = function(tabela,niepuste_wliczac,mnoga) local czy_tylko_niepuste_wliczac=p.CzyTak(niepuste_wliczac); local czy_mnoga=p.CzyTak(mnoga); local liczba_elementow_nienazwanych_w_tablicy=0; for _1,_2 in pairs(tabela)do if(type(_1)=="number")then if((not czy_tylko_niepuste_wliczac)or((czy_tylko_niepuste_wliczac)and(p.CzyTak(_2))))then liczba_elementow_nienazwanych_w_tablicy=liczba_elementow_nienazwanych_w_tablicy+1; if((czy_mnoga)and(liczba_elementow_nienazwanych_w_tablicy>1))then return liczba_elementow_nienazwanych_w_tablicy;end; end; end; end; return liczba_elementow_nienazwanych_w_tablicy; end; p["LiczbaParametrówNienazwanychSzablonu"] = function (frame) return p["LiczbaElementówNienazwanychTablicy"](frame:getParent().args,frame.args["niepuste"],frame.args["mnoga"]) end; p["LiczbaElementówTablicy"]=function(tabela,niepuste_wliczac) local czy_tylko_niepuste_wliczac=p.CzyTak(niepuste_wliczac); local liczba_elementow_w_tablicy=0; for _1,_2 in pairs(tabela)do if((not czy_tylko_niepuste_wliczac)or((czy_tylko_niepuste_wliczac)and(p.CzyTak(_2))))then liczba_elementow_w_tablicy=liczba_elementow_w_tablicy+1; end; end; return liczba_elementow_w_tablicy; end; p["LiczbaElementówNienazwanychZPrzedrostkiemLubNieTablicy"]=function(tabela,przedrostek,niepuste_wliczac,czy_formy_numerkowe) local czy_tylko_niepuste_wliczac=p.CzyTak(niepuste_wliczac); local liczba_elementow_w_tablicy=0; local techniczne_modul=require("Module:Techniczne"); local wzor="^"..techniczne_modul["PrzekształćWzórDoCzystegoTekstu"](przedrostek).."(%d+)$"; for _1,_2 in pairs(tabela)do local string_liczba=tonumber(_1) or nil; local czy_liczba=((string_liczba)and(czy_formy_numerkowe or p.TypeNumber(_1))and(string_liczba>0)); local zmienna=czy_liczba and przedrostek.._1 or nil; local element=(czy_liczba and tabela[zmienna] or nil) or (czy_liczba and tabela[_1] or (mw.ustring.match(tostring(_1),wzor) and tabela[_1] or nil) ); if(element)then if((not czy_tylko_niepuste_wliczac)or((czy_tylko_niepuste_wliczac)and(element~="")))then liczba_elementow_w_tablicy=liczba_elementow_w_tablicy+1; end; end; end; return liczba_elementow_w_tablicy; end; function p.MaksymalnaLiczbaParametruNienazwanegoSzablonu(frame) return p.MaksymalnaLiczbaParametruNienazwanegoTablicy(frame:getParent().args,frame.args["niepuste"]); end; function p.MaksymalnaLiczbaParametruNienazwanegoTablicy(tabela, niepuste_wliczac) local czy_tylko_niepuste_wliczac=p.CzyTak(niepuste_wliczac); local liczba_elementow_ponumerowanych_w_tablicy=0; for _1,_2 in pairs(tabela)do if(type(_1)=="number")then if((not czy_tylko_niepuste_wliczac)or((czy_tylko_niepuste_wliczac)and(p.CzyTak(_2))))then liczba_elementow_ponumerowanych_w_tablicy=math.max(liczba_elementow_ponumerowanych_w_tablicy,_1); end; end; end; return (liczba_elementow_ponumerowanych_w_tablicy)and liczba_elementow_ponumerowanych_w_tablicy or 0; end; function p.MinimalnaLiczbaParametruNienazwanegoSzablonu(frame) return p.MinimalnaLiczbaParametruNienazwanegoTablicy(frame:getParent().args,frame.args["niepuste"]); end; function p.MinimalnaLiczbaParametruNienazwanegoTablicy(tabela,niepuste_wliczac) local czy_tylko_niepuste_wliczac=p.CzyTak(niepuste_wliczac); local liczba_elementow_ponumerowanych_w_tablicy; for _1,_2 in pairs(tabela)do if(type(_1)=="number")then if((not czy_tylko_niepuste_wliczac)or((czy_tylko_niepuste_wliczac)and(p.CzyTak(_2))))then if(not liczba_elementow_ponumerowanych_w_tablicy)then liczba_elementow_ponumerowanych_w_tablicy=_1; else liczba_elementow_ponumerowanych_w_tablicy=math.min(liczba_elementow_ponumerowanych_w_tablicy,_1); end; end; end; end; return (liczba_elementow_ponumerowanych_w_tablicy)and liczba_elementow_ponumerowanych_w_tablicy or 1; end; function p.MinimalnyIMaksymalnyNumerPodstawyParametruTabeli(tabela,podstawa_parametru, czy_od_zera) local liczba_maksimum=0; local liczba_minimum; for nazwa_parametru,wartosc_parametru in pairs(tabela)do local liczba_z_parametru=mw.ustring.match(nazwa_parametru,"^"..podstawa_parametru.."%s(%d+)$") if(liczba_z_parametru)then local liczba=tonumber(liczba_z_parametru) or (czy_od_zera and 0 or 1); liczba=(liczba>0)and liczba or (czy_od_zera and 0 or 1); liczba_maksimum=math.max(liczba_maksimum,liczba); if(not liczba_minimum)then liczba_minimum=liczba; else liczba_minimum=math.min(liczba_minimum,liczba); end; elseif(podstawa_parametru==nazwa_parametru)then liczba_maksimum=math.max(liczba_maksimum,(czy_od_zera and 0 or 1)); if(not liczba_minimum)then liczba_minimum=czy_od_zera and 0 or 1; else liczba_minimum=math.min(liczba_minimum,czy_od_zera and 0 or 1); end; end; end; if(not liczba_minimum)then liczba_minimum=1;end; return liczba_minimum,liczba_maksimum; end; p["CzySąParametryNumerowaneSzablonu"] = function(frame) local czy_sa_elementy_tablicy=require("Module:Parametry")["CzySąElementyNumerowaneTablicy"](frame:getParent().args,frame.args["niepuste"]); if(czy_sa_elementy_tablicy)then return "tak";end; return; end; p["CzySąElementyNumerowaneTablicy"]=function(tabela,niepuste_wliczac) local czy_tylko_niepuste_wliczac=p.CzyTak(niepuste_wliczac); for _1,_2 in ipairs(tabela)do if((not czy_tylko_niepuste_wliczac)or((czy_tylko_niepuste_wliczac)and(p.CzyTak(_2))))then return true; end; end; return false; end; p["CzySąParametryNienazwaneSzablonu"] = function(frame) local czy_sa_elementy_tablicy=require("Module:Parametry")["CzySąElementyNienazwaneTablicy"](frame:getParent().args,frame.args["niepuste"]); if(czy_sa_elementy_tablicy)then return "tak";end; return; end; p["CzySąElementyNienazwaneTablicy"]=function(tabela,niepuste_wliczac) local czy_tylko_niepuste_wliczac=p.CzyTak(niepuste_wliczac); for _1,_2 in pairs(tabela)do if(type(_1)=="number")then if((not czy_tylko_niepuste_wliczac)or((czy_tylko_niepuste_wliczac)and(p.CzyTak(_2))))then return true; end; end; end; return false; end; p["CzySąParametryNazwaneSzablonu"] = function(frame) local czy_sa_elementy_tablicy=require("Module:Parametry")["CzySąElementyNazwaneTablicy"](frame:getParent().args,frame.args["niepuste"]); if(czy_sa_elementy_tablicy)then return "tak";end; return; end; p["CzySąElementyNazwaneTablicy"]=function(tabela,niepuste_wliczac) local czy_tylko_niepuste_wliczac=p.CzyTak(niepuste_wliczac); for _1,_2 in pairs(tabela)do if(type(_1)~="number")then if((not czy_tylko_niepuste_wliczac)or((czy_tylko_niepuste_wliczac)and(p.CzyTak(_2))))then return true; end; end; end; return false; end; p["CzySąParametrySzablonu"] = function(frame) local czy_sa_elementy_tablicy=require("Module:Parametry")["CzySąElementyTablicy"](frame:getParent().args,frame.args["niepuste"]); if(czy_sa_elementy_tablicy)then return "tak";end; return; end; p["CzySąElementyTablicy"]=function(tabela,niepuste_wliczac) local czy_tylko_niepuste_wliczac=p.CzyTak(niepuste_wliczac); for _1,_2 in pairs(tabela)do if((not czy_tylko_niepuste_wliczac)or((czy_tylko_niepuste_wliczac)and(p.CzyTak(_2))))then return true; end; end; return false; end; p["CzyCoNajwyżejJedenNumerowanyParametrSzablonu"] = function (frame) local parametry_modul=require("Module:Parametry"); local czy_jest_taki_element=parametry_modul["CzyCoNajwyżejJedenNumerowanyElementTablicy"](frame:getParent().args,frame.args["niepuste"]); if(czy_jest_taki_element)then return "tak";end; end; p["CzyCoNajwyżejJedenNumerowanyElementTablicy"] = function (args,niepuste_wliczac) local czy_tylko_niepuste_wliczac=p.CzyTak(niepuste_wliczac); local i=1; local czy=false; for _1,_2 in pairs(args)do if(type(_1)=="number")then if((not czy_tylko_niepuste_wliczac)or((czy_tylko_niepuste_wliczac)and(p.CzyTak(_2))))then if(_1==1)then czy=true;end; if(i>1)then return false; else i=i+1; end; end; end; end; if((czy)or(i==1))then return true;end; return false; end; p["KopiujTabelęŁańcuchów"]=function(args) local args2={}; local wzor_temp=args["wzór"];local wzor_wszystko=args["wzór wszystko"]; local podstawienie_temp=args.podstawienie;local podstawienie_wszystko=args["podstawienie wszystko"]; local wzor2_temp=args["wzór 2"];local wzor_wszystko_2=args["wzór wszystko 2"]; local przedrostek_temp=args.przedrostek;local przedrostek_wszystko=args["przedrostek wszystko"]; local przyrostek_temp=args.przyrostek;local przyrostek_wszystko=args["przyrostek wszystko"]; for name,value in pairs(args.tabela)do local wzor=wzor_temp and wzor_temp[name] or wzor_wszystko; local podstawienie=wzor and (podstawienie_temp and podstawienie_temp[name] or podstawienie_wszystko) or nil; if(wzor and podstawienie)then value=mw.ustring.gsub(value,wzor,podstawienie);end; local wzor2=wzor2_temp and wzor2_temp[name] or wzor_wszystko_2; if(wzor2)then value=mw.ustring.match(value,wzor2);end; if(value)then local przedrostek=przedrostek_temp and przedrostek_temp[name] or przedrostek_wszystko; local przyrostek=przyrostek_temp and przyrostek_temp[name] or przyrostek_wszystko; args2[name]=(przedrostek or '')..value..(przyrostek or ''); end; end; return args2; end; p["KopiujTabelęElementów"]=function(tabelka,niepuste_wliczac_nazwy,niepuste_wliczac_wartosci) local czy_tylko_niepuste_wliczac_nazwy=p.CzyTak(niepuste_wliczac_nazwy); local czy_tylko_niepuste_wliczac_wartosci=p.CzyTak(niepuste_wliczac_wartosci); local tabelka2={}; for name,value in pairs(tabelka)do if(((not czy_tylko_niepuste_wliczac_nazwy)or((czy_tylko_niepuste_wliczac_nazwy)and(p.CzyTak(name))))and((not czy_tylko_niepuste_wliczac_wartosci)or((czy_tylko_niepuste_wliczac_wartosci)and(p.CzyTak(value)))))then tabelka2[name]=value; end; end; return tabelka2; end; p["KopiujTabelęElementówBezTablicyKluczy"]=function(tabelka,tabelka2,niepuste_wliczac_nazwy,niepuste_wliczac_wartosci) local czy_tylko_niepuste_wliczac_nazwy=p.CzyTak(niepuste_wliczac_nazwy); local czy_tylko_niepuste_wliczac_wartosci=p.CzyTak(niepuste_wliczac_wartosci); local tabelka3={}; for name,value in pairs(tabelka)do if(((not czy_tylko_niepuste_wliczac_nazwy)or((czy_tylko_niepuste_wliczac_nazwy)and(p.CzyTak(name))))and((not czy_tylko_niepuste_wliczac_wartosci)or((czy_tylko_niepuste_wliczac_wartosci)and(p.CzyTak(value)))))then local czy=p.CzyJestTakiKluczTabeli(tabelka2,name); if(not czy)then tabelka3[name]=value; end; end; end; return tabelka3; end; p["KopiujRekurencyjnieTabelęElementów"]=function(tabelka,niepuste_wliczac_nazwy,niepuste_wliczac_wartosci) local czy_tylko_niepuste_wliczac_nazwy=p.CzyTak(niepuste_wliczac_nazwy); local czy_tylko_niepuste_wliczac_wartosci=p.CzyTak(niepuste_wliczac_wartosci); local szablonowe_potrzebne_modul=require("Module:Szablonowe/Potrzebne"); local szablonowe_modul=require("Module:Szablonowe"); local kopiuj_metatable=function(value,funkcja,funkcja2) local __metatabelka=getmetatable(value); if(__metatabelka)then if(__metatabelka.KopiujMetaTabela)then __metatabelka.KopiujMetaTabela(value,funkcja,funkcja2) else funkcja(value,true); end; else funkcja(value,true); end; end; local function kopiuj(tabelka,tabelka_nowa) local tabelka2=tabelka_nowa or {}; for name,value in pairs(tabelka)do if(((not czy_tylko_niepuste_wliczac_nazwy)or((czy_tylko_niepuste_wliczac_nazwy)and(p.CzyTak(name))))and((not czy_tylko_niepuste_wliczac_wartosci)or((czy_tylko_niepuste_wliczac_wartosci)and(p.CzyTak(value)))))then if(type(value)=="table")then kopiuj_metatable(value,function(value,jak) if(jak)then tabelka2[name]=kopiuj(value); else tabelka2[name]=value; end; end,kopiuj); else tabelka2[name]=value; end; end; end; return tabelka2; end; local tabela_kopiuj={}; kopiuj_metatable(tabelka,function(value,jak) if(jak)then tabela_kopiuj=kopiuj(value); else tabela_kopiuj=value; end; end,kopiuj); return tabela_kopiuj; end; p["NazwanyLiczbą"] = function(frame) local pf=frame:getParent() local numer_parametru=frame.args[1] if(numer_parametru)then numer_parametru=tonumber(numer_parametru); if(numer_parametru and pf.args[numer_parametru])then return "tak" end end; return; end p["NazwanyCiągiem"] = function (frame) local pf=frame:getParent() local klucz_parametru=frame.args[1] if(klucz_parametru)then local klucz_parametru_do_liczby=tonumber(klucz_parametru); if((not klucz_parametru_do_liczby)and(pf.args[klucz_parametru]))then return "tak" end end; return; end; function p.Nazwane(frame) local pf = frame:getParent() for _, nazwa_parametru in ipairs(frame.args)do local wartosc_parametru_nazwanego=pf.args[mw.text.trim(nazwa_parametru)] if(wartosc_parametru_nazwanego)then return "tak" end end return; end function p.Nienazwane(frame) local pf = frame:getParent() for _, wartosc_parametru in ipairs(frame.args)do wartosc_parametru=mw.text.trim(wartosc_parametru) for name, wartosc_parametru2 in pairs(pf.args) do if(type(name)=="number")then if(mw.text.trim(wartosc_parametru2)==wartosc_parametru)then return "tak" end end; end end return; end function p.Numerowane(frame) local pf = frame:getParent() for _, wartosc_parametru in ipairs(frame.args)do wartosc_parametru=mw.text.trim(wartosc_parametru) for _, wartosc_parametru2 in ipairs(pf.args) do if(mw.text.trim(wartosc_parametru2)==wartosc_parametru)then return "tak" end end end return; end p["Odstępy"] = function(frame) local PobierzParametr=p.PobierzParametr(frame); local nazwa=PobierzParametr(1) or PobierzParametr("nazwa"); local czy=PobierzParametr(2) or PobierzParametr("wewnątrz"); local dolny_myslnik=PobierzParametr(3) or PobierzParametr("dolny-myślnik"); local odstep_spacje=PobierzParametr(4) or PobierzParametr("spacje"); if(not p.CzyTak(nazwa))then return nazwa;end; local m_=(p.CzyTak(odstep_spacje) and "" or "_"); nazwa=mw.ustring.gsub(nazwa,"^[%s"..m_.."]+",""); nazwa=mw.ustring.gsub(nazwa,"[%s"..m_.."]+$","") if(p.CzyTak(czy))then nazwa=mw.ustring.gsub(nazwa,"[%s"..m_.."]+",(p.CzyTak(dolny_myslnik) and "_" or " ")); end; return nazwa; end; function p.DodajElementDoZbioru(tabela,wartosc) if(wartosc==nil)then return; end; if(type(tabela)~="table")then return;end; for _,element_tabeli in pairs(tabela)do if(element_tabeli==wartosc)then return false; end; end; table.insert(tabela,wartosc); return true; end; function p.CzyJestTakiElementNumerowanyTabeli(tabela,wartosc) if(wartosc==nil)then return;end; if(type(tabela)~="table")then return;end; for _, element_tabeli in ipairs(tabela)do if(element_tabeli==wartosc)then return true; end; end; return false; end; function p.CzyJestTakiElementNienazwanyTabeli(tabela,wartosc) if(wartosc==nil)then return;end; if(type(tabela)~="table")then return;end; for name,value in pairs(tabela)do if(type(name)=="number")then if(value==wartosc)then return true; end; end; end; return false; end; function p.CzyJestTakiKluczTabeli(tabela,klucz) if(klucz==nil)then return;end; if(type(tabela)~="table")then return;end; local wartosc=tabela[klucz]; if(wartosc~=nil)then return true;end; return false; end; function p.CzyJestTakiElementTabeli(tabela,klucz,wartosc) if((klucz==nil)or(wartosc==nil))then return;end; if(type(tabela)~="table")then return;end; for __klucz, __wartosc in pairs(tabela)do if((__klucz==klucz)and(__wartosc==wartosc))then return true; end; end; return false; end; p["ŁączDwieTabele"] = function (tabelka1,tabelka2) local parametry_modul=require("Module:Parametry"); return (tabelka2 and parametry_modul["CzySąElementyTablicy"](tabelka2)) and ((tabelka1 and parametry_modul["CzySąElementyTablicy"](tabelka1)) and parametry_modul["ŁączNumerowaneTabele"]{[1]=tabelka1,[2]=tabelka2,} or tabelka2) or tabelka1; end; p["ŁączZbioryElementówNumerowanychDwóchTabel"]=function(tabelka1,tabelka2) local parametry_modul=require("Module:Parametry"); return (tabelka1 and parametry_modul["CzySąElementyNumerowaneTablicy"](tabelka1))and ((tabelka2 and parametry_modul["CzySąElementyNumerowaneTablicy"](tabelka2))and parametry_modul["ŁączZbioryNumerowanychElementówNumerowanychTabel"]{[1]=tabelka1,[2]=tabelka2} or tabelka1) or tabelka2; end; p["ŁączZbioryElementówNienazwanychDwóchTabel"]=function(tabelka1,tabelka2) local parametry_modul=require("Module:Parametry"); return (tabelka1 and parametry_modul["CzySąElementyNienazwaneTablicy"](tabelka1))and ((tabelka2 and parametry_modul["CzySąElementyNienazwaneTablicy"](tabelka2))and parametry_modul["ŁączZbioryNienazwanychElementówNumerowanychTabel"]{[1]=tabelka1,[2]=tabelka2} or tabelka1) or tabelka2; end; p["ŁączZbioryElementówNazwanychDwóchTabel"]=function(tabelka1,tabelka2) local parametry_modul=require("Module:Parametry"); return (tabelka1 and parametry_modul["CzySąElementyNazwaneTablicy"](tabelka1))and ((tabelka2 and parametry_modul["CzySąElementyNazwaneTablicy"](tabelka2))and parametry_modul["ŁączZbioryNazwanychElementówNumerowanychTabel"]{[1]=tabelka1,[2]=tabelka2} or tabelka1) or tabelka2; end; p["ŁączZbioryNumerowanychElementówNienazwanychTabel"]=function(args) local parametry_modul=require("Module:Parametry"); local args2={CzyPairsTablic=true,["CzyPairsElementówTablic"]=false,CzyNazwaneElementyTabel=false,CzyTylkoNazwaneElementyTabel=false,}; return parametry_modul["ŁączTabele"](args,args2); end; p["ŁączZbioryNienazwanychElementówNienazwanychTabel"]=function(args) local parametry_modul=require("Module:Parametry"); local args2={CzyPairsTablic=true,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=false,CzyTylkoNazwaneElementyTabel=false,}; return parametry_modul["ŁączTabele"](args,args2); end; p["ŁączZbioryNazwanychElementówNienazwanychTabel"]=function(args) local parametry_modul=require("Module:Parametry"); local args2={CzyPairsTablic=true,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=true,CzyTylkoNazwaneElementyTabel=true,}; return parametry_modul["ŁączTabele"](args,args2); end; p["ŁączZbioryNumerowanychElementówNumerowanychTabel"]=function(args) local parametry_modul=require("Module:Parametry"); local args2={CzyPairsTablic=false,["CzyPairsElementówTablic"]=false,CzyNazwaneElementyTabel=false,CzyTylkoNazwaneElementyTabel=false,}; return parametry_modul["ŁączTabele"](args,args2); end; p["ŁączZbioryNienazwanychElementówNumerowanychTabel"]=function(args) local parametry_modul=require("Module:Parametry"); local args2={CzyPairsTablic=false,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=false,CzyTylkoNazwaneElementyTabel=false,}; return parametry_modul["ŁączTabele"](args,args2); end; p["ŁączZbioryNazwanychElementówNumerowanychTabel"]=function(args) local parametry_modul=require("Module:Parametry"); local args2={CzyPairsTablic=false,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=true,CzyTylkoNazwaneElementyTabel=true,}; return parametry_modul["ŁączTabele"](args,args2); end; p["ŁączNumerowaneTabele"]=function(args) local parametry_modul=require("Module:Parametry"); local args2={CzyPairsTablic=false,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=true,CzyTylkoNazwaneElementyTabel=false,NazwijElementyNumerowane=true,}; return parametry_modul["ŁączTabele"](args,args2); end; p["ŁączNienazwaneTabele"]=function(args) local parametry_modul=require("Module:Parametry"); local args2={CzyPairsTablic=true,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=true,CzyTylkoNazwaneElementyTabel=false,NazwijElementyNumerowane=true,}; return parametry_modul["ŁączTabele"](args,args2); end; p["ŁączTabele"] = function(args,args2) local tabela={}; local par1=(args2.CzyPairsTablic)and pairs or ipairs; local czy_number_nie_tylko_tablic=(not args2.CzyPairsTablic)and true or false; local par2=(args2["CzyPairsElementówTablic"])and pairs or ipairs; local czy_number_nie_tylko_elementow_tablic=(not args2["CzyPairsElementówTablic"])and true or false; local czy_nazwane=(args2.CzyNazwaneElementyTabel)and true or false; local czy_nie_tylko_nazwane=(not args2.CzyTylkoNazwaneElementyTabel)and true or false; local nazwij_elementy_numerowane=(args2.NazwijElementyNumerowane) and true or false; for licznik, args_tabeli in par1(args)do if(((czy_number_nie_tylko_tablic)or(type(licznik)=="number"))and(type(args_tabeli)=="table"))then for name,value in par2(args_tabeli)do if((czy_nie_tylko_nazwane)and((czy_number_nie_tylko_elementow_tablic)or(type(name)=="number")))then if(nazwij_elementy_numerowane)then if(not tabela[name])then tabela[name]=value;end; else table.insert(tabela,value); end; elseif((czy_nazwane)and(czy_nie_tylko_nazwane or ((not czy_nie_tylko_nazwane)and(type(name)~="number"))))then if(not tabela[name])then tabela[name]=value;end; end; end; end; end; return tabela; end; p["UsuńElementyTabeli"]=function(tabelka_1,tabelka_2) if(not tabelka_1)then return nil;end; if(not tabelka_2)then return tabelka_1;end; for name,_ in pairs(tabelka_1)do if(tabelka_2[name]~=nil)then tabelka_1[name]=nil; end; end; return tabelka_1; end; p["TwórzTabelęBezPowtarzającychKluczyTabel"]=function(args) local tabela_poczatkowa=args[1]; local tabela={}; local lens=#args; for name,value in pairs(tabela_poczatkowa)do local yes=false; for i=2,lens,1 do if(args[i][name]~=nil)then yes=true; break; end; end; if(not yes)then tabela[name]=value; end; end; return tabela; end; function p.TypeTable(zmienna) return (type(zmienna)=="table"); end; function p.TypeFunction(zmienna) return (type(zmienna)=="function"); end; function p.TypeString(zmienna) return (type(zmienna)=="string"); end; function p.TypeBoolean(zmienna) return (type(zmienna)=="boolean"); end; function p.TypeNumber(zmienna) return (type(zmienna)=="number"); end; function p.TypeNil(zmienna) return (zmienna==nil); end; local function CzyTakSilnik(args,funkcja) local parametry_modul=require("Module:Parametry"); local parametr=p.CzyTak(args[2]) and require("Module:"..args[2])[args[1]] or args[1]; local argsfun; if(p.CzyTak(args[2]))then for name,value in pairs(args)do local typen=(type(name)=="number"); if(((typen)and((name~=1)and(name~=2)))or(not typen))then if(not argsfun)then argsfun={};end; argsfun[(typen and name>2) and (name-2) or name]=value; end; end; else parametr=tonumber(parametr) or parametr; if(type(parametr)=="string")then local parametr2=parametry_modul["Odstępy"](parametr); if(parametr2=="true")then parametr=true; elseif(parametr2=="false")then parametr=false; elseif(parametr2=="nil")then parametr=nil; else parametr=tonumber(parametr2) or parametr; end; end; end; return (parametry_modul[funkcja]{[1]=parametr,[2]=argsfun,})and "tak" or nil; end; p["CzyTakCiąg"]=function(...) local frame_parametry={...}; local frame=(#frame_parametry>1)and frame_parametry or frame_parametry[1]; local czy_table=p.TypeTable(frame); if((czy_table and (not frame.getParent)) or (not czy_table))then local PobierzParametr=p.PobierzParametr(frame); local ciag=PobierzParametr("ciąg") or PobierzParametr(1); local parametry=PobierzParametr("parametry") or PobierzParametr(2); local parametry_modul=require("Module:Parametry"); return ciag and p.CzyTak{[1]=(p.TypeString(ciag) and parametry_modul["Odstępy"]{[1]=ciag,[2]="tak",} or ciag),[2]=parametry,} or false; else local args=p.PobierzArgsParametry(frame); return CzyTakSilnik(args,"CzyTakCiąg"); end; end; function p.CzyTak(...) local frame_parametry={...}; local frame=(#frame_parametry>1)and frame_parametry or frame_parametry[1]; local czy_table=p.TypeTable(frame); if((czy_table and (not frame.getParent)) or (not czy_table))then local PobierzParametr=p.PobierzParametr(frame); local zmienna;local parametry; if(czy_table)then local zmienna_temp=PobierzParametr("zmienna") or PobierzParametr(1); zmienna=zmienna_temp or frame; parametry=zmienna_temp and (PobierzParametr("parametry") or PobierzParametr(2)) or nil; else zmienna=frame; parametry=nil; end; if(zmienna~=nil)then if(p.TypeString(zmienna))then if(zmienna~="")then return "tak"; else return nil; end; elseif(p.TypeNumber(zmienna))then if(zmienna~=0)then return "tak"; else return nil; end; elseif(p.TypeBoolean(zmienna))then return (zmienna and "tak" or nil); elseif(p.TypeTable(zmienna))then local parametry_modul=require("Module:Parametry"); return (parametry_modul["CzySąElementyTablicy"](zmienna) and "tak" or nil); elseif(p.TypeFunction(zmienna))then return (zmienna(parametry) and "tak" or nil); else return nil; end; else return nil; end; else local args=p.PobierzArgsParametry(frame); return CzyTakSilnik(args,"CzyTak"); end; end; function p.PobierzFrameEwentualnieParent(frame) return (frame.getParent and (p.CzyTak(frame.args["wyspecjalizowana"]) and frame or frame:getParent()) or frame); end; function p.PobierzArgsParametry(frame, czy_nie_tablica_jako_tablica) local TempFunc=function(frame) local pf=p.PobierzFrameEwentualnieParent(frame); local args=pf.args; if(p.TypeTable(args))then return args; else return nil; end; end; if(not p.TypeNil(frame))then return p.TypeTable(frame) and (TempFunc(frame) or frame) or ((czy_nie_tablica_jako_tablica)and {frame,} or frame); else return {}; end; end; function p.PobierzParametryRamki(frame) local TempFun1=function(tablica) return function(nazwa) return tablica[nazwa]; end; end; local TempFun2=function(wartosc) local tak=true; return function(nazwa) if(tak)then tak=false; return wartosc; end; return nil; end; end; local tablica_parametrow_ramki=p.TypeTable(frame) and (p.TypeTable(frame.args) and TempFun1(frame.args) or TempFun1(frame)) or TempFun2(frame); return function(nazwa) return tablica_parametrow_ramki(nazwa); end; end; function p.PobierzElementNumerowanyZFrameLubTablicy(frame) local tablica_parametrow_funkcji=p.TypeTable(frame[1]) and p.TypeTable(frame[1].args)and frame[1].args or frame; return function(nazwa) local wartosc=tablica_parametrow_funkcji[nazwa]; return wartosc; end; end; function p.PobierzParametr(frame,czy_frame_lub_parent,czy_frame) local __pobierz_parametr_table_args=nil; if(not p.TypeNil(frame))then if(p.TypeTable(frame))then local tak_frame_lub_parent=p.CzyTak(czy_frame_lub_parent); if((not tak_frame_lub_parent)or(not frame.getParent))then local __pobierz_parametr_table_args_temp=p.CzyTak(czy_frame) and frame.args or p.PobierzArgsParametry(frame); __pobierz_parametr_table_args=function(nazwa) return __pobierz_parametr_table_args_temp[nazwa or 1],1; end; elseif(tak_frame_lub_parent)then local pf=(frame.getParent)and frame:getParent() or nil; __pobierz_parametr_table_args=function(nazwa) local wartosc=frame.args[nazwa or 1] or (pf and pf.args[nazwa or 1] or nil); return wartosc,2; end; end; else local tak=true; __pobierz_parametr_table_args=function(nazwa) if(tak)then tak=false; return frame,0; end; return nil,0; end; end; else __pobierz_parametr_table_args=function(nazwa) return nil,0; end; end; return function(nazwa) return __pobierz_parametr_table_args(nazwa); end; end; function p.And(frame) local czy="tak"; local parametry_modul=require("Module:Parametry"); local wartosc_uzyskana=nil; for _,wartosc in ipairs(frame.args)do czy=czy and parametry_modul["CzyTakCiąg"](wartosc); if(not czy)then return nil;end; wartosc_uzyskana=wartosc; end; return czy and wartosc_uzyskana or nil; end; function p.Or(frame) local czy=nil; for _,wartosc in ipairs(frame.args)do czy=czy or p["CzyTakCiąg"](wartosc); if(czy)then return wartosc;end; end; return nil; end; function p.Not(frame) local parametry_modul=require("Module:Parametry"); return (not parametry_modul["CzyTakCiąg"](frame.args[1]))and "tak" or nil; end; function p.Mniejszy(frame) local wyraz1=tonumber(frame.args[1]) or 0; local wyraz2=tonumber(frame.args[2]) or 0; if(wyraz1<wyraz2)then return "tak"; end; return; end; function p.IlePodano(frame) local args=frame.args; local args2=frame:getParent().args; local licznik=0; for _,name in pairs(args)do if(args2[name])then licznik=licznik+1; end; end; return licznik; end; p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter={}; function p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter.__index(t,klucz) local html_modul=require("Module:Html"); klucz=html_modul.DecodeKoduHTMLZnaku(klucz); klucz=p["Odstępy"]{[1]=klucz,[2]="tak",}; klucz=mw.ustring.lower(klucz); return rawget(t,klucz); end; function p.IteratorPoNumerowanychElementachTablicy(t) local i=1; return function() local v=t[i]; if(v~=nil)then i=i+1;end; return v; end; end; p.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu=function(tabela,czy_number,funkcja) local keys={}; for name,_ in next,tabela do if((not czy_number)or((czy_number)and(p.TypeNumber(name))))then table.insert(keys,name); end; end; table.sort(keys, funkcja or ((czy_number) and function(a,b) return (a<b); end or nil ) ); return function(tablica,klucz) if(klucz==nil)then local klucz=keys[1]; return klucz,tablica[klucz]; end; for k,_ in ipairs(keys)do if(keys[k]==klucz)then local klucz=keys[k+1]; return klucz,tablica[klucz]; end; end; end; end; function p.Max(...) local frame={...}; local PobierzElement=p.PobierzElementNumerowanyZFrameLubTablicy(frame); local parametr1=tonumber(PobierzElement(1)); local parametr2=tonumber(PobierzElement(2)); return math.max(parametr1,parametr2); end; function p.Min(...) local frame={...}; local PobierzElement=p.PobierzElementNumerowanyZFrameLubTablicy(frame); local parametr1=tonumber(PobierzElement(1)); local parametr2=tonumber(PobierzElement(2)); return math.min(parametr1,parametr2); end; return p; izfvnzke0ghhl85w153o4rr52gfa9tv Pomoc:Spis treści/Wstęp 12 59247 555728 554178 2026-09-11T17:45:23Z Persino 2851 /* Wstęp */ 555728 wikitext text/x-wiki <noinclude><!-- -->{{UnikatowaStronaStart | nagłówek = {{Rozdział|Pomoc Wikibooks - Wstęp}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Rozdział|Koniec}} }}</noinclude> == Wstęp == * {{lr|Witamy nowicjuszy}} - ta strona jest dla nowych użytkowników polskiego {{NS|l=tak|pk=d}}, mówi jak czytać, przeglądać w księgozbiór, jak usuwać błędy z artykułów, pisania nowych tekstów i jak możesz pomóc przy tworzeniu nowych artykułów dla danych książek. * {{lr|Zasady i wskazówki}} - zawiera podstawowe zasady etyczne postępowania w projekcie, zasady przy tworzeniu treści podręczników, wykorzystywaniu w nich zasad stylistycznych. * {{lr|Szybka pomoc}} - ci, którzy nie mają czasu czytać zaawansowanych treści pomocowych, to muszą przeczytać, tą właśnie stronę (FAQ). * {{lr|Czym jest Wikibooks}} - mówi, czym {{NS|l=tak}} jest, a czym nie jest. * {{lr|Różnice między Wikipedią i Wikibooks}} - przedstawia, czym {{NS|l=tak|k=w|w=tak}} różni się od analogicznego projektu {{NS|l=tak|w=tak}}. == Współpraca == * {{lr|Dlaczego warto rozpocząć współpracę}} - przekazuje treści dlaczego tworzyć, czy nie tworzyć właśnie na tym projekcie, do jakiego kręgu czytelników pisać tam książki. * {{lr|Dlaczego używać wolnych podręczników}} - mówi, czym się różnią wolne od niewolnych książek, czy podręczniki (treści) są zupełnie bezpłatne, czy są aktualne, czy je można je wydrukować. == Informacje == * {{lr|Dlaczego nie pisać na Wikibooks}} - mówi dlaczego nie pisać książki na {{NS|l=tak|pk=mj}}, jeżeli na tych książkach chcesz zarabiać, a nie rozpowszechniać je jako zupełnie darmowe woluminy. * {{lr2|Wikietykieta}} i {{lp2|Wikietykieta}} - mówi o etyce, jak zachowywać na projekcie, na temat ocen poszczególnych książek, nawet ich autorów. ** {{lr|Neutralny punkt widzenia}} - mówi, jak pisać książki, artykuły, aby przedstawiały neutralny punkt widzenia, aby były bezstronne. * {{lp|Żargon użytkowników}} - zawiera dialekt użytkowników projektów {{NS|l=tak|k=mw}}. * {{lr|Informacje prawne}} - informacje, jakie powinny spełniać wszystkie książki na polskim {{NS|l=tak|pk=mj}}. * {{lr|Prawa autorskie}} - zawiera treści na temat praw autorskich poszczególnych książek, jak tworzyć, aby one tego nie naruszały, co robić, gdy napotkasz to. Mówi, gdy zajdziesz w internecie treści skopiowane z polskiego {{NS|l=tak}} przypisując sobie autorstwo, to co wtedy masz robić. {{BrClear}} <noinclude>{{UnikatowaStronaKoniec}}{{Kategoria|Pomoc - Spis treści}}</noinclude> 4jbt1ocjc9pasluzoalnmm2htgyyf5p Wikibooks:Moduły/Nazwy/Tom I 4 62922 555685 555666 2026-09-11T13:38:30Z Persino 2851 /* Funkcja biblioteczna */ 555685 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Nazwy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == Funkcje nazw nazwy przestrzeni nazw == Należy przeczytać wiadomości ze strony {{lru|Moduły/Nazwy}}, które są informacjami wstępnymi, by używać funkcji bibliotecznych: {{m|Nazwy|Np}} i {{m|Nazwy|NpDane}}, i z nimi skojarzonych szablonów, tzn.: {{s|Np}} i {{s|NpDane}}. Wiadomosci też stąd są bardzo potrzebne do dalszych modułów tomów tej publikacji, to znaczy do funkcji, czy szablonów, nazw. === {{Code|m.Np}} === ==== Odpowiednik szablonowy ==== Odpowiednik szablonowy jest pod nazwą {{s|Np}}, odpowiednik funkcji, w mechanizmie '''MediaWiki''', tzn.: {{Span|styl=color:blue;|<nowiki>{{ns:<nazwa przestrzeni kanoniczna lub nie, albo jej id>}}</nowiki>}}, format tego, bo to nie jest szablon, czy funkcja, tylko wywołanie parserowe, tego, w którym jej parametr, tylko przestrzeny w nim występuje, jej element jest podobny do jej wersji bibliotecznej, opisywanej funkcji. Format wersji bibliotecznej tej funkcji jest bardzo bodobny do jej wersji szablonowej, tylko jest inne uruchomienie, tam jest ramka, a tutaj wywołanie szablonowe. Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce. * Szablon {{s|Np}} korzysta z funkcji bibliotecznej {{m|Nazwy|Np}}, więc parametry obu są wręcz takie same, a nawet podobne. Chociaż ta sama nazwa funkcji w ramce i kodzie {{lpg|Lua}}, to używanie ich nie jest dokładnie takie samo, funkcja biblioteczna nie potrzebuje parametru {{Parametr|wyspecjalizowana|tak}}, a ramka już tak, a szablon {{s|Np}}, który korzysta z tej ramki, to nieobecność, lub obecność z wartością pustą, tego parametru powoduje, że przyjmowane są parametry rodzica, a nie dziecka, które wymagają jego niepustość. ==== Funkcja biblioteczna ==== Zestaw parametrów tej funkcji są to parametry nazwane podawane, w wersji tabelkowej,, w nawiasach klamerkowej, jak się to podaje w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. ; Paramery funkcji {{m|Nazwy|Np|...|wyspecjalizowana{{=}}tak}} lub funkcji bibliotecznej wykorzystującej opisywaną funkcję{{Dk}} {{OpisParametrów | 1 = Parametry podstawowe | nagłówek1=tak | 2 = {{Code|nazwa}} lub {{Code|1}} | _2 = Nazwa przestrzeni nazw, kanoniczna lub nie, lub {{Code|id}} danej przestrzeni. | 3 = {{Parametr|wyspecjalizowana|tak}} | _3 = Tylko dla tej funkcji wywołanej w postaci ramki w wikikodzie w szablonach, gdy do niej wsadzamy bezpośrednio jako dzieci, a w przypadku z rodzica to ten parametr jest niepotrzebny lub powinien przyjmować wartość pustą, | 4 = Zmienne puste lub nie, np. o wartości {{Code|tak}}, lub nie, podawane do tej funkcji są:| nagłówek4=tak | 5 = {{Code|przedmiotowa}} | _5 = Zamienia daną przestrzeń na jej nazwę przedmiotową, tzn. na przestrzenie o numerach {{Code|id}} parzyste. | 6 = {{Code|dyskusja}} | _6 = Zamienia daną przestrzeń na jej wersję dyskusji, tzn. na przestrzenie o numerach {{Code|id}} nieparzyste. | 7 = {{Code|kanoniczna}} | _7 = Zamienia nazwę przestrzeni lub {{Code|id}} danej przestrzeni na jej nazwę kanoniczną, tzn. na jej wersję angielską. | 8 = {{Code|z myślnikami dolnymi}} | _8 = Zamienia spację w nazwach przestrzenie nazw na dolne myślniki, | 9 = {{Code|wyświetlana}} | _9 = Ten parametr nie wpływa na sposób wyświetlania nazw przestrzeni, oprócz jednej przestrzeni nazw, której jest przestrzeń główna o nazwie kanonicznej {{Code|(main)}} lub niekanonicznej {{Code|(główna)}}, wtedy są wyświetlane zamiast ciągu pustego te nazwy w zależności od podanego parametru {{Code|kanoniczna}}, tj. czy ona jest pusta lub nie, lub niepodana. | 10 = {{Code|link}} | _10 = Drukuje link o nazwie referencji, którą jest nazwa wyświetlana danej przestrzeni nazw, lub jej {{Code|id}}, o adresie strony przekierowującej, której jest adres odniesienia podanej w tabeli powyżej dla tej funkcji lub szablonu {{s|Np}}. | 11 = {{Code|id}} | _11 = wyświetla id danej przestrzeni nazw. | 12 = {{Code|nazwij projektem}} | _12 = Powoduje, że wyświetlana jest nazwa projektu {{Code|Wikibooks}} w postaci rzeczywistej nazwy kanonicznej (używany wraz z parametrem {{Code|kanoniczna}}), tzn. w postaci nazwy {{Code|Project}}, lub bez tego parametru, w postaci nazwy nierzeczywistej niekanonicznej {{Code|Projekt}}. | 13 = {{Code|nazwij dyskusją projektu}} | _13 = Powoduje, że wyświetlana jest nazwa projektu {{Code|Dyskusja wikibooks}} w postaci rzeczywistej nazwy kanonicznej (używany wraz z parametrem {{Code|kanoniczna}}), tzn. w postaci nazwy {{Code|Project talk}}, lub bez tego parametru, w postaci nazwy nierzeczywistej niekanonicznej {{Code|Dyskusja projektu}}. | 14 = inne zmienne niepuste:|nagłówek14=tak | 15 = {{Code|istnieje}} | _15 = Zwraca wartość tekstową {{Code|(bląd)}}, gdy przestrzeń jest nieprawidłowa lub nie istnieje, w innym przypadku zwraca normalną wartość. | 16 = {{Code|wynik błędu nietekstowy}} | _16 = Używany z {{Code|istnieje}}, zwraca wartość w języku {{lpg|Lua}} wartość {{Code|nil}}, gdy wartość nazwy przestrzeni nazw lub {{Code|id}} jest nieprawidłowa lub nieznana. | 17 = Zwracana zmienna w postaci tabeli ze składowymi z pewnymi podzmiennymi:|nagłówek17=tak | 18 = {{Code|uchwyt}} | _18 = Zwraca uchwyt przestrzeni nazw do danej przestrzeni nazw. }} ===== Przykłady używania ===== ====== Podstawowe wywołanie ====== Podstawowe przykłady podstawowego wywołania funkcji, czyli uzyskiwania nazwy niekanonicznej z dowolnej nazwy przestrzeni kanonicznej, czy jej numeru {{Code|id}} (kodu danej przestrzeni nazw, który reprezentuje daną przestrzeń nazw przedmiotową, czy dyskusji), a więc: <syntaxhighlight lang="lua"> local nazwy_modul = require("Module:Nazwy"); ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_1 = nazwy_modul.Np{ [1] = "Szablon", }; ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_2 = nazwy_modul.Np{ [1] = "Template", }; ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_3 = nazwy_modul.Np{ [1] = 10, }; ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_4 = nazwy_modul.Np{ nazwa = "Szablon", }; ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_5 = nazwy_modul.Np{ nazwa = "Template", }; ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_6 = nazwy_modul.Np{ nazwa = 10, }; </syntaxhighlight> Te trzy pary wywołania wyświetlają ten sam wynik tzn. o takiej samej wartości, bo parametr {{Code|nazwa}} wskazuje na tą samą przestrzeń nazw, tylko one są rożnie wskazane. Został ta użyty parametr: {{Code|1}} lub {{Code|nazwa}}, które oznaczają to samo, czyli przestrzeń nazw w postaci kanonicznej, niekanonicznej, czy numeru {{Code|id}}, czyli identyfikatora przestrzeni nazw. Jako wartość uzyskujemy tam nazwę kanoniczną przestrzenina polskiem {{NS|l=tak|p=ie}}. Przestrzeń nazw może zawierać dowolnej wielkości litery, z dowolną liczbą odstępów z dolnymi spacjami lub normalnymi, jeżeli w nim one występują,wtedy zawsze oznaczają one tą samą przestrzeń, niezależnie jak ją zapiszemy, przykłady poniżej. Równie dobrze dowolną nazwę niekanoniczną możemy napisać, co jest uwidocznione w parametrze {{Code|nazwa}}, na wyjściu otrzymujemy w pełni sformatowaną nazwę niekanoniczną, która odpowiada jej odpowiednikowi niesformatowanemu: <syntaxhighlight lang="lua"> local nazwy_modul = require("Module:Nazwy"); -- Zwraca wartość: "Szablon": local nazwa_przestrzeni_1 = nazwy_modul.Np{ nazwa = "SZABLON", }; -- Zwraca wartość: "Szablon": local nazwa_przestrzeni_2 = nazwy_modul.Np{ nazwa = "TEMPLATE", }; -- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_3 = nazwy_modul.Np{ nazwa = "DYSKUSJA ___ ___ _ SZABLONU", }; -- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_4 = nazwy_modul.Np{ nazwa = "TEMPLATE_________TALK", }; </syntaxhighlight> ====== Nazwy kanoniczne i niekanoniczna oraz zamiana z jednej na drugą ====== Aby uzyskać nazwę z dowolnej nazwy, nawet też kanonicznej, czynie, czy też z numeru {{Code|id}} (identyfikatora przestrzeni nazw), wtedy należy podać parametr przestrzeni nazw, z dodatkowym parametrem {{Code|kanoniczna}}, w takim razie: <syntaxhighlight lang="lua"> local nazwy_modul = require("Module:Nazwy"); -- Uzyskujemy wartość: "Template": local nazwa_kanoniczna_1 = nazwy_modul.Np{ nazwa = "Szablon", kanoniczna = "tak", }; -- Uzyskujemy wartość: "Template": local nazwa_kanoniczna_2 = nazwy_modul.Np{ nazwa = "Template", kanoniczna = "tak", }; -- Uzyskujemy wartość: "Template": local nazwa_kanoniczna_3 = nazwy_modul.Np{ nazwa = 10, kanoniczna = "tak", }; </syntaxhighlight> * Według powyższego przykładu, ona, czyli przestrzeń nazw, jest zamieniana na sformatowaną nazwę kanoniczną, jako parametr może być nazwa niekanoniczna, kanoniczna, czy identyfikator przestrzeni nazw. Dowolną nazwę kanoniczną, czy nie, można zamienić na niekanoniczną, niezależnie w jakiej formie podamy przestrzeń nazw, może być to przekształcenie tożsamościowe, może być to w postaci identyfikatora tej przestrzeni, niezależnie jaką ją mamy na myśli, więc: <syntaxhighlight lang="lua"> local nazwy_modul = require("Module:Nazwy"); -- Uzyskujemy wartość: "Szablon": local nazwa_niekanoniczna = nazwy_modul.Np{ nazwa = "Template", }; </syntaxhighlight> * Wystarczy wtedy użyć tylko jednego parametru, nie trzeba używać większej liczby innych parametrów. ====== Nazwy przedmiotowe i dyskusji oraz przejścia pomiędzy nimi ====== Można też przechodzić z tej samej przestrzeni nazw w nią samą, lub do niego skojarzoną, tzn. z przedmiotowej do dyskusji lub odwrotnie, przykłady poniżej. Do tego celu używamy parametru {{Code|przedmiotowa}}, czyli do tłumaczenia nazwy przestrzeni nazw na jej wersję przedmiotową, tzn. na przestrzeń nazw o identyfikatorze parzystym. Można też użyć parametru {{Code|dyskusja}}, robiąca tłumaczenia na wersje dyskusji, o identyfikatorze nazwy przestrzeni nazw nieparzystym. Nie wolno używać tych parametrów, tych dwóch w jednym wywołaniu, bo może dojść do błędu funkcji w postaci komunikatu {{Code|(błąd)}}. Tłumaczona nazwa może być zarówno niekanoniczna, jak i kanoniczna, lub być zawarta w postaci identyfikatora przestrzeni nazw. Tutaj bez użycia żadnego parametru dodatkowego, wtedy otrzymujemy na wyjściu nazwę niekanoniczną. <syntaxhighlight lang="lua"> local nazwy_modul = require("Module:Nazwy"); -- Gdy nazwą przestrzeni jest nazwa niekanoniczna: ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_przedmotowej_1 = nazwy_modul.Np{ nazwa = "Dyskusja szablonu", przedmiotowa = "tak", }; ---- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_dyskusji_1 = nazwy_modul.Np{ nazwa = "Szablon", dyskusja = "tak", }; -- Gdy nazwą przestrzeni jest nazwa kanoniczna: ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_przedmotowej_2 = nazwy_modul.Np{ nazwa = "Template talk", przedmiotowa = "tak", }; ---- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_dyskusji_2 = nazwy_modul.Np{ nazwa = "Template", dyskusja = "tak", }; -- Gdy prrzestrzeń nazw jest w postaci numeru id: ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_przedmotowej_3 = nazwy_modul.Np{ nazwa = 11, przedmiotowa = "tak", }; ---- Zwraca wartość: szablon "Dyskusja szablonu": local nazwa_przestrzeni_dyskusji_3 = nazwy_modul.Np{ nazwa = 10, dyskusja = "tak", }; </syntaxhighlight> Gdy użyjemy dodatkowo parametr {{Code|kanoniczna}}, zamieniający dowolne przestrzenie nazw, niezależnie, czy jest zapisana w postaci identyfikatora, czy nie, gdy nazwą przestrzeni jest nazwa niekanoniczna (lub kanoniczna), to uzyskana nazwa przedmiotowa, czy dyskusji, jest nazwą kanoniczną, jako w wyniku: <syntaxhighlight lang="lua"> local nazwy_modul = require("Module:Nazwy"); -- Gdy nazwą przestrzeni jest nazwa niekanoniczna: ---- Zwraca wartość: "Template": local nazwa_przestrzeni_przedmotowej_1 = nazwy_modul.Np{ nazwa = "Dyskusja szablonu", przedmiotowa = "tak", kanoniczna = "tak", }; ---- Zwraca wartość: "Template talk": local nazwa_przestrzeni_dyskusji_1 = nazwy_modul.Np{ nazwa = "Szablon", dyskusja = "tak", kanoniczna = "tak", }; -- Gdy nazwą przestrzeni jest nazwa kanoniczna: ---- Zwraca wartość: "Template": local nazwa_przestrzeni_przedmotowej_2 = nazwy_modul.Np{ nazwa = "Template talk", przedmiotowa = "tak", kanoniczna = "tak", }; ---- Zwraca wartość: "Template talk": local nazwa_przestrzeni_dyskusji_2 = nazwy_modul.Np{ nazwa = "Template", dyskusja = "tak", kanoniczna = "tak", }; -- Gdy przestrzeń nazw jest w postaci numeru id: ---- Zwraca wartość: "Template": local nazwa_przestrzeni_przedmotowej_3 = nazwy_modul.Np{ nazwa = 11, przedmiotowa = "tak", kanoniczna = "tak", }; ---- Zwraca wartość: "Template talk": local nazwa_przestrzeni_dyskusji_3 = nazwy_modul.Np{ nazwa = 10, dyskusja = "tak", kanoniczna = "tak", }; </syntaxhighlight> Przejście z tej samej przestrzeni na tą samą możemy uzyskać, gdy nazwę przedmiotową tłumaczymy na przedmiotową, dyskusji na dyskusji, wtedy tłumaczenie z przestrzeni do przestrzeni jest tożsamościowe, niezależnie w jakiej formie podamy nazwę przestrzeni nazw jako parametr, tłumaczymy nazwę polską na tą samą nazwę też polską, o tej samej wartości lub jej odpowiednik angielski w wersji kanonicznej na jej wersję niekanoniczną, czy z numeru identyfikatorana jej odpowiednik nazwowy, ale nadal takie przejście jest tożsamosciowe, bo chodzi o tą samą przestrzeń nazw, mimo że użyliśmy tych parametrów: <syntaxhighlight lang="lua"> local nazwy_modul = require("Module:Nazwy"); -- Gdy nazwą przestrzeni jest nazwa niekanoniczna: ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_przedmotowej_1 = nazwy_modul.Np{ nazwa = "Szablon", przedmiotowa = "tak", }; ---- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_dyskusji_1 = nazwy_modul.Np{ nazwa = "Dyskusja szablonu", dyskusja = "tak",}; -- Gdy nazwą przestrzeni jest nazwa kanoniczna: ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_przedmotowej_2 = nazwy_modul.Np{ nazwa = "Template", przedmiotowa = "tak", }; ---- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_dyskusji_2 = nazwy_modul.Np{ nazwa = "Template talk", dyskusja = "tak",}; -- Gdy przestrzeń nazw jest w postaci numeru id: ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_przedmotowej_3 = nazwy_modul.Np{ nazwa = 10, przedmiotowa = "tak", }; ---- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_dyskusji_3 = nazwy_modul.Np{ nazwa = 11, dyskusja = "tak",}; </syntaxhighlight> Gdy użyjemy dodatkowo parametr {{Code|kanoniczna}}, to uzyskana nazwa przedmiotowa, czy dyskusji, wtedy mamy tłumaczenie tozsamościowe, jeśli chodzi o przestrzeń nazw, co one oznaczają, jeśli ona jest niekanoniczna, to uzyskamy jej nazwę, ale po angielsku, a jeśli jednak jest kanoniczna, to otrzymamy ten sam wynik: <syntaxhighlight lang="lua"> local nazwy_modul = require("Module:Nazwy"); -- Gdy nazwą przestrzeni jest nazwa niekanoniczna: ---- Zwraca wartość: "Template": local nazwa_przestrzeni_przedmotowej_1 = nazwy_modul.Np{ nazwa = "Szablon", przedmiotowa = "tak", kanoniczna = "tak", }; ---- Zwraca wartość: "Template talk": local nazwa_przestrzeni_dyskusji_1 = nazwy_modul.Np{ nazwa = "Dyskusja szablonu", dyskusja = "tak", kanoniczna = "tak", }; -- Gdy nazwą przestrzeni jest nazwa kanoniczna: ---- Zwraca wartość: Template": local nazwa_przestrzeni_przedmotowej_2 = nazwy_modul.Np{ nazwa = "Template", przedmiotowa = "tak", kanoniczna = "tak", }; ---- Zwraca wartość: "Template talk": local nazwa_przestrzeni_dyskusji_2 = nazwy_modul.Np{ nazwa = "Template talk", dyskusja = "tak", kanoniczna = "tak", }; -- Gdy przestrzeń nazw jest w postaci numeru id: ---- Zwraca wartość: ""Template": local nazwa_przestrzeni_przedmotowej_3 = nazwy_modul.Np{ nazwa = 10, przedmiotowa = "tak", kanoniczna = "tak", }; ---- Zwraca wartość: "Template talk": local nazwa_przestrzeni_dyskusji_3 = nazwy_modul.Np{ nazwa = 11, dyskusja = "tak", kanoniczna = "tak", }; </syntaxhighlight> ====== Nazwy przestrzeni z myślnikami dolnymi ====== Gdy używamy przestrzeni nazw, czy to w postaci kanonicznej, czy niekanonicznej, ze spacjami, to spacje są w nim zamieniane na dolne myślniki. Jeżeli parametr zawiera spacje lub dolne myślniki na końcach nazwy, to ona jest trimowana, wewnątrz, wtedy powtórzone spacje, lub myślniki dolne, są zamieniane na jeden dolny myślnik, jeżeli zamieniamy nazwę niekanoniczną na niekanoniczną, kanoniczną na kanoniczną. Gdy tak nie jest, tzn. gdy zamieniamy kanoniczną na niekanoniczną, niekanoniczną na kanoniczną, to wtedy jest podobnie. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Dyskusja_szablonu": local nazwa_przestrzeni_1 = nazwy_modul.Np{ nazwa = "Dyskusja szablonu", ["z myślnikami dolnymi"] = "tak", }; ---- Zwraca wartość: "Dyskusja_szablonu": local nazwa_przestrzeni_2 = nazwy_modul.Np{ nazwa = "Template talk", ["z myślnikami dolnymi"] = "tak", }; ---- Zwraca wartość: "Template_talk";: local nazwa_przestrzeni_3 = nazwy_modul.Np{ nazwa = "Dyskusja szablonu", kanoniczna = "tak", ["z myślnikami dolnymi"] = "tak", }; ---- Zwraca wartość: "Template_talk": local nazwa_przestrzeni_4 = nazwy_modul.Np{ nazwa = "Template talk", kanoniczna = "tak", ["z myślnikami dolnymi"] = "tak", }; </syntaxhighlight> ====== Nazwy wyświetlane przestrzeni nazw ====== Gdy nazwą przestrzeni nazw jest nazwa o charakterze niepustym, to przy parametrze {{Code|wyświetlana {{=}} "tak"}}, jest zamieniana ona na tą samą nazwę, gdy ona jest pusta, to jest zamieniana na szereg: {{Code|(główna)}} bez parametru {{Code|kanoniczna}}, a z tym parametrem na {{Code|(main)}}. Przykłady jak jest, jest powiedziane: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_1 = nazwy_modul.Np{ nazwa = "Szablon", wyświetlana = "", }; ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_2 = nazwy_modul.Np{ nazwa = "Szablon", wyświetlana = "tak", }; ---- Zwraca wartość: "": local nazwa_przestrzeni_3 = nazwy_modul.Np{ nazwa = "", wyświetlana = "", }; ---- Zwraca wartość: "(główna)": local nazwa_przestrzeni_4 = nazwy_modul.Np{ nazwa = "", wyświetlana = "tak", }; ---- Zwraca wartość: "(main)": local nazwa_przestrzeni_5 = nazwy_modul.Np{ nazwa = "", kanoniczna = "tak", wyświetlana = " tak", }; </syntaxhighlight> Na podstawie ramki powyżej w przestrzeniach nazw wyświetlanych dowiadujemy się, że jedyna różnica, w nazwach wyświetlanych lub nie, jest dla przestrzeni głównej, czyli dla przestrzeni nazw, której nazwa przestrzeni jest ciągiem pustym. ====== Wersja funkcji z wyświetlaną nazwą przestrzeni nazw z linkiem opisującej tą przestrzeń ====== Nazwę przestrzeni nazw zamieniamy na link z opisem, co robi dana przestrzeń nazw, z nazwą wyświetlaną niekanoniczną, bez parametru {{Code|kanoniczna}}, lub z tym,wtedy nazwę wyświetlaną jest kanoniczna. Gdy przestrzeń nazw jest główna, to wtedy nazwą linku jest {{Code|(główna)}} ({{Code|(main)}} z parametrem {{Code|kanoniczna}}). <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local nazwa_przestrzeni_nazw_1 = nazwy_modul.Np{ nazwa = "Szablon", link = "tak", }; local nazwa_przestrzeni_nazw_2 = nazwy_modul.Np{ nazwa = "Szablon", link = "tak", kanoniczna = "tak", }; local nazwa_przestrzeni_nazw_3 = nazwy_modul.Np{ nazwa = "", link = "tak", }; local nazwa_przestrzeni_nazw_4 = nazwy_modul.Np{ nazwa = "", link = "tak", kanoniczna = "tak", }; </syntaxhighlight> Przykłady funkcji w wyniku są w przykładach szablonowych: # {{Code|{{s|Np|nazwa{{=}}Szablon|link{{=}}tak}}}} → {{Tt|{{Np|nazwa=Szablon|link=tak}}}} # {{Code|{{s|Np|nazwa{{=}}Szablon|link{{=}}tak|kanoniczna{{=}}tak}}}} → {{Tt|{{Np|nazwa=Szablon|link=tak|kanoniczna=tak}}}} # {{Code|{{s|Np|nazwa{{=}}|link{{=}}tak}}}} → {{Tt|{{Np|nazwa=|link=tak}}}} # {{Code|{{s|Np|nazwa{{=}}|link{{=}}tak|kanoniczna{{=}}tak}}}} → {{Tt|{{Np|nazwa=|link=tak|kanoniczna=tak}}}} ====== Uzyskiwanie numeru {{Code|id}} danej przestrzeni nazw ====== Gdy chcemy uzyskać numer identyfikatora przestrzeni nazw, czy to z użyciem parametru {{Code|kanoniczna}}, czy nie, wtedy ten parametr jest w tym przypadku ignorowany, przy parametrze {{Code|id {{=}} "tak"}} na jej odpowiednik w postaci numeru, który charakteryzuje przestrzenie przedmiotowe i dyskusji, inna jest dla tych dwóch typów przestrzeni. Dla przestrzeni przedmiotowej {{Code|id}} jest parzyste, a dla dyskusji nieparzyste. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Uzyskany numer id nazwy przestrzeni nazw jest 10: local id_1 = nazwy_modul.Np{ nazwa = "Szablon", id = "tak", }; ---- Uzyskany numer id nazwy przestrzeni nazw jest 10: local id_2 = nazwy_modul.Np{ nazwa = "Szablon", kanoniczna = "tak", id = "tak", }; ---- Uzyskany numer id nazwy przestrzeni nazw jest 11: local id_3 = nazwy_modul.Np{ nazwa = "Dyskusja szablonu", id = "tak", }; ---- Uzyskany numer id nazwy przestrzeni nazw jest 11: local id_4 = nazwy_modul.Np{ nazwa = "Dyskusja szablonu", kanoniczna = "tak", id = "tak", }; </syntaxhighlight> ====== Uzyskiwanie nazwy projektu nazwy przedmiotowej i jej dyskusji, z kanonicznej lub nie, przestrzeni nazw ====== Gdy używamy przestrzeni nazw {{Np|Wikibooks|link=tak}} lub {{Np|Wikibooks|link=tak|dyskusja=tak}}, to je można tłumaczyć na je wersje czysto kanoniczne, tzn.: {{Np|Wikibooks|link=tak}} tłumaczymy na {{Np|Wikibooks|link=tak|nazwij projektem=tak}}, a {{Np|Wikibooks|link=tak|dyskusja=tak}} na {{Np|Wikibooks|link=tak|dyskusja=tak|nazwij dyskusją projektu=tak}}, gdy translacja jest na nazwę polską niekanoniczną, a gdy użyjemy parametru {{Code|kanoniczna}}, wtedy sytuacja jest inna: {{Np|Wikibooks|link=tak|kanoniczna=tak}} tłumaczymy na {{Np|Wikibooks|link=tak|nazwij projektem=tak|kanoniczna=tak}}, a {{Np|Wikibooks|link=tak|dyskusja=tak|kanoniczna=tak}} na {{Np|Wikibooks|link=tak|dyskusja=tak|nazwij dyskusją projektu=tak|kanoniczna=tak}}. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Projekt": local nazwa_przestrzeni_nazw_1 = nazwy_modul.Np{ nazwa = "Wikibooks", ["nazwij projektem"] = "tak", }; ---- Zwraca wartość: "Project": local nazwa_przestrzeni_nazw_2 = nazwy_modul.Np{ nazwa = "Wikibooks", ["nazwij projektem"] = "tak", kanoniczna = "tak", }; ---- Zwraca wartość: "Dyskusja projektu": local nazwa_przestrzeni_nazw_3 = nazwy_modul.Np{ nazwa = "Wikibooks", ["nazwij dyskusją projektu"] = "tak", dyskusja = "tak", }; ---- Zwraca wartość: "Project talk": local nazwa_przestrzeni_nazw_4 = nazwy_modul.Np{ nazwa = "Wikibooks", ["nazwij dyskusją projektu"] = "tak", kanoniczna = "tak", }; </syntaxhighlight> ====== Sprawdzanie, czy dana przestrzeń jest poprawnie podane, czy istnieje ====== Gdy używamy przestrzeni nieistniejącej bez parametru {{Code|istnieje {{=}} "tak" }}, wtedy na wyjściu otrzymamy to samo, tylko w wersji sformatowanej, a gdy użyjemy, wtedy pojawia tam się napis {{Code|(błąd)}}. Gdy parametrem jest znana funkcji przestrzeń nazw, to nie uzyskujemy błędu, tylko przepisaną sformatowaną nazwę. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_nazw_1 = nazwy_modul.Np{ nazwa = "Szablon", istnieje = "tak", }; ---- Zwraca wartość: "Moja przestrzeń": local nazwa_przestrzeni_nazw_2 = nazwy_modul.Np{ nazwa = "Moja przestrzeń", istnieje = "", }; ---- Zwraca wartość: "(błąd)": local nazwa_przestrzeni_nazw_3 = nazwy_modul.Np{ nazwa = "Moja przestrzeń", istnieje = "tak", }; </syntaxhighlight> ====== Łatwe sprawdzanie istnienia danej przestrzeni nazw ====== Gdy oprócz parametru {{Code|istnieje {{=}} "tak"}}, użyjemy {{Code|["wynik błędu nietekstowy"] {{=}} "tak"}}, wtedy dla nieznanej przestrzeni uzyskujemy wartość w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, czyli: {{Code|nil}}, a w wikikodzie natomiast uzyskujemy wartość pustą, co pomaga w sprawdzeniu, czy dana przestrzeń istnieje, ale dodatkowo trzeba użyć parametru {{Code|["wyświetlana"] {{=}} "tak"}}, by nie pomylić parametru błędu z przestrzenią główną, wtedy ta przestrzeń ma nazwę niepustą przy tych parametrach, bo wtedy mamy nazwę niekanoniczną {{Code|(główna)}}, kanoniczną, przy specjalnym parametrze, czyli: {{Code|(main)}}, wtedy możemy użyć parsera {{Code|{{s|#if:coś|wtedy|przeciwnie}}}}. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_nazw_1 = nazwy_modul.Np{ nazwa = "Szablon", istnieje = "tak", ["wynik błędu nietekstowy"] = "tak", }; ---- Zwraca wartość: "Moja przestrzeń": local nazwa_przestrzeni_nazw_2 = nazwy_modul.Np{ nazwa = "Moja przestrzeń", istnieje = "", ["wynik błędu nietekstowy"] = "tak", }; ---- Zwraca wartość: nil: local nazwa_przestrzeni_nazw_3 = nazwy_modul.Np{ nazwa = "Moja przestrzeń", istnieje = "tak", ["wynik błędu nietekstowy"] = "tak", }; </syntaxhighlight> ====== Uzyskiwanie uchwytu danej przestrzeni nazw analogicznie do funkcji {{LzLua|mw.site.namespaces}} ====== Uchwyt niskopoziomowy do danej przestrzeni nazw można uzyskać przy pomocy kodu, uzyskujemy dla tej tablicy przestrzennej, która jest połączona z metatabelką, dzięki której możemy podawać przestrzenie nazw w wersji niezależnie jakimi literami, z dowolną kliczbą odstępów, nawet zapisana dolnymi myślnikami: <syntaxhighlight lang="lua"> local uchwyt_1 = mw.site.namespaces["Szablon"]; local uchwyt_2 = mw.site.namespaces["Template"]; local uchwyt_3 = mw.site.namespaces[10]; </syntaxhighlight> Funkcja powyżej ignoruje wielkość liter w przestrzeni nazw oraz powtórzone odstępy zrealizowane za pomocą spacji lub dolnych myślników. To samo, ale wysokopoziomowe, można utworzyć przy pomocy parametru: {{Code|uchwyt}}, wtedy szablon z rzuci odwołanie do tej tabeli, ale nie zawsze tak jest, czasami, gdy jakieś przestrzenie nie istnieją na polskim {{NS|w=tak|l=tak|pk=mj}}, wtedy odwołujemy się do jej wersji pseudo tej tabeli: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local uchwyt_1 = nazwy_modul.Np{ nazwa = "Szablon", uchwyt = "tak", }; local uchwyt_2 = nazwy_modul.Np{ nazwa = "Template", uchwyt = "tak", }; local uchwyt_3 = nazwy_modul.Np{ nazwa = 10, uchwyt = "tak", }; </syntaxhighlight> Funkcja {{Code|nazwy_modul.Np}} jest bardziej ogólniejsza niż {{LzLua|mw.site.namespaces}}, ponieważ uwzględnia większą liczbę nazw przestrzeni nazw, bo ona uwzględnia nieznane przestrzenie i znane o nieznanych nazwach, i dlatego należy stosować tę funkcję, a nie dedykowaną tabelę z połączoną z metatabelką za pomocą funkcji {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. === {{Code|m.NpDane}} === ==== Odpowiednik szablonowy ==== Odpowiednik szablonowy jest pod nazwą {{s|NpDane}}. Jego parametry są podobne do jego wersji bibliotecznej. Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce. * Szablon {{s|NpDane}} korzysta z funkcji bibliotecznej {{m|Nazwy|NpDane}}, więc parametry obu są wręcz takie same, a nawet podobne. Chociaż ta sama nazwa funkcji w ramce i kodzie {{lpg|Lua}}, to używanie ich nie jest dokładnie takie samo, funkcja biblioteczna nie potrzebuje parametru {{Parametr|wyspecjalizowana|tak}}, a ramka już tak, a szablon {{s|NpDane}}, który korzysta z tej ramki, to nieobecność, lub obecność z wartością pustą, tego parametru powoduje, że przyjmowane są parametry rodzica, a nie dziecka, które wymagają jego niepustość. ==== Funkcja biblioteczna ==== Szablon służy przede wszystkim do tłumaczenia angielskich nazw przestrzeni nazw na ich wersję w jakimś języku i operacji odwrotnej, a także numer przestrzeni nazw na jej nazwę w nim angielską lub w jakimś języku, lub odwrotnie, umożliwia też na przetłumaczenie nazwy przestrzeni nazw lub identyfikatora przestrzeni na jej nazwę polską, jeżeli istnieje. Funkcja {{m|Nazwy|NpDane}} przyjmuje te same parametry, co {{m|Nazwy|Np}}, oprócz wywołania ramkowego: {{Code|uchwyt}} (która w tej funkcji w sposób inny jest zdefiniowana, nie jak w funkcji: {{m|Nazwy|Np}}), jak oba, którego tutaj w nim nie ma, a jako zwykła funkcja biblioteczna może przyjmować ten parametr. Te zmienne działają podobnie w obu procedurach, z tą różnicą, że mamy inny zestaw nazw przestrzeni nazw (czasami bez numerów {{Code|id}} - identyfikatorów tych obsługiwanych przestrzeni nazw, a te podstawowe one je mają, jeżeli da się je powiązać z pierwszą funkcją w drugiej, jedynie w takim przypadku one występują) i można też użyć parametrów dodatkowych, które są niedostępne w pierwszej funkcji, a w drugiej już tak. Dodatkowo on przyjmuje argumenty: {{OpisParametrów | 1 = Adres kodowy projektu siostrzanego lub lokalnego polskiego {{Code|Wikibooks}}:|nagłówek1=tak | 2 = {{Code|klucz projektu}} | _2 = Kody języka i projektu podana w jednej zmiennej oddzielone od siebie dwukropkami, może być dowolna liczba tych kodów. | 3 = {{Code|kod projektu}} | _3 = Kod projektu danego wiki. | 4 = {{Code|kod języka}} | _4 = kod języka danego wiki. | 5 = {{Code|po polsku}} |_5 = Tłumaczy nazwę kanoniczną danej przestrzeni nazw na jej wersję polską, tzn. na język polski, a jeżeli jej wersja polska nie istnieje, to pisze jej wersję w języku angielskim, czyli w postaci nazwy kanonicznej. | 6 = {{Code|awaryjnie}} | _6 = Za pomocą projektu {{NS|l=tak|k=d}} tłumaczy daną nazwę przestrzeni nazw w jednym języku (jej nazwę kanoniczną jakieś przestrzeni nazw) na drugi, gdy wartość jest pusta, to tłumaczy na jej nazwę kanoniczną, jeżeli, przy tym parametrze lub bez, jej wersja w innym danym języku nie istnieje zdefiniowana w module {{m|Nazwy/przestrzenie}}. | 7 = Parametry: {{Code|nazwij projektem}} i {{Code|nazwij dyskusją projektu}} używa się tak samo jak dla funkcji {{m|Nazwy|Np}}, tylko z różnicą, że w funkcji {{m|Nazwy|NpDane}} musimy skorzystać koniecznie z parametru {{Code|kanoniczna}} z wartością niepustą, a wtedy wydrukowane wartości są w postaci wersji kanonicznej w języku angielskim, tak jak z ostatnim szablonem.|nagłówek7=tak }} ===== Używanie kluczy projektu, kodów projektu i kodów języka ===== Kody nazw piszemy, jak zwykle, z małej litery, co jest zalecane, ale można je pisać z liter o dowolnej wielkości. ====== Użycie różnych kodów i ich równoważność ====== Kody projektu i języka możemy pisać ze względu na dwa sposoby, w zależności jakich zmiennych używamy, możemy pisać tzw. grupę tych kodów w jednej zmiennej, wtedy się liczy ostateczny adres do danego projektu w jakieś wersji językowej, tylko jeden, a nie n-wersji danego języka i m-wersji danego projektu, czyli: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local wynik = nazwy_modul.NpDane{ ..., ["klucz projektu"] = "en:de:w:ru:en:q:pt", ... }; </syntaxhighlight> * Najważniejsze są kody projektu końcowe, podobnie ma się sprawa z kodami języków, tutaj kodami projektów są: {{Code|w}} ({{NS|l=tak|k=w}}) i {{Code|q}} ({{NS|l=tak|k=q}}), a kodami języków są: {{Code|en}} ({{lpg|{{#invoke:lang|hasło|en}}}}), {{Code|de}} ({{lpg|{{#invoke:lang|hasło|de}}}}), {{Code|ru}} ({{lpg|{{#invoke:lang|hasło|ru}}}}), {{Code|en}} ({{lpg|{{#invoke:lang|hasło|en}}}}) i {{Code|pt}} ({{lpg|{{#invoke:lang|hasło|pt}}}}), czy końcowy kod projektu jest: {{Code|q}} ({{NS|l=tak|k=q}}) i kod języka {{Code|pt}} ({{lpg|{{#invoke:lang|hasło|pt}}}}). W powyższym przykładzie napisaliśmy mnóstwo kodów w postaci jednej zmiennej, to jest równoważne zapisowi, czyli ostatecznej wersji wspomnianej powyższego zapisu, też zapisaną za pomocą tej samej zmiennej: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local wynik_1 = nazwy_modul.NpDane{ ..., ["klucz projektu"] = "pt:q", ... }; local wynik_2 = nazwy_modul.NpDane{ ..., ["klucz projektu"] = "q:pt", ... }; </syntaxhighlight> Powyższy wynik rozpisujemy na dwie zmienne, w których podajemy tylko pojedyncze kody, a nie grupy, więc widziemy, ża zamiast podawania jednego parametru z interwiki, to możemy to rozbić na dwa parametry kodu projektu i języka, a nie używać to w jednej zmiennej, należy pamiętać, że w tych kodach, może być jedno interwiki, specjalnie dla projektu lub języka, do którego dana zmienna jest przystosowana: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local wynik = nazwy_modul.NpDane{ ..., ["kod projektu"] = "q", ["kod języka"] = "pt", ... }; </syntaxhighlight> ====== Nazwy wyświetlane przy użyciu tych kodów dla przestrzeni głównej ====== Nazwy bez użycia zmiennej powodujące wyświetlanie nazwy przestrzeni nazw '''głównej''' na różnych projektach w postaci nieprzetłumaczonej na język polski, wtedy uzyskujemy niezależnie od projektu wartość pustą, bo takie jest przedstawienie wartości niewyświetlanej przestrzeni głównej na każdym projekcie obsługujący przestrzenie nazw, czyli: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość równą ciągowi pustemu: "": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "", ["klucz projektu"] = "commons", }; ---- Zwraca wartość równą ciągowi pustemu: "": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "", ["kod projektu"] = "commons", }; </syntaxhighlight> A przy użyciu identyfikatora przestrzeni nazw przestrzeni głównej, wtedy uzyskujemy na wyjściu to samo, co powyżej, czyli wartość pustą, bo wartość {{Code|0}} jest odpowiednikiem przestrzeni głównej, czyli poniższe przykłady są odpowiedniami tych powyższych, czyli te dwa przykład, tak można powiedzieć, że to samo robią: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość równą ciągowi pustemu: "": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = 0, ["klucz projektu"] = "commons", }; ---- Zwraca wartość równą ciągowi pustemu: "": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = 0, ["kod projektu"] = "commons", }; </syntaxhighlight> 0 Przy użyciu zmiennej generującej wyświetlanie w postaci znaków o charakterze niepustej, wtedy jeżeli nie ma wartości kanonicznej dla danego języka projektu, to wyswietlana jest wartość {{Np|(main)|link=tak|kanoniczna=tak}}, a dla polskigo projektu {{Np|(main)|link=tak}}, a dla innych języków jest nazwa charakterystyczna dla danego języka pod warunkiem, jeżeli doda się tego obsługę, więc tego przykłady przy użyciu zmiennej {{Code|["wyświetlana"] {{=}} "tak"}}, więc: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość nazwy przestrzeni głównej: "(main)": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "", ["klucz projektu"] = "commons", ["wyświetlana"] = "tak", }; ---- Zwraca wartość nazwy przestrzeni głównej: "(main)": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "", ["kod projektu"] = "commons", ["wyświetlana"] = "tak", }; </syntaxhighlight> Przy użyciu identyfikatora przestrzeni nazw przestrzeni głównej, w takim przypadku uzyskujemy to samo co powyżej, tylko jest inaczej, oznaczana jest wtedy przestrzeń główna, dla tego samego projektu siostrzanego, w wersji charakterystycznej dla danego języka, tutaj dla angielskiego: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość nazwy przestrzeni głównej: "(main)": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = 0, ["klucz projektu"] = "commons", ["wyświetlana"] = "tak", }; ---- Zwraca wartość nazwy przestrzeni głównej: "(main)": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = 0, ["kod projektu"] = "commons", ["wyświetlana"] = "tak", }; </syntaxhighlight> ====== Nazwy wyświetlane przy użyciu tych kodów przetłumaczone je na język polski dla przestrzeni głównej ====== Z wyświetlaniem na ekranie przestrzeni nazw charakteryzujące się ciągiem niepustym mamy podobne wyniki, jak powyżej bez parametry {{Code|["wyświetlana"] {{=}} "tak"}}, tylko nazwa wyświetlana przestrzeni nazw jest po polsku (odpowiednia nazwa w języku polskim), a nie po angielsku (w języku danego projektu): Przy użyciu zmiennej generującej wyświetlanie w postaci znaków o charakterze niepustej, nazw przestrzeni nazw mający nazwy puste, ale zamienione na nazwy wyświetlane, ale w postaci języka polskiego, używając parametru {{Code|["po polsku"] {{=}} "tak"}}: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość nazwy przestrzeni głównej: "(główna)": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "", ["klucz projektu"] = "commons", ["wyświetlana"] = "tak", ["po polsku"] = "tak", }; ---- Zwraca wartość nazwy przestrzeni głównej: "(główna)": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "", ["kod projektu"] = "commons", ["wyświetlana"] = "tak", ["po polsku"] = "tak", }; </syntaxhighlight> Przy użyciu identyfikatora przestrzeni nazw głównej, czyli dla tej samej przestrzeni nazw, co powyżej, tylko ona jest inaczej oznaczana, to możemy zrobić to samo, co powyżej, tylko nazwa główna przestrzeni nazw jest inaczej zapisana, w postaci numerycznej, wtedy otrzymamy wynik taki sam, jak w powyższym przykładzie, bo w obu używaliśmy takiej samej przestrzeni, tylko różnie przepisaną: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość nazwy przestrzeni głównej: "(główna)": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = 0, ["klucz projektu"] = "commons", ["wyświetlana"] = "tak", ["po polsku"] = "tak", }; ---- Zwraca wartość nazwy przestrzeni głównej: "(główna)": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = 0, ["kod projektu"] = "commons", ["wyświetlana"] = "tak", ["po polsku"] = "tak", }; </syntaxhighlight> ====== Nazwy wyświetlane przy użyciu tych kodów dla przestrzeni innej niż główna ====== Nazwy bez użycia zmiennej powodujące wyświetlanie nazwy przestrzeni nazw '''niegłównej''' na różnych projektach w postaci nieprzetłumaczonej na język polski, tylko w wersji charakterystucznej dla języka danego projektu używaną w odwołaniu: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość równą ciągowi niepustemu: "Template": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "Template", ["klucz projektu"] = "commons", }; ---- Zwraca wartość równą ciągowi niepustemu: "Template": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "Template", ["kod projektu"] = "commons", }; </syntaxhighlight> A przy zamianie tej przestrzeni nazw w powyższym przykładzie na numer - identyfikator nazw, czyli {{Code|id}}, to identyfikator przestrzeni nazw, innej niż główna, z jej wersji nazwowej, otrzymamy wynik w postaci nazwy niepustej, bo to nie jest przestrzeń główna, oznaczana zerowy tym identyfikatorem, czyli w postaci tej liczby: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość równą ciągowi niepustemu: "Template": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = 10, ["klucz projektu"] = "commons", }; ---- Zwraca wartość równą ciągowi niepustemu: "Template": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = 10, ["kod projektu"] = "commons", }; </syntaxhighlight> Przy użyciu zmiennej generującej wyświetlanie w postaci znaków, o charakterze niepustości, przy użyciu tego parametru, otrzymujemy wynik, jak powyżej, bo nazwa wyświetlana przestrzeni jest od razu niepusta, bo przestrzeni nazw mają wartość niepustą, więc nie trzeba ich uznawać, że są inne: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość równą nazwie przestrzeni niegłównej: "Template": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "Template", ["klucz projektu"] = "commons", ["wyświetlana"] = "tak", }; ---- Zwraca wartość równą nazwie przestrzeni niegłównej: "Template": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "Template", ["kod projektu"] = "commons", ["wyświetlana"] = "tak", }; </syntaxhighlight> A gdy parametr {{Code|nazwa}} przyjmuje wartość liczbową w postaci identyfikatora {{Code|id}}, innej niż dla przestrzeni głównej, ale zapisaną dla tych samych przestrzeni nazw, jak powyżej, co czyni, że tutaj jest też podobnie, otzrymamy te same wartości, tylko jest inna reprezentacja parametrów wchodzących do funkcji, jak powyżej: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość równą nazwie przestrzeni niegłównej: "Template": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = 10, ["klucz projektu"] = "commons", ["wyświetlana"] = "tak", }; ---- Zwraca wartość równą nazwie przestrzeni niegłównej: "Template": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = 10, ["kod projektu"] = "commons", ["wyświetlana"] = "tak", }; </syntaxhighlight> Widzimy, jedynie dla przestrzeni niepustej, że użycie tego parametru, według przykładów powyżej, jest opcjonalne, a nawet zbędne, bo ten parametr w tym przypadku nic nie zmienia, zmienia tylko dla przestrzeni głównej, którego ciąg charakteryzujący tą przestrzeń jest pusty, a jej wersja wyświetlana posiada za to ciąg niepusty, o jej wersji kanonicznej {{Code|{{Np|(main)|link=tak|kanoniczna=tak}}}}, a w wersji polskiej {{Code|{{Np|(main)|link=tak}}}}, te nazwy można pomiędzy sobą tłumaczyć za pomocą funkcji {{m|Nazwy|NpDane}} lub szablonu {{s|NpDane}}. ====== Nazwy wyświetlane przy użyciu tych kodów przetłumaczone je na język polski dla przestrzeni innej niż główna ====== Z wyświetlaniem na ekranie przestrzeni nazw charakteryzujące ciągiem niepustym mamy podobne wyniki jak powyżej bez parametru {{Code|["wyświetlana"] {{=}} "tak"}}: Przy użyciu zmiennej generującej wyświetlanie w postaci znaków o charakterze niepustej przetłumaczonej na język polski, używając parametrów w postaci pewnych nazw niepusstych, dla projektów innych niż wq języku polskim, ale te przestrzenie nazw tłumaczymyna ich odpowiedniki polskie, jakie istnieją, na projektach właśnie, że polskich: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość równą nazwie przestrzeni niegłównej: "Szablon": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "Template", ["klucz projektu"] = "commons", ["po polsku"] = "tak", }; ---- Zwraca wartość równą nazwie przestrzeni niegłównej: "Szablon": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "Template", ["kod projektu"] = "commons", ["po polsku"] = "tak", }; </syntaxhighlight> Albo przy użyciu numeru {{Code|id}} (identyfikatora przestrzeni nazw), wtedy właśnie robimy to samo, co powyżej, tylko jest inna reprezentacja parametrów, ale ta sama przestrzeń, więc uzyskujemy te same wyniki, czyli o tej samej wartości, mimo, że wizulanie,a by inne parametry: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość równą nazwie przestrzeni niegłównej: "Szablon": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = 10, ["klucz projektu"] = "commons", ["po polsku"] = "tak", }; ---- Zwraca wartość równą nazwie przestrzeni niegłównej: "Szablon": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = 10, ["kod projektu"] = "commons", ["po polsku"] = "tak", }; </syntaxhighlight> Przy użyciu zmiennej generującej wyświetlanie, użzywając parametru wspoianego powyżej, w postaci znaków o charakterze niepustej przy użyciu tego parametru, co sugeruje, że ten argiment nic nie zmienia, ale jedynie wyświetla się to samo, co bez tego parametru: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość równą nazwie przestrzeni niegłównej: "Szablon": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "Template", ["klucz projektu"] = "commons", ["wyświetlana"] = "tak", ["po polsku"] = "tak", }; ---- Zwraca wartość równą nazwie przestrzeni niegłównej: "Szablon": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "Template", ["kod projektu"] = "commons", ["wyświetlana"] = "tak", ["po polsku"] = "tak", }; </syntaxhighlight> A tutaj przy użyciu identyfikatora przestrzeni nazw przestrzeni nazw niegłównej, czyli przestrzeni nazw charakteryzującej się jej wersją niewyświetlaną niepustą, z tymi samymi parametrami, co powyżej, z tymi samymi wartościami, tylko jest inna reprezentacja przestrzeni nazw: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość równą nazwie przestrzeni niegłównej: "Szablon": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = 10, ["klucz projektu"] = "commons", ["wyświetlana"] = "tak", ["po polsku"] = "tak", }; ---- Zwraca wartość równą nazwie przestrzeni niegłównej: "Szablon": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = 10, ["kod projektu"] = "commons", ["wyświetlana"] = "tak", ["po polsku"] = "tak", }; </syntaxhighlight> Widzimy, jedynie dla tej przestrzeni, że użycie wspomnianego tego parametru jest opcjonalne, bo nic w tym przypadki nie zmienia, bo przestrzeń nazw nie jest pusta, lub nie jest reprezentowana inaczej, niż przez liczbę {{Code|0}}. ===== Tłumaczenie nazw przestrzeni nazw z jednego języka na drugi ===== ====== Tłumaczenie nazw obcojęzycznych nazw przestrzeni nazw na jej wersję polską, tzn. jej język polski, i na język angielski, tzn. jej wersje angielską w postaci nazwy kanonicznej, albo identyfikator przestrzeni nazw lub operację przeciwną ====== Tłumaczenie na nazwę kanoniczną w języku angielskim, z nazwy polskiej, czy nazwy w innym języku, tutaj w języku polskim, w jakim ona jest jedynie dostępna, przy użyciu parametru {{Code|kanoniczna {{=}} "tak"}}: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Template": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "Szablon", ["klucz projektu"] = "pl:w", kanoniczna = "tak", }; ---- Zwraca wartość: "Template": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "Szablon", ["kod projektu"] = "w", ["kod języka"] = "pl", kanoniczna = "tak", }; </syntaxhighlight> Tłumaczenie identyfikatora przestrzeni nazw na nazwę kanoniczną, ale przestrzeni nazw są te same, co powyżej, tylko zamiast przestrzeni nazw: "Szablon", mamy to jej idenntyfiator, którym jest liczba: {{Code|10}}, wtedy otrzymamy te same wyniki, co powyżej: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Template": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = 10, ["klucz projektu"] = "pl:w", kanoniczna = "tak", }; ---- Zwraca wartość: "Template": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = 10, ["kod projektu"] = "w", ["kod języka"] = "pl", kanoniczna = "tak", }; </syntaxhighlight> Przypadek odwrotny, do poprzednich, dla tego samego projektu, gdy nie używamy tego parametru, ale przestrzenie nazw są tym razem po angielsku, jako nazwy kanoniczne, które są zamieniane na jej wersją charakterystyczną dla danego projektu, tutaj polską: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "Template", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "Template", ["kod projektu"] = "w", ["kod języka"] = "pl", }; </syntaxhighlight> Identyfikator przestrzeni nazw tłumaczymy na jego nazwę polską - ewentualnie, na wersję języka projektu, i dlatego tutaj używamy języka polskiego, ponieważ mamy do czynienia z projektem polskojęzycznym, bo kod języka projektu wskazuje tutaj na ten język: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = 10, ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = 10, ["kod projektu"] = "w", ["kod języka"] = "pl", }; </syntaxhighlight> ====== Tłumaczenie nazw przestrzeni na jej wersję w innych języku w jakikolwiek projekcie ====== Do tłumaczenia używamy parametru {{Code|awaryjnie}}, której użycie w funkcji {{m|Nazwy|NpDane}}, powoduje skorzystanie z bazy danym projektów {{Code|MediaWiki}}, czyli {{Code|{{NS|l=tak|w=tak|k=en:d|jw=tak}}}} (po angielsku), a inaczej {{Code|{{NS|l=tak|w=tak|k=d}}}} (po polsku): * Przy użyciu nazw przestrzeni nazw w postaci, nie identyfikatorów, nazwanej łańcuchem znaków,możemy daną przestrzeń przetłomaczyć na dany język, nie używając przy tym żadnych stron: {{Code|.json}}, w podstronach modułu {{Code|{{m|Nazwy/}}}}: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "Kategorie", ["klucz projektu"] = "de:w", awaryjnie = "tak", kanoniczna = "tak", }; local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "Category", ["klucz projektu"] = "de:w", awaryjnie = "tak", }; local nazwa_przestrzeni_nazw_3 = nazwy_modul.NpDane{ nazwa = "Категория", ["klucz projektu"] = "ru:w", awaryjnie = "tak", kanoniczna = "tak", }; local nazwa_przestrzeni_nazw_4 = nazwy_modul.NpDane{ nazwa = "Category", ["klucz projektu"] = "ru:w", awaryjnie = "tak", }; </syntaxhighlight> * Jako z ich wersją numeryczną, czyli w postaci identyfikatorów, nazwanej w postaci pewnego numeru, ale przestrzenie nazw są te same, co powyżej, tylko inaczej zapisane, a inne parametry są takie same, czyli z czterech przykładów generują się jedynie dwa, ale wyniki są te same: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = 14, ["klucz projektu"] = "de:w", awaryjnie = "tak", }; local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa 14, ["klucz projektu"] = "ru:w", awaryjnie = "tak", }; </syntaxhighlight> Przykłady tłumaczenia z jednej wersji językowej w danym języku na angielski (wersję kanoniczną) i odwrotnie # {{Code|{{s|NpDane|Kategorie|klucz projektu{{=}}de:w|awaryjnie{{=}}tak|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|Kategorie|klucz projektu=de:w|awaryjnie=tak|kanoniczna=tak}}}} # {{Code|{{s|NpDane|Category|klucz projektu{{=}}de:w|awaryjnie{{=}}tak}}}} → {{Tt|{{NpDane|Category|klucz projektu=de:w|awaryjnie=tak}}}} # {{Code|{{s|NpDane|Категория|klucz projektu{{=}}ru:w|awaryjnie{{=}}tak|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|Категория|klucz projektu=ru:w|awaryjnie=tak|kanoniczna=tak}}}} # {{Code|{{s|NpDane|Category|klucz projektu{{=}}ru:w|awaryjnie{{=}}tak}}}} → {{Tt|{{NpDane|Category|klucz projektu=ru:w|awaryjnie=tak}}}} Przykłady przy użyciu identyfikatorów: # {{Code|{{s|NpDane|14|klucz projektu{{=}}de:w|awaryjnie{{=}}tak}}}} → {{Tt|{{NpDane|Category|klucz projektu=de:w|awaryjnie=tak}}}} # {{Code|{{s|NpDane|14|klucz projektu{{=}}ru:w|awaryjnie{{=}}tak}}}} → {{Tt|{{NpDane|Category|klucz projektu=ru:w|awaryjnie=tak}}}} ===== Użycie parametru {{Code|link}} oraz zależność od projektu i języka, wyświetlanie nazw przestrzeni nazw po polsku ===== Przykłady poniżej i niektóre wywołania funkcji {{m|Nazwy|NpDane}} piszemy przy pomocy parametru {{Code|link}}, który posiłkujemy z {{Code|klucz projektu}}, przykładowo z pomożeniem użycia zmiennej {{Code|po polsku}}, ewentualnie z użyciem argumentu {{Code|kanoniczna}}, co powoduje wyświetlanie się linku do pewnej strony naa tym samym projekcie lub innym,a jeśli mamy nazwę kanoniczną, to otrzymamy w linku nazwę linku właśnie że wyświetlaną, np. w postaci: {{Np|(main)|link=tak}}: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "Szablon", link = "tak", ["klucz projektu"] = "pl:w", }; local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "Szablon", link = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; local nazwa_przestrzeni_nazw_3 = nazwy_modul.NpDane{ nazwa = "Template", link = "tak", ["klucz projektu"] = "en:w", ["po polsku"] = "tak", }; ---- Tutaj nazwa przestrzeni zostanie wyświetlona, jako nazwa linku, po angielsku, czyli w wersji kanonicznej local nazwa_przestrzeni_nazw_4 = nazwy_modul.NpDane{ nazwa = "Template", link = "tak", kanoniczna = "tak", ["klucz projektu"] = "en:w", ["po polsku"] = "tak", }; local nazwa_przestrzeni_nazw_5 = nazwy_modul.NpDane{ nazwa = "", link = "tak", ["klucz projektu"] = "en:w", }; local nazwa_przestrzeni_nazw_6 = nazwy_modul.NpDane{ nazwa = "", link = "tak", kanoniczna = "tak", ["klucz projektu"] = "en:w", }; local nazwa_przestrzeni_nazw_7 = nazwy_modul.NpDane{ nazwa = "", link = "tak", ["klucz projektu"] = "en:w", ["po polsku"] = "tak", }; ---- Tutaj nazwa przestrzeni zostanie wyświetlona, jako nazwa linku, po angielsku, czyli w wersji kanonicznej local nazwa_przestrzeni_nazw_8 = nazwy_modul.NpDane{ nazwa = "", link = "tak", kanoniczna = "tak", ["klucz projektu"] = "en:w", ["po polsku"] = "tak", }; </syntaxhighlight> Teraz będziemy, to robili przy użyciu identyfikatorów przestrzeni nazw, który będziemy tłumaczyć na jego wersję charakterystyczną dla danego projektu, nazwę kanoniczną lub na jego odpowiednik polski, ale mamy te same przykłady, co powyżej, bo te same przestrzenie nazw, tylko z tą różnicą, że ona jest inaczej zapisana, więc otrzymamy te same wyniki, więc: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = 10, link = "tak", ["klucz projektu"] = "pl:w", }; local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = 10, link = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; local nazwa_przestrzeni_nazw_3 = nazwy_modul.NpDane{ nazwa = 10, link = "tak", ["klucz projektu"] = "en:w", ["po polsku"] = "tak", }; ---- Tutaj nazwa przestrzeni zostanie wyświetlona, jako nazwa linku, po angielsku, czyli w wersji kanonicznej local nazwa_przestrzeni_nazw_4 = nazwy_modul.NpDane{ nazwa = 10, link = "tak", kanoniczna = "tak", ["klucz projektu"] = "en:w", ["po polsku"] = "tak", }; local nazwa_przestrzeni_nazw_5 = nazwy_modul.NpDane{ nazwa = 0, link = "tak", ["klucz projektu"] = "en:w", }; local nazwa_przestrzeni_nazw_6 = nazwy_modul.NpDane{ nazwa = 0, link = "tak", kanoniczna = "tak", ["klucz projektu"] = "en:w", }; local nazwa_przestrzeni_nazw_7 = nazwy_modul.NpDane{ nazwa = 0, link = "tak", ["klucz projektu"] = "en:w", ["po polsku"] = "tak", }; ---- Tutaj nazwa przestrzeni zostanie wyświetlona, jako nazwa linku, po angielsku, czyli w wersji kanonicznej local nazwa_przestrzeni_nazw_8 = nazwy_modul.NpDane{ nazwa = 0, link = "tak", kanoniczna = "tak", ["klucz projektu"] = "en:w", ["po polsku"] = "tak", }; </syntaxhighlight> ---- Przykłady funkcji w wyniku są: # {{Code|{{s|NpDane|nazwa{{=}}Szablon|link{{=}}tak|klucz projektu{{=}}pl:w}}}} → {{Tt|{{NpDane|nazwa=Szablon|link=tak|klucz projektu=pl:w}}}} # {{Code|{{s|NpDane|nazwa{{=}}Szablon|link{{=}}tak|klucz projektu{{=}}pl:w|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=Szablon|link=tak|klucz projektu=pl:w|kanoniczna=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}|link{{=}}tak|klucz projektu{{=}}pl:w}}}} → {{Tt|{{NpDane|nazwa=|link=tak|klucz projektu=pl:w}}}} # {{Code|{{s|NpDane|nazwa{{=}}|link{{=}}tak|klucz projektu{{=}}pl:w|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=|link=tak|klucz projektu=pl:w|kanoniczna=tak}}}} Gdy parametr {{Code|nazwa}} jest liczbą, odpowiedniki tych samych przykładów, co powyżej, tylko przestrzeń nazw jest w postaci numerycznej: # {{Code|{{s|NpDane|nazwa{{=}}10|link{{=}}tak|klucz projektu{{=}}pl:w}}}} → {{Tt|{{NpDane|nazwa=10|link=tak|klucz projektu=pl:w}}}} # {{Code|{{s|NpDane|nazwa{{=}}10|link{{=}}tak|klucz projektu{{=}}pl:w|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=10|link=tak|klucz projektu=pl:w|kanoniczna=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}0|link{{=}}tak|klucz projektu{{=}}pl:w}}}} → {{Tt|{{NpDane|nazwa=0|link=tak|klucz projektu=pl:w}}}} # {{Code|{{s|NpDane|nazwa{{=}}0|link{{=}}tak|klucz projektu{{=}}pl:w|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=0|link=tak|klucz projektu=pl:w|kanoniczna=tak}}}} ---- ---- Inne przykłady, projektu niepolskiego, ale mającej jego wersje polską: # {{Code|{{s|NpDane|nazwa{{=}}Template|link{{=}}tak|klucz projektu{{=}}en:w|po polsku{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=Template|link=tak|klucz projektu=en:w|po polsku=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}Template|link{{=}}tak|klucz projektu{{=}}en:w|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=Template|link=tak|klucz projektu=en:w|kanoniczna=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}|link{{=}}tak|klucz projektu{{=}}en:w|po polsku{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=|link=tak|klucz projektu=en:w|po polsku=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}|link{{=}}tak|klucz projektu{{=}}en:w|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=|link=tak|klucz projektu=pl:w|kanoniczna=tak}}}} Gdy parametr {{Code|nazwa}} jest liczbą, odpowiedniki przykładów powyższych z innym przedstawieniem przestrzeni nazw: # {{Code|{{s|NpDane|nazwa{{=}}10|link{{=}}tak|klucz projektu{{=}}en:w|po polsku{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=10|link=tak|klucz projektu=en:w|po polsku=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}10|link{{=}}tak|klucz projektu{{=}}en:w|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=10|link=tak|klucz projektu=en:w|kanoniczna=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}0|link{{=}}tak|klucz projektu{{=}}en:w|po polsku{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=0|link=tak|klucz projektu=en:w|po polsku=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}0|link{{=}}tak|klucz projektu{{=}}en:w|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=0|link=tak|klucz projektu=pl:w|kanoniczna=tak}}}} ---- ---- A dla projektu niemającej wersji polskiej, np. tylko wersję angielską: # {{Code|{{s|NpDane|nazwa{{=}}Template|link{{=}}tak|klucz projektu{{=}}commons|po polsku{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=Template|link=tak|klucz projektu=commons|po polsku=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}Template|link{{=}}tak|klucz projektu{{=}}commons|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=Template|link=tak|klucz projektu=commons|kanoniczna=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}|link{{=}}tak|klucz projektu{{=}}commons|po polsku{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=|link=tak|klucz projektu=commons|po polsku=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}|link{{=}}tak|klucz projektu{{=}}commons|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=|link=tak|klucz projektu=commons|kanoniczna=tak}}}} Gdy parametr {{Code|nazwa}} jest liczbą, wtedy mamy te same przykłady, co powyżej, tylko ta sama przestrzeń nazw jest w innej postaci przedstawiona: # {{Code|{{s|NpDane|nazwa{{=}}10|link{{=}}tak|klucz projektu{{=}}commons|po polsku{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=10|link=tak|klucz projektu=commons|po polsku=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}10|link{{=}}tak|klucz projektu{{=}}commons|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=10|link=tak|klucz projektu=commons|kanoniczna=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}0|link{{=}}tak|klucz projektu{{=}}commons|po polsku{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=0|link=tak|klucz projektu=commons|po polsku=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}0|link{{=}}tak|klucz projektu{{=}}commons|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=0|link=tak|klucz projektu=commons|kanoniczna=tak}}}} ===== Zamiana przestrzeni nazw przedmiotowej na dyskusji lub przeciwnie, i transformacje tożsame ===== * Używać tu będziemy dodatkowo parametrów: {{Code|przedmiotowa}} - zamiany przestrzeni nazw na przedmiotową, czy: {{Code|dyskusja}} - na dyskusji. Można też przechodzić z tej samej przestrzeni nazw w nią samą, lub do niego skojarzonej, tzn. z przedmiotowej do dyskusji lub odwrotnie, wtedy w tym przypadku otrzymujemy nazwę po polsku, dla poskich projektów, dla projektów w danym języku, na nazwę w danym języku, przykłady: <syntaxhighlight lang="lua"> local nazwy_modul = require("Module:Nazwy"); -- Gdy nazwą przestrzeni jest nazwa niekanoniczna: ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_przedmotowej_1 = nazwy_modul.NpDane{ nazwa = "Dyskusja szablonu", przedmiotowa = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_dyskusji_1 = nazwy_modul.NpDane{ nazwa = "Szablon", dyskusja = "tak", ["klucz projektu"] = "pl:w", }; -- Gdy nazwą przestrzeni jest nazwa kanoniczna ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_przedmotowej_2 = nazwy_modul.NpDane{ nazwa = "Template talk", przedmiotowa = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_dyskusji_2 = nazwy_modul.NpDane{ nazwa = "Template", dyskusja = "tak", ["klucz projektu"] = "pl:w", }; -- Gdy prrzestrzeń nazw jest w postaci jej numeru id ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_przedmotowej_3 = nazwy_modul.NpDane{ nazwa = 11, przedmiotowa = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_dyskusji_3 = nazwy_modul.NpDane{ nazwa = 10, dyskusja = "tak", ["klucz projektu"] = "pl:w", }; </syntaxhighlight> Gdy użyjemy dodatkowo parametr {{Code|kanoniczna}}, wtedy otrzymujemy te nazwy w postaci nazwy w języku angielskim (kanoniczne) tych przestrzeni nazw, są te same przykłady, co powyżej, tylko jest inna wersja językowa w wyniku tej samej otrzymanej przestrzeni nazw: <syntaxhighlight lang="lua"> local nazwy_modul = require("Module:Nazwy"); -- Gdy nazwą przestrzeni jest nazwa niekanoniczna: ---- Zwraca wartość: "Template": local nazwa_przestrzeni_przedmotowej_1 = nazwy_modul.NpDane{ nazwa = "Dyskusja szablonu", przedmiotowa = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Template talk": local nazwa_przestrzeni_dyskusji_1 = nazwy_modul.NpDane{ nazwa = "Szablon", dyskusja = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", -- Gdy nazwą przestrzeni jest nazwa kanoniczna: ---- Zwraca wartość: Template": local nazwa_przestrzeni_przedmotowej_2 = nazwy_modul.NpDane{ nazwa = "Template talk", przedmiotowa = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Template talk": local nazwa_przestrzeni_dyskusji_2 = nazwy_modul.NpDane{ nazwa = "Template", dyskusja = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; -- Gdy przestrzeń nazw jest w postaci jej numeru id: ---- Zwraca wartość: ""Template": local nazwa_przestrzeni_przedmotowej_3 = nazwy_modul.NpDane{ nazwa = 11, przedmiotowa = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Template talk": local nazwa_przestrzeni_dyskusji_3 = nazwy_modul.NpDane{ nazwa = 10, dyskusja = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; </syntaxhighlight> Przejście z tej samej przestrzeni na tą samą możemy uzyskać to wtedy, tzw. przejście tożsamościowe, poprzez tłumaczenie nazw dyskusji na dysusji, i nazw przedmiotowych na przedmiotowe, dla róznych projektów, nie tylko polskich, a tutaj mamy dla języka polskiego, tylko repezentacja językowa może być inna, tutaj jest ta polska (w wersji niekanonicznej) i angielska (w wersji kanonicznej): <syntaxhighlight lang="lua"> local nazwy_modul = require("Module:Nazwy"); -- Gdy nazwą przestrzeni jest nazwa niekanoniczna, gdy w ty przypadku chcemy uzyskać nazwę charakterystyczną dla danego języka danego projektu: ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_przedmotowej_1 = nazwy_modul.NpDane{ nazwa = "Szablon", przedmiotowa = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_dyskusji_1 = nazwy_modul.NpDane{ nazwa = "Dyskusja szablonu", dyskusja = "tak", ["klucz projektu"] = "pl:w", }; -- Gdy nazwą przestrzeni jest nazwą kanoniczną: ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_przedmotowej_2 = nazwy_modul.NpDane{ nazwa = "Template", przedmiotowa = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_dyskusji_2 = nazwy_modul.NpDane{ nazwa = "Template talk", dyskusja = "tak", ["klucz projektu"] = "pl:w", }; -- Gdy przestrzeń nazw jest w postaci jej numeru id: ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_przedmotowej_3 = nazwy_modul.NpDane{ nazwa = 10, przedmiotowa = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_dyskusji_3 = nazwy_modul.NpDane{ nazwa = 11, dyskusja = "tak", ["klucz projektu"] = "pl:w", }; </syntaxhighlight> Gdy użyjemy dodatkowo parametr {{Code|kanoniczna}}, uzyskamy nazwę angielską danej przestrzeni nazw, nawet gdy to jest przestrzeń podana w języku polskim, dla polskiego projektu, lub w jezyku charakterystycznym dla danego projektu, jeżeli mamy to w bazie przestrzeni nazw w formie pliku {{Code|.json}}, podane w podstronach modułu {{m|Nazwy/}}, to te nazwy wtedy obsługuje: <syntaxhighlight lang="lua"> local nazwy_modul = require("Module:Nazwy"); -- Gdy nazwą przestrzeni jest nazwą niekanoniczną: ---- Zwraca wartość: "Template": local nazwa_przestrzeni_przedmotowej_1 = nazwy_modul.NpDane{ nazwa = "Szablon", przedmiotowa = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Template talk": local nazwa_przestrzeni_dyskusji_1 = nazwy_modul.NpDane{ nazwa = "Dyskusja szablonu", dyskusja = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; -- Gdy nazwą przestrzeni jest nazwą kanoniczną: ---- Zwraca wartość: Template": local nazwa_przestrzeni_przedmotowej_2 = nazwy_modul.NpDane{ nazwa = "Template", przedmiotowa = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Template talk": local nazwa_przestrzeni_dyskusji_2 = nazwy_modul.NpDane{ nazwa = "Template talk", dyskusja = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; -- Gdy przestrzeń nazw jest w postaci jej numeru id: ---- Zwraca wartość: "Template": local nazwa_przestrzeni_przedmotowej_3 = nazwy_modul.NpDane{ nazwa = 10, przedmiotowa = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", } ---- Zwraca wartość: "Template talk": local nazwa_przestrzeni_dyskusji_3 = nazwy_modul.NpDane{ nazwa = 11, dyskusja = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; </syntaxhighlight> ===== Nazwy przestrzeni z myślnikami dolnymi ===== Jeżeli nazwy danych przestrzeni, niezależnie, czy są w postaci niekanonicznej, czy nie, ale jeżeli w nazwie zawierają spację, to one jako w wyniku zamiast nich będą miały dolny myślnik zamiast spacji, gdy użyjemy parametru: {{Code|["z myślnikami dolnymi"] {{=}} "tak"}}, czyli: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Dyskusja_szablonu": local nazwa_przestrzeni_1 = nazwy_modul.NpDane{ nazwa = "Dyskusja szablonu", ["z myślnikami dolnymi"] = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Dyskusja_szablonu": local nazwa_przestrzeni_2 = nazwy_modul.NpDane{ nazwa = "Template talk", ["z myślnikami dolnymi"] = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Template_talk";: local nazwa_przestrzeni_3 = nazwy_modul.NpDane{ nazwa = "Dyskusja szablonu", kanoniczna = "tak", ["z myślnikami dolnymi"] = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Template_talk": local nazwa_przestrzeni_4 = nazwy_modul.NpDane{ nazwa = "Template talk", kanoniczna = "tak", ["z myślnikami dolnymi"] = "tak", ["klucz projektu"] = "pl:w", }; </syntaxhighlight> ===== Uzyskiwanie kanonicznej nazwy projektu, nazwy przedmiotowej i jej dyskusji, z jej odpowiednika nazwy przestrzeni nazw ===== Dla przestrzeni nazw: {{NpDane|Wikipedia|link=tak|klucz projektu=pl:w}}, jej nazwy projektowej: {{NpDane|Wikipedia|link=tak|kanoniczna=tak|nazwij projektem=tak|klucz projektu=pl:w}} możemy uzyskać, gdy dla funkcji {{m|Nazwy|NpDane}} podamy parametr: {{Code|["nazwij projektem"] {{=}} "tak"}}, dla przestrzeni przedmiotowej lub dyskusji: {{NpDane|Wikipedia talk|link=tak|klucz projektu=pl:w}}, jej nazwy projektowej: {{NpDane|Wikipedia talk|link=tak|kanoniczna=tak|nazwij dyskusją projektu=tak|klucz projektu=pl:w}}, gdy podamy parametr {{Code|["nazwij dyskusją projektu"] {{=}} "tak"}}, czyli: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Wikipedia": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "Wikipedia", ["nazwij projektem"] = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Project": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "Wikipedia", ["nazwij projektem"] = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Project": local nazwa_przestrzeni_nazw_3 = nazwy_modul.NpDane{ nazwa = "Dyskusja Wikipedii", ["nazwij projektem"] = "tak", przedmiotowa = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Dyskusja Wikipedii": local nazwa_przestrzeni_nazw_4 = nazwy_modul.NpDane{ nazwa = "Wikipedia", ["nazwij dyskusją projektu"] = "tak", dyskusja = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Project talk": local nazwa_przestrzeni_nazw_5 = nazwy_modul.NpDane{ nazwa = "Dyskusja Wikipedii", ["nazwij dyskusją projektu"] = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Project talk": local nazwa_przestrzeni_nazw_6 = nazwy_modul.NpDane{ nazwa = "Wikipedia", ["nazwij dyskusją projektu"] = "tak", dyskusja = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; </syntaxhighlight> ===== Różne wersje sprawdzania istnienia przestrzeni nazw ===== ====== Sprawdzanie, czy dana przestrzeń jest poprawnie podane, czy istnieje ====== Możemy sprawdzić, istnienie podanej przestrzeni nazw poprzez użycie parametru {{Code|istnieje}} z wartością niepustą, wtedy dla obu jej wartości uzyskujemy wyniki, wskazujać, czy istnieją przestrzenie nazw istniejące i które nie mają prawa istnieć z racji bytu, w pierwszym przypadku otrzymamy treściwy wynik, a w drugim komunikatro błędzie: <syntaxhighlight lang="lua">0 local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "Szablon", istnieje = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Moja przestrzeń": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "Moja przestrzeń", istnieje = "", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "(błąd)": local nazwa_przestrzeni_nazw_3 = nazwy_modul.NpDane{ nazwa = "Moja przestrzeń", istnieje = "tak", ["klucz projektu"] = "pl:w", }; </syntaxhighlight> Gdy dana przestrzeń nie istnieje przy użyciu wartości niepustej parametru {{Code|istnieje}}, wtedy otrzymujemy błąd funkcji w postaci tekstu {{Code|(błąd)}}, a gdy nie podamy tego parametru, to otrzymamy nazwę sformatowaną danej nieznanej przestrzeni nazw po usunięciu wszystkich spacji lub dolnych myślników na początku i końcu ciągu oraz zbędnych wewnątrz tego ciągu i zastąpieniu ich kolejnych jedną spacją. A gdy jednak przestrzeń nazw istnieje, to funkcja zachowuje się tak, jakby nie podano tego parametru. ====== Łatwe sprawdzanie istnienia danej przestrzeni nazw ====== Sprawdzamy tutaj istnienie podanej przestrzeni nazw w parserach wikikodu {{Code|MediaWiki}}, wtedy dla nieistniejącej przestrzeni nazw otrrzymamy wynik pusty, a dla istniejącej już nie, wyjątkiem jest przestrzeń główna, dla której wartość otrzymana jest pusta, co nie trudno jest odróżnić od stanu błędu funkcji, chyba, że użyjemy pewnego parametru opisywanego poniżej: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "Szablon", istnieje = "tak", ["wynik błędu nietekstowy"] = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Moja przestrzeń": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "Moja przestrzeń", istnieje = "", ["wynik błędu nietekstowy"] = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: nil: local nazwa_przestrzeni_nazw_3 = nazwy_modul.NpDane{ nazwa = "Moja przestrzeń", istnieje = "tak", ["wynik błędu nietekstowy"] = "tak", ["klucz projektu"] = "pl:w", }; </syntaxhighlight> W kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}} powyższe wywołanie przy nieznanych przestrzeniach przyjmuje wartość {{Code|nil}} (ostatni przykład), a wikikodzie w szablonach wartość pustą: "". A jeżeli chcemy sprawdzić, za pomocą funkcji parsera wikikodu: {{Code|{{s|#if:coś|wtedy|przeciwnie}}}}, używając odpowiednika szablonowego {{s|NpDane}}, wtedy musimy użyć parametru: {{Code|["wynik błędu nietekstowy"] {{=}} "tak"}}, używany z: {{Code|istnieje {{=}} "tak"}}, gdy dana przestrzeń nie istnieje, wtedy uzyskamy wartość pustą (bo wartość {{Code|nil}} jest tłumaczone na to), a żeby odróżnić ją od nazwy przestrzeni nazw głównej, to należy dodatkowo użyć: {{Code|["wyświetlana"] {{=}} "tak"}}, wtedy dla wartości pustej tej nazwy przestrzeni nazw, uzyskujemy w wyniku czego nie wartość pustą, czyli: {{Code|(główna)}} dla projektów polskich, lub po użyciu parametru {{Code|["po polsku"] {{=}} "tak"}} z wartością niepustą albo {{Code|(main)}} dla przestrzeni angielskich bądź innych, gdy nie ma obsługi w bazie przestrzeni nazw, tę nazwę można uzyskać też przy parametrze {{Code|kanoniczna {{=}} "tak"}} dla każdego obsługiwanego projektu {{Strong|wiki}}, więc przy takich realiach łatwo to odróżnić od komunikatu błędu tej funkcji. ===== Uzyskiwanie uchwytu danej przestrzeni nazw, analogicznie do funkcji {{Code|mw.site.namespaces}} (ale w sposób inny sformułowana), ale też z innym zestawem parametrów ===== Uchwyt niskopoziomowy do danej przestrzeni nazw nie można uzyskać przy pomocy kodu z: {{Code|mw.site.namespaces}}, ponieważ jest on dla przestrzeni na bieżącym projekcie, a tutaj mamy siostrzany. Funkcja uzyskująca uchwyt ignoruje wielkość liter w przestrzeni nazw oraz powtórzone odstępy zrealizowane za pomocą spacji lub dolnych myślników. To wysokopoziomowe uzyskanie uchwytu można utworzyć przy pomocy parametru: {{Code|uchwyt}}: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local uchwyt_1 = nazwy_modul.NpDane{ nazwa = "Szablon", uchwyt = "tak", ["klucz projektu"] = "pl:w", }; local uchwyt_2 = nazwy_modul.NpDane{ nazwa = "Template", uchwyt = "tak", ["klucz projektu"] = "pl:w", }; local uchwyt_3 = nazwy_modul.NpDane{ nazwa = 10, uchwyt = "tak", ["klucz projektu"] = "pl:w", }; </syntaxhighlight> Funkcja {{Code|nazwy_modul.NpDane}} jest bardziej ogólniejsza niż {{Code|mw.site.namespaces}} na projekcie bieżącym, ponieważ ona uwzględnia inne projekty niż polski {{NS|l=tak|w=tak}}, bo uwzględnia większą liczbę nazw przestrzeni nazw, czyli ona obejmuje wszystkie znane przestrzenie nazw, i dlatego należy stosować tę funkcję, a nie dedykowaną tabelę z połączoną z metatabelką za pomocą funkcji {{lpg|Lua}}. == Funkcje nazw serwisowych projektów siostrzanych polskiego {{NS|w=tak|l=tak|pk=d}} == === {{Code|m.NAZWASERWISU()}} === ==== Odpowiednik szablonowy ==== Odpowiednik szablonowy jest pod nazwą {{s|NAZWASERWISU}} (skrót: {{s|NS}}). Jego parametry są podobne do jego wersji bibliotecznej. Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce. ==== Funkcja biblioteczna ==== Szablon jest używany do uzyskania nazwy serwisu danej wiki, ewentualnie w postaci linku do strony głównej projektu danej wiki lub do artykułu o danej wiki na {{lpg|Wikipedia|Wikipedii}}, w jakieś podanej wersji językowej. {{OpisParametrów | 1 = Parametry podstawowe...| nagłówek1=tak | 2 = {{Parametr|wyspecjalizowana|tak}} | _2 = Tylko dla tej funkcji wywołanej w postaci ramki w wikikodzie w szablonach, gdy do niej wsadzamy bezpośrednio jako dzieci, a w przypadku z rodzica to ten parametr jest niepotrzebny lub powinien przyjmować wartość pustą, | 3 = Inne parametry...| nagłówek3=tak | 4 = Ta funkcja dalsze ma takie same parametry, co szablon w jego pełnej nazwie: {{s|NAZWASERWISU}}, lub skrótowej: {{s|NS}}.|nagłówek4=tak | 5 = Wszystkie powyższe zmienne są opcjonalne|nagłówek5=tak }} ===== Opis parametrów użytych razem z parametrem {{Code|link}} ===== Szablon przyjmuje parametr opcjonalny {{Code|link}} ({{s|NS|l{{=}}tak}}), dzięki któremu jest wyświetlany link, do strony głównej tego projektu, w postaci: {{Code|{{NS|l=tak}}}}, o nazwie linku, będącą jednocześnie nazwą serwisu projektu '''{{NS|l=tak}}'''. Gdy dodamy parametr {{Code|wikipedia{{=}}tak}} do wywołania {{Code|{{s|NS|l{{=}}tak|w{{=}}tak}}}}, wtedy uzyskamy wynik: {{Code|{{NS|l=tak|w=tak}}}}, w innym przypadku, gdy linkujemy do angielskiej {{NS|w=tak|l=tak|pk=mj|k=tak}}, wtedy dla wywołania {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|kj{{=}}en}}}} mamy: {{Code|{{NS|l=tak|w=tak|kj=en}}}}, a w przypadku angielskiego {{NS|w=tak|l=tak|pk=d}} dla wikikodu {{Code|{{s|NS|l{{=}}tak|kj{{=}}en}}}} mamy wynik w postaci: {{Code|{{NS|l=tak|kj=en}}}}, a jeśli użyjemy parametru {{Code|kod projektu}}, wtedy wywołanie {{Code|{{s|NS|link{{=}}tak|kp{{=}}s}}}}, to mamy: {{Code|{{NS|l=tak|kp=s}}}}, a gdy dodamy dodatkowo {{Code|wikipedia{{=}}tak}}, zatem {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|kp{{=}}s}}}} jest o wyniku: {{Code|{{NS|l=tak|w=tak|kp=s}}}}. {{OpisParametrów | 1 = Wyniki z parametrem {{Parametr|link|tak}} zostały obtoczone znacznikiem {{Tag|code}} dla odróżnienia rezultatu od reszty tekstu.|nagłówek1=tak }} ===== Wywołania szablonu z tekstem z małymi literami po linku (parametr: {{Code|po}}) i z dowolnym tekstem w nazwie linku (parametr: {{Code|za}}) ===== {{OpisParametrów | 1 = Parametr {{Parametr|link|tak}} w szablonie {{s|NAZWASERWISU}} mówi, że ma być podany link do strony głównej projektu lub artykułu na {{NS|l=tak|k=w}}. Można w nie podać parametr {{Parametr|po|<łańcuch tekstowy>}}, który jest za linkiem, podobnie {{Parametr|za|<łańcuch tekstowy>}}, który jest w nazwie linku, ale względem jej originalnej nazwy za nim.|nagłówek1=tak }} ====== Proste przykłady użycia, z linkiem do projektu bieżącego, przy użyciu parametru {{Code|link}} ====== Gdy chcemy wyświetlić link do polskiego projektu {{NS|w=tak|l=tak|pk=mj}} do jego strony głównej. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local link_1 = nazwy_modul.NAZWASERWISU{ link = "tak", po = "a", }; local link_2 = nazwy_modul.NAZWASERWISU{ link = "tak", za = "a", }; </syntaxhighlight> ; Analogiczne wywołanie szablonu{{Dk}} * {{Code|{{s|NS|l{{=}}tak|p{{=}}a}}}} → {{Tt|{{NS|l=tak|p=a}}}}, * {{Code|{{s|NS|l{{=}}tak|z{{=}}a}}}} → {{Tt|{{NS|l=tak|z=a}}}}. ; Kod wywołania tych szablonów: ;; Dla wywołania {{Code|{{s|NS|l{{=}}tak|p{{=}}a}}}}{{Dk}} {{PreNowiki|{{NS|l=tak|p=a}}}} ;; Dla wywołania {{Code|{{s|NS|l{{=}}tak|z{{=}}a}}}}{{Dk}} {{PreNowiki|{{NS|l=tak|z=a}}}} ====== Proste przykłady użycia, z linkiem do polskiej {{NS|w=tak|l=tak|k=w|pk=mj}}, przy użyciu parametru {{Code|link}} ====== Gdy chcemy wyświetlić link do artykułu o {{NS|w=tak|l=tak|k=b|pk=mj}} na polskiej {{NS|w=tak|l=tak|k=w|pk=mj}}. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local link_1 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", po = "a", }; local link_2 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", za = "a", }; </syntaxhighlight> ; Analogiczne wywołanie szablonu{{Dk}} * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|p{{=}}a}}}} → {{Tt|{{NS|l=tak|w=tak|p=a}}}}, * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|z{{=}}a}}}} → {{Tt|{{NS|l=tak|w=tak|z=a}}}}. ; Kod wywołania tych szablonów: ;; Dla wywołania {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|p{{=}}a}}}}{{Dk}} {{PreNowiki|{{NS|l=tak|w=tak|p=a}}}} ;; Dla wywołania {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|z{{=}}a}}}}{{Dk}} {{PreNowiki|{{NS|l=tak|w=tak|z=a}}}} ====== Przykłady użycia, z linkiem do obcojęzycznej {{NS|w=tak|l=tak|k=w|pk=mj}}, z polską podanego nazwą projektu, przy użyciu parametru {{Code|link}} ====== Gdy chcemy wyświetlić link do artykułu o {{NS|w=tak|l=tak|k=b|pk=mj}} na podanej obcojęzycznej {{NS|w=tak|l=tak|k=w|pk=mj}} podany za pomocą parametru {{Code|["klucz projektu"] {{=}} "en:s"}}. Jest to projekt: {{NS|l=tak|k=en:s}}, którego językiem jest: {{lpg|{{#invoke:lang|hasło|es}}}}. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local link_1 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", ["klucz projektu"] = "en:s", po = "a", }; local link_2 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", ["klucz projektu"] = "en:s", za = "a", }; </syntaxhighlight> ; Analogiczne wywołanie szablonu{{Dk}} * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|k{{=}}en:s|p{{=}}a}}}} → {{Tt|{{NS|l=tak|w=tak|k=en:s|p=a}}}}, * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|k{{=}}en:s|z{{=}}a}}}} → {{Tt|{{NS|l=tak|w=tak|k=en:s|z=a}}}}. ; Kod wywołania tych szablonów: ;; Dla wywołania {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|k{{=}}en:s|p{{=}}a}}}}{{Dk}} {{PreNowiki|{{NS|l=tak|w=tak|k=en:s|p=a}}}} ;; Dla wywołania {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|k{{=}}en:s|z{{=}}a}}}}{{Dk}} {{PreNowiki|{{NS|l=tak|w=tak|k=en:s|z=a}}}} ====== Przykłady użycia, z linkiem do obcojęzycznej {{NS|w=tak|l=tak|k=w|pk=mj}}, z niepolską podanego nazwą projektu, przy użyciu parametru {{Code|link}} ====== Gdy chcemy wyświetlić link do artykułu o {{NS|w=tak|l=tak|k=b|pk=mj}} do podanej obcojęzycznej {{NS|w=tak|l=tak|k=w|pk=mj}} podany za pomocą parametru {{Code|["klucz projektu"] {{=}} "en:s"}}. A nazwa linku ma być podana w języku tego projektu. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local link_1 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", ["klucz projektu"] = "en:s", ["w języku wiki"] = "tak", po = "a", }; local link_2 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", ["klucz projektu"] = "en:s", ["w języku wiki"] = "tak", za = "a", }; </syntaxhighlight> ; Analogiczne wywołanie szablonu{{Dk}} * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|k{{=}}en:s|jw{{=}}tak|p{{=}}a}}}} → {{Tt|{{NS|l=tak|w=tak|k=en:s|jw=tak|p=a}}}}, * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|k{{=}}en:s|jw{{=}}tak|z{{=}}a}}}} → {{Tt|{{NS|l=tak|w=tak|k=en:s|jw=tak|z=a}}}}. ; Kod wywołania tych szablonów: ;; Dla wywołania {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|k{{=}}en:s|jw{{=}}tak|p{{=}}a}}}}{{Dk}} {{PreNowiki|{{NS|l=tak|w=tak|k=en:s|jw=tak|p=a}}}} ;; Dla wywołania {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|k{{=}}en:s|jw{{=}}tak|z{{=}}a}}}}{{Dk}} {{PreNowiki|{{NS|l=tak|w=tak|k=en:s|jw=tak|za=a}}}} ===== Wywołania szablonu dotyczące, w {{NS|w=tak|l=tak|k=w|pk=mj}} iub nie, kodzie dla projektu {{NS|w=tak|l=tak|pk=m}} dla różnych wersji językowych ===== ====== Przykłady użycia funkcji {{Code|nazwy_modul.NAZWASERWISU()}} ====== Gdy chcemy podać nazwę projektu w postaci linku do artykułu strony głównej na {{NS|w=tak|l=tak|pk=mj}} lub artykułu na polskiej lub obcojęzycznej {{NS|w=tak|l=tak|k=w|pk=mj}}. Do jakiej {{NS|w=tak|l=tak|k=w|pk=mj}} ma być link, to wskazuje kod języka, np.: {{Code|["kod języka"] {{=}} "en"}}. Gdy nie podamy tego kodu, to linkujemy tylko do polskiego {{NS|w=tak|l=tak|pk=mj}} lub do polskiej {{NS|w=tak|l=tak|k=w|pk=mj}} (jeżeli podamy parametr {{Code|wikipedia {{=}} "tak"}}). A gdy podany jest ten kod, to możemy linkować nie tylko do polskich projektów siostrzanych polskiego {{NS|w=tak|l=tak|pk=mj}} (ale tylko różnych jego wersji językowych), ale też można linkować do obcojęzycznych projektów, którym jest Wikipedia do artykułu o tym projekcie. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local link_1 = nazwy_modul.NAZWASERWISSU{}; }; local link_2 = nazwy_modul.NAZWASERWISU{ link = "tak", }; local link_3 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", }; local link_4 = nazwy_modul.NAZWASERWISU{ link = "tak", ["kod języka"] = "pl", }; local link_5 = nazwy_modul.NAZWASERWISU{ link = "tak", ["kod języka"] = "en", }; local link_6 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", ["kod języka"] = "pl", }; local link_7 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", ["kod języka"] = "en", }; </syntaxhighlight> ====== Analogiczne wywołanie szablonu ====== * {{Code|{{s|NS}}}} → {{Tt|{{NS}}}}, * {{Code|{{s|NS|l{{=}}tak}}}} → {{Tt|{{NS|l=tak}}}}, * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak}}}} → {{Tt|{{NS|l=tak|w=tak}}}}, * {{Code|{{s|NS|l{{=}}tak|kj{{=}}pl}}}} → {{Tt|{{NS|l=tak|kj=pl}}}}, * {{Code|{{s|NS|l{{=}}tak|kj{{=}}en}}}} → {{Tt|{{NS|l=tak|kj=en}}}}, * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|kj{{=}}pl}}}} → {{Tt|{{NS|l=tak|w=tak|kj=pl}}}}, * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|kj{{=}}en}}}} → {{Tt|{{NS|l=tak|w=tak|kj=en}}}}. ===== Wywołanie szablonu dotyczące innego projektu niż ten ===== ====== Przykłady użycia funkcji {{Code|nazwy_modul.NAZWASERWISU()}} ====== Ale też możemy linkować do stron głównych innych projektów niż {{NS|w=tak|l=tak|pk=m}}. Robimy to za pomocą parametru: {{Code|["kod projektu"] {{=}} "s"}}, nie licąc parametru języka, ale też możemy linkować do artykułu o danym projekcie na {{NS|w=tak|l=tak|k=w|pk=mj}}. A jeżeli podamy kod języka {{Code|["kod języka"] {{=}} "en"}}, wtedy linkujemy do angielskich projektów, w tym również do {{NS|w=tak|l=tak|k=w|pk=mj}}. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Tutaj linkujemy do Wikiźródeł do jej strony głównej local linki_1 = nazwy_modul.NAZWASERWISU{ link = "tak", ["kod projektu"] = "s", }; --- Co powyżej, tylko do artykułu na Wikipedii o Wikiźródłach local linki_2 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", ["kod projektu"] = "s", }; -- Tutaj linkujemy do Wikibooksa do jej strony głównej w jakieś jej wersji językowej local linki_3 = nazwy_modul.NAZWASERWISU{ link = "tak", ["kod języka"] = "pl", ["kod projektu"] = "s", }; local linki_4 = nazwy_modul.NAZWASERWISU{ link = "tak", ["kod języka"] = "en", ["kod projektu"] = "s", }; -- Jak powyżej, tylko do artykułu Wikipedii w jakieś wersji językowej o Wikiźródłach local linki_5 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", ["kod języka"] = "pl", ["kod projektu"] = "s", }; local linki_6 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", ["kod języka"] = "en", ["kod projektu"] = "s", }; </syntaxhighlight> ====== Analogiczne wywołanie szablonu ====== * {{Code|{{s|NS|l{{=}}tak|kp{{=}}s}}}} → {{Tt|{{NS|l=tak|kp=s}}}}, * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|kp{{=}}s}}}} → {{Tt|{{NS|l=tak|w=tak|kp=s}}}}, * {{Code|{{s|NS|l{{=}}tak|kj{{=}}pl|kp{{=}}s}}}} → {{Tt|{{NS|l=tak|kj=pl|kp=s}}}}, * {{Code|{{s|NS|l{{=}}tak|kj{{=}}en|kp{{=}}s}}}} → {{Tt|{{NS|l=tak|kj=en|kp=s}}}}, * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|kj{{=}}pl|kp{{=}}s}}}} → {{Tt|{{NS|l=tak|w=tak|kj=pl|kp=s}}}}, * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|kj{{=}}en|kp{{=}}s}}}} → {{Tt|{{NS|l=tak|w=tak|kj=en|kp=s}}}}. ===== Wywołania szablonu z nazwą linku danej wiki ===== ====== Przykłady użycia funkcji {{Code|nazwy_modul.NAZWASERWISU()}} ====== Gdy chcemy podać nazwę linku przy pomocy parametru {{Code|["w języku wiki"] {{=}} "tak"}}, w języku danej wiki, którego podajemy przy parametrze {{Code|["kod języka"] {{=}} "en"}}, dla projektu podanego w zmiennej {{Code|["kod projektu"] {{=}} "s"}}. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local linki_1 = nazwy_modul.NAZWASERWISU{ link = "tak", ["kod projektu"] = "s", ["w języku wiki"] = "tak", }; local linki_2 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", ["kod projektu"] = "s",["w języku wiki"] = "tak", }; local linki_3 = nazwy_modul.NAZWASERWISU{ link = "tak", ["kod języka"] = "pl", ["kod projektu"] = "s", ["w języku wiki"] = "tak", }; local linki_4 = nazwy_modul.NAZWASERWISU{ link = "tak", ["kod języka"] = "en", ["kod projektu"] = "s", ["w języku wiki"] = "tak", }; local linki_5 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", ["kod języka"] = "pl", ["kod projektu"] = "s", ["w języku wiki"] = "tak", }; local linki_6 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", ["kod języka"] = "en", ["kod projektu"] = "s", ["w języku wiki"] = "tak", }; </syntaxhighlight> ====== Analogiczne wywołanie szablonu ====== * {{Code|{{s|NS|l{{=}}tak|kp{{=}}s|jw{{=}}tak}}}} → {{Tt|{{NS|l=tak|kp=s|jw=tak}}}}, * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|kp{{=}}s|jw{{=}}tak}}}} → {{Tt|{{NS|l=tak|w=tak|kp=s|jw=tak}}}}, * {{Code|{{s|NS|l{{=}}tak|kj{{=}}pl|kp{{=}}s|jw{{=}}tak}}}} → {{Tt|{{NS|l=tak|kj=pl|kp=s|jw=tak}}}}, * {{Code|{{s|NS|l{{=}}tak|kj{{=}}en|kp{{=}}s|jw{{=}}tak}}}} → {{Tt|{{NS|l=tak|kj=en|kp=s|jw=tak}}}}, * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|kj{{=}}pl|kp{{=}}s|jw{{=}}tak}}}} → {{Tt|{{NS|l=tak|w=tak|kj=pl|kp=s|jw=tak}}}}, * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|kj{{=}}en|kp{{=}}s|jw{{=}}tak}}}} → {{Tt|{{NS|l=tak|w=tak|kj=en|kp=s|jw=tak}}}}. ===== Wywołanie szablonu z podaną nazwą linku ===== ====== Przykłady użycia funkcji {{Code|nazwy_modul.NAZWASERWISU()}} ====== Jeżeli chcemy podać ściśle określony ciąg, który jest nazwą linku, do linkowania do strony głównej lub artykułu na {{NS|w=tak|l=tak|k=w|pk=mj}} o danym projekcie, np. inną niż nazwa projektu. Tutaj nazwą linku jest {{Code|[1] {{=}} "Biblioteka książek"}}. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local link_1 = nazwy_modul.NAZWASERWISU{ [1] = "Biblioteka książek", link = "tak", }; local link_2 = nazwy_modul.NAZWASERWISU{ [1] = "Biblioteka książek", link = "tak", wikipedia = "tak", }; local link_3 = nazwy_modul.NAZWASERWISU{ [1] = "Biblioteka książek", link = "tak", ["kod projektu"] = "s",["kod języka"] = "en", }; local link_4 = nazwy_modul.NAZWASERWISU{ [1] = "Biblioteka książek", link = "tak", wikipedia = "tak", ["kod projektu"] = "s",["kod języka"] = "en", }; </syntaxhighlight> ====== Analogiczne wywołanie szablonu ====== * {{Code|{{s|NS|Biblioteka książek|l{{=}}tak}}}} → {{Tt|{{NS|Biblioteka książek|l=tak}}}}, * {{Code|{{s|NS|Biblioteka książek|l{{=}}tak|w{{=}}tak}}}} → {{Tt|{{NS|Biblioteka książek|l=tak|w=tak}}}}, * {{Code|{{s|NS|Biblioteka wikiźródeł|l{{=}}tak|kp{{=}}s|kj{{=}}en}}}} → {{Tt|{{NS|Biblioteka wikiźródeł|l=tak|kp=s|kj=en}}}}, * {{Code|{{s|NS|Biblioteka wikiźródeł|l{{=}}tak|w{{=}}tak|kp{{=}}s|kj{{=}}en}}}} → {{Tt|{{NS|Biblioteka wikiźródeł|l=tak|w=tak|kp=s|kj=en}}}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> mc5grabwf8puh6bp5ov9cowr9cvhx9c 555686 555685 2026-09-11T13:39:13Z Persino 2851 /* Funkcja biblioteczna */ 555686 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Nazwy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == Funkcje nazw nazwy przestrzeni nazw == Należy przeczytać wiadomości ze strony {{lru|Moduły/Nazwy}}, które są informacjami wstępnymi, by używać funkcji bibliotecznych: {{m|Nazwy|Np}} i {{m|Nazwy|NpDane}}, i z nimi skojarzonych szablonów, tzn.: {{s|Np}} i {{s|NpDane}}. Wiadomosci też stąd są bardzo potrzebne do dalszych modułów tomów tej publikacji, to znaczy do funkcji, czy szablonów, nazw. === {{Code|m.Np}} === ==== Odpowiednik szablonowy ==== Odpowiednik szablonowy jest pod nazwą {{s|Np}}, odpowiednik funkcji, w mechanizmie '''MediaWiki''', tzn.: {{Span|styl=color:blue;|<nowiki>{{ns:<nazwa przestrzeni kanoniczna lub nie, albo jej id>}}</nowiki>}}, format tego, bo to nie jest szablon, czy funkcja, tylko wywołanie parserowe, tego, w którym jej parametr, tylko przestrzeny w nim występuje, jej element jest podobny do jej wersji bibliotecznej, opisywanej funkcji. Format wersji bibliotecznej tej funkcji jest bardzo bodobny do jej wersji szablonowej, tylko jest inne uruchomienie, tam jest ramka, a tutaj wywołanie szablonowe. Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce. * Szablon {{s|Np}} korzysta z funkcji bibliotecznej {{m|Nazwy|Np}}, więc parametry obu są wręcz takie same, a nawet podobne. Chociaż ta sama nazwa funkcji w ramce i kodzie {{lpg|Lua}}, to używanie ich nie jest dokładnie takie samo, funkcja biblioteczna nie potrzebuje parametru {{Parametr|wyspecjalizowana|tak}}, a ramka już tak, a szablon {{s|Np}}, który korzysta z tej ramki, to nieobecność, lub obecność z wartością pustą, tego parametru powoduje, że przyjmowane są parametry rodzica, a nie dziecka, które wymagają jego niepustość. ==== Funkcja biblioteczna ==== Zestaw parametrów tej funkcji są to parametry nazwane podawane, w wersji tabelkowej,, w nawiasach klamerkowej, jak się to podaje w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. ; Paramery funkcji {{m|Nazwy|Np|...|wyspecjalizowana{{=}}tak}} lub funkcji bibliotecznej wykorzystującej opisywaną funkcję{{Dk}} {{OpisParametrów | 1 = Parametry podstawowe | nagłówek1=tak | 2 = {{Code|nazwa}} lub {{Code|1}} | _2 = Nazwa przestrzeni nazw, kanoniczna lub nie, lub {{Code|id}} danej przestrzeni. | 3 = {{Parametr|wyspecjalizowana|tak}} | _3 = Tylko dla tej funkcji wywołanej w postaci ramki w wikikodzie w szablonach, gdy do niej wsadzamy bezpośrednio jako dzieci, a w przypadku z rodzica to ten parametr jest niepotrzebny lub powinien przyjmować wartość pustą, | 4 = Zmienne puste lub nie, np. o wartości {{Code|tak}}, lub nie, podawane do tej funkcji są:| nagłówek4=tak | 5 = {{Code|przedmiotowa}} | _5 = Zamienia daną przestrzeń na jej nazwę przedmiotową, tzn. na przestrzenie o numerach {{Code|id}} parzyste. | 6 = {{Code|dyskusja}} | _6 = Zamienia daną przestrzeń na jej wersję dyskusji, tzn. na przestrzenie o numerach {{Code|id}} nieparzyste. | 7 = {{Code|kanoniczna}} | _7 = Zamienia nazwę przestrzeni lub {{Code|id}} danej przestrzeni na jej nazwę kanoniczną, tzn. na jej wersję angielską. | 8 = {{Code|z myślnikami dolnymi}} | _8 = Zamienia spację w nazwach przestrzenie nazw na dolne myślniki, | 9 = {{Code|wyświetlana}} | _9 = Ten parametr nie wpływa na sposób wyświetlania nazw przestrzeni, oprócz jednej przestrzeni nazw, której jest przestrzeń główna o nazwie kanonicznej {{Code|(main)}} lub niekanonicznej {{Code|(główna)}}, wtedy są wyświetlane zamiast ciągu pustego te nazwy w zależności od podanego parametru {{Code|kanoniczna}}, tj. czy ona jest pusta lub nie, lub niepodana. | 10 = {{Code|link}} | _10 = Drukuje link o nazwie referencji, którą jest nazwa wyświetlana danej przestrzeni nazw, lub jej {{Code|id}}, o adresie strony przekierowującej, której jest adres odniesienia podanej w tabeli powyżej dla tej funkcji lub szablonu {{s|Np}}. | 11 = {{Code|id}} | _11 = wyświetla id danej przestrzeni nazw. | 12 = {{Code|nazwij projektem}} | _12 = Powoduje, że wyświetlana jest nazwa projektu {{Code|Wikibooks}} w postaci rzeczywistej nazwy kanonicznej (używany wraz z parametrem {{Code|kanoniczna}}), tzn. w postaci nazwy {{Code|Project}}, lub bez tego parametru, w postaci nazwy nierzeczywistej niekanonicznej {{Code|Projekt}}. | 13 = {{Code|nazwij dyskusją projektu}} | _13 = Powoduje, że wyświetlana jest nazwa projektu {{Code|Dyskusja wikibooks}} w postaci rzeczywistej nazwy kanonicznej (używany wraz z parametrem {{Code|kanoniczna}}), tzn. w postaci nazwy {{Code|Project talk}}, lub bez tego parametru, w postaci nazwy nierzeczywistej niekanonicznej {{Code|Dyskusja projektu}}. | 14 = Inne zmienne niepuste:|nagłówek14=tak | 15 = {{Code|istnieje}} | _15 = Zwraca wartość tekstową {{Code|(bląd)}}, gdy przestrzeń jest nieprawidłowa lub nie istnieje, w innym przypadku zwraca normalną wartość. | 16 = {{Code|wynik błędu nietekstowy}} | _16 = Używany z {{Code|istnieje}}, zwraca wartość w języku {{lpg|Lua}} wartość {{Code|nil}}, gdy wartość nazwy przestrzeni nazw lub {{Code|id}} jest nieprawidłowa lub nieznana. | 17 = Zwracana zmienna w postaci tabeli ze składowymi z pewnymi podzmiennymi:|nagłówek17=tak | 18 = {{Code|uchwyt}} | _18 = Zwraca uchwyt przestrzeni nazw do danej przestrzeni nazw. }} ===== Przykłady używania ===== ====== Podstawowe wywołanie ====== Podstawowe przykłady podstawowego wywołania funkcji, czyli uzyskiwania nazwy niekanonicznej z dowolnej nazwy przestrzeni kanonicznej, czy jej numeru {{Code|id}} (kodu danej przestrzeni nazw, który reprezentuje daną przestrzeń nazw przedmiotową, czy dyskusji), a więc: <syntaxhighlight lang="lua"> local nazwy_modul = require("Module:Nazwy"); ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_1 = nazwy_modul.Np{ [1] = "Szablon", }; ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_2 = nazwy_modul.Np{ [1] = "Template", }; ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_3 = nazwy_modul.Np{ [1] = 10, }; ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_4 = nazwy_modul.Np{ nazwa = "Szablon", }; ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_5 = nazwy_modul.Np{ nazwa = "Template", }; ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_6 = nazwy_modul.Np{ nazwa = 10, }; </syntaxhighlight> Te trzy pary wywołania wyświetlają ten sam wynik tzn. o takiej samej wartości, bo parametr {{Code|nazwa}} wskazuje na tą samą przestrzeń nazw, tylko one są rożnie wskazane. Został ta użyty parametr: {{Code|1}} lub {{Code|nazwa}}, które oznaczają to samo, czyli przestrzeń nazw w postaci kanonicznej, niekanonicznej, czy numeru {{Code|id}}, czyli identyfikatora przestrzeni nazw. Jako wartość uzyskujemy tam nazwę kanoniczną przestrzenina polskiem {{NS|l=tak|p=ie}}. Przestrzeń nazw może zawierać dowolnej wielkości litery, z dowolną liczbą odstępów z dolnymi spacjami lub normalnymi, jeżeli w nim one występują,wtedy zawsze oznaczają one tą samą przestrzeń, niezależnie jak ją zapiszemy, przykłady poniżej. Równie dobrze dowolną nazwę niekanoniczną możemy napisać, co jest uwidocznione w parametrze {{Code|nazwa}}, na wyjściu otrzymujemy w pełni sformatowaną nazwę niekanoniczną, która odpowiada jej odpowiednikowi niesformatowanemu: <syntaxhighlight lang="lua"> local nazwy_modul = require("Module:Nazwy"); -- Zwraca wartość: "Szablon": local nazwa_przestrzeni_1 = nazwy_modul.Np{ nazwa = "SZABLON", }; -- Zwraca wartość: "Szablon": local nazwa_przestrzeni_2 = nazwy_modul.Np{ nazwa = "TEMPLATE", }; -- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_3 = nazwy_modul.Np{ nazwa = "DYSKUSJA ___ ___ _ SZABLONU", }; -- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_4 = nazwy_modul.Np{ nazwa = "TEMPLATE_________TALK", }; </syntaxhighlight> ====== Nazwy kanoniczne i niekanoniczna oraz zamiana z jednej na drugą ====== Aby uzyskać nazwę z dowolnej nazwy, nawet też kanonicznej, czynie, czy też z numeru {{Code|id}} (identyfikatora przestrzeni nazw), wtedy należy podać parametr przestrzeni nazw, z dodatkowym parametrem {{Code|kanoniczna}}, w takim razie: <syntaxhighlight lang="lua"> local nazwy_modul = require("Module:Nazwy"); -- Uzyskujemy wartość: "Template": local nazwa_kanoniczna_1 = nazwy_modul.Np{ nazwa = "Szablon", kanoniczna = "tak", }; -- Uzyskujemy wartość: "Template": local nazwa_kanoniczna_2 = nazwy_modul.Np{ nazwa = "Template", kanoniczna = "tak", }; -- Uzyskujemy wartość: "Template": local nazwa_kanoniczna_3 = nazwy_modul.Np{ nazwa = 10, kanoniczna = "tak", }; </syntaxhighlight> * Według powyższego przykładu, ona, czyli przestrzeń nazw, jest zamieniana na sformatowaną nazwę kanoniczną, jako parametr może być nazwa niekanoniczna, kanoniczna, czy identyfikator przestrzeni nazw. Dowolną nazwę kanoniczną, czy nie, można zamienić na niekanoniczną, niezależnie w jakiej formie podamy przestrzeń nazw, może być to przekształcenie tożsamościowe, może być to w postaci identyfikatora tej przestrzeni, niezależnie jaką ją mamy na myśli, więc: <syntaxhighlight lang="lua"> local nazwy_modul = require("Module:Nazwy"); -- Uzyskujemy wartość: "Szablon": local nazwa_niekanoniczna = nazwy_modul.Np{ nazwa = "Template", }; </syntaxhighlight> * Wystarczy wtedy użyć tylko jednego parametru, nie trzeba używać większej liczby innych parametrów. ====== Nazwy przedmiotowe i dyskusji oraz przejścia pomiędzy nimi ====== Można też przechodzić z tej samej przestrzeni nazw w nią samą, lub do niego skojarzoną, tzn. z przedmiotowej do dyskusji lub odwrotnie, przykłady poniżej. Do tego celu używamy parametru {{Code|przedmiotowa}}, czyli do tłumaczenia nazwy przestrzeni nazw na jej wersję przedmiotową, tzn. na przestrzeń nazw o identyfikatorze parzystym. Można też użyć parametru {{Code|dyskusja}}, robiąca tłumaczenia na wersje dyskusji, o identyfikatorze nazwy przestrzeni nazw nieparzystym. Nie wolno używać tych parametrów, tych dwóch w jednym wywołaniu, bo może dojść do błędu funkcji w postaci komunikatu {{Code|(błąd)}}. Tłumaczona nazwa może być zarówno niekanoniczna, jak i kanoniczna, lub być zawarta w postaci identyfikatora przestrzeni nazw. Tutaj bez użycia żadnego parametru dodatkowego, wtedy otrzymujemy na wyjściu nazwę niekanoniczną. <syntaxhighlight lang="lua"> local nazwy_modul = require("Module:Nazwy"); -- Gdy nazwą przestrzeni jest nazwa niekanoniczna: ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_przedmotowej_1 = nazwy_modul.Np{ nazwa = "Dyskusja szablonu", przedmiotowa = "tak", }; ---- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_dyskusji_1 = nazwy_modul.Np{ nazwa = "Szablon", dyskusja = "tak", }; -- Gdy nazwą przestrzeni jest nazwa kanoniczna: ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_przedmotowej_2 = nazwy_modul.Np{ nazwa = "Template talk", przedmiotowa = "tak", }; ---- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_dyskusji_2 = nazwy_modul.Np{ nazwa = "Template", dyskusja = "tak", }; -- Gdy prrzestrzeń nazw jest w postaci numeru id: ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_przedmotowej_3 = nazwy_modul.Np{ nazwa = 11, przedmiotowa = "tak", }; ---- Zwraca wartość: szablon "Dyskusja szablonu": local nazwa_przestrzeni_dyskusji_3 = nazwy_modul.Np{ nazwa = 10, dyskusja = "tak", }; </syntaxhighlight> Gdy użyjemy dodatkowo parametr {{Code|kanoniczna}}, zamieniający dowolne przestrzenie nazw, niezależnie, czy jest zapisana w postaci identyfikatora, czy nie, gdy nazwą przestrzeni jest nazwa niekanoniczna (lub kanoniczna), to uzyskana nazwa przedmiotowa, czy dyskusji, jest nazwą kanoniczną, jako w wyniku: <syntaxhighlight lang="lua"> local nazwy_modul = require("Module:Nazwy"); -- Gdy nazwą przestrzeni jest nazwa niekanoniczna: ---- Zwraca wartość: "Template": local nazwa_przestrzeni_przedmotowej_1 = nazwy_modul.Np{ nazwa = "Dyskusja szablonu", przedmiotowa = "tak", kanoniczna = "tak", }; ---- Zwraca wartość: "Template talk": local nazwa_przestrzeni_dyskusji_1 = nazwy_modul.Np{ nazwa = "Szablon", dyskusja = "tak", kanoniczna = "tak", }; -- Gdy nazwą przestrzeni jest nazwa kanoniczna: ---- Zwraca wartość: "Template": local nazwa_przestrzeni_przedmotowej_2 = nazwy_modul.Np{ nazwa = "Template talk", przedmiotowa = "tak", kanoniczna = "tak", }; ---- Zwraca wartość: "Template talk": local nazwa_przestrzeni_dyskusji_2 = nazwy_modul.Np{ nazwa = "Template", dyskusja = "tak", kanoniczna = "tak", }; -- Gdy przestrzeń nazw jest w postaci numeru id: ---- Zwraca wartość: "Template": local nazwa_przestrzeni_przedmotowej_3 = nazwy_modul.Np{ nazwa = 11, przedmiotowa = "tak", kanoniczna = "tak", }; ---- Zwraca wartość: "Template talk": local nazwa_przestrzeni_dyskusji_3 = nazwy_modul.Np{ nazwa = 10, dyskusja = "tak", kanoniczna = "tak", }; </syntaxhighlight> Przejście z tej samej przestrzeni na tą samą możemy uzyskać, gdy nazwę przedmiotową tłumaczymy na przedmiotową, dyskusji na dyskusji, wtedy tłumaczenie z przestrzeni do przestrzeni jest tożsamościowe, niezależnie w jakiej formie podamy nazwę przestrzeni nazw jako parametr, tłumaczymy nazwę polską na tą samą nazwę też polską, o tej samej wartości lub jej odpowiednik angielski w wersji kanonicznej na jej wersję niekanoniczną, czy z numeru identyfikatorana jej odpowiednik nazwowy, ale nadal takie przejście jest tożsamosciowe, bo chodzi o tą samą przestrzeń nazw, mimo że użyliśmy tych parametrów: <syntaxhighlight lang="lua"> local nazwy_modul = require("Module:Nazwy"); -- Gdy nazwą przestrzeni jest nazwa niekanoniczna: ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_przedmotowej_1 = nazwy_modul.Np{ nazwa = "Szablon", przedmiotowa = "tak", }; ---- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_dyskusji_1 = nazwy_modul.Np{ nazwa = "Dyskusja szablonu", dyskusja = "tak",}; -- Gdy nazwą przestrzeni jest nazwa kanoniczna: ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_przedmotowej_2 = nazwy_modul.Np{ nazwa = "Template", przedmiotowa = "tak", }; ---- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_dyskusji_2 = nazwy_modul.Np{ nazwa = "Template talk", dyskusja = "tak",}; -- Gdy przestrzeń nazw jest w postaci numeru id: ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_przedmotowej_3 = nazwy_modul.Np{ nazwa = 10, przedmiotowa = "tak", }; ---- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_dyskusji_3 = nazwy_modul.Np{ nazwa = 11, dyskusja = "tak",}; </syntaxhighlight> Gdy użyjemy dodatkowo parametr {{Code|kanoniczna}}, to uzyskana nazwa przedmiotowa, czy dyskusji, wtedy mamy tłumaczenie tozsamościowe, jeśli chodzi o przestrzeń nazw, co one oznaczają, jeśli ona jest niekanoniczna, to uzyskamy jej nazwę, ale po angielsku, a jeśli jednak jest kanoniczna, to otrzymamy ten sam wynik: <syntaxhighlight lang="lua"> local nazwy_modul = require("Module:Nazwy"); -- Gdy nazwą przestrzeni jest nazwa niekanoniczna: ---- Zwraca wartość: "Template": local nazwa_przestrzeni_przedmotowej_1 = nazwy_modul.Np{ nazwa = "Szablon", przedmiotowa = "tak", kanoniczna = "tak", }; ---- Zwraca wartość: "Template talk": local nazwa_przestrzeni_dyskusji_1 = nazwy_modul.Np{ nazwa = "Dyskusja szablonu", dyskusja = "tak", kanoniczna = "tak", }; -- Gdy nazwą przestrzeni jest nazwa kanoniczna: ---- Zwraca wartość: Template": local nazwa_przestrzeni_przedmotowej_2 = nazwy_modul.Np{ nazwa = "Template", przedmiotowa = "tak", kanoniczna = "tak", }; ---- Zwraca wartość: "Template talk": local nazwa_przestrzeni_dyskusji_2 = nazwy_modul.Np{ nazwa = "Template talk", dyskusja = "tak", kanoniczna = "tak", }; -- Gdy przestrzeń nazw jest w postaci numeru id: ---- Zwraca wartość: ""Template": local nazwa_przestrzeni_przedmotowej_3 = nazwy_modul.Np{ nazwa = 10, przedmiotowa = "tak", kanoniczna = "tak", }; ---- Zwraca wartość: "Template talk": local nazwa_przestrzeni_dyskusji_3 = nazwy_modul.Np{ nazwa = 11, dyskusja = "tak", kanoniczna = "tak", }; </syntaxhighlight> ====== Nazwy przestrzeni z myślnikami dolnymi ====== Gdy używamy przestrzeni nazw, czy to w postaci kanonicznej, czy niekanonicznej, ze spacjami, to spacje są w nim zamieniane na dolne myślniki. Jeżeli parametr zawiera spacje lub dolne myślniki na końcach nazwy, to ona jest trimowana, wewnątrz, wtedy powtórzone spacje, lub myślniki dolne, są zamieniane na jeden dolny myślnik, jeżeli zamieniamy nazwę niekanoniczną na niekanoniczną, kanoniczną na kanoniczną. Gdy tak nie jest, tzn. gdy zamieniamy kanoniczną na niekanoniczną, niekanoniczną na kanoniczną, to wtedy jest podobnie. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Dyskusja_szablonu": local nazwa_przestrzeni_1 = nazwy_modul.Np{ nazwa = "Dyskusja szablonu", ["z myślnikami dolnymi"] = "tak", }; ---- Zwraca wartość: "Dyskusja_szablonu": local nazwa_przestrzeni_2 = nazwy_modul.Np{ nazwa = "Template talk", ["z myślnikami dolnymi"] = "tak", }; ---- Zwraca wartość: "Template_talk";: local nazwa_przestrzeni_3 = nazwy_modul.Np{ nazwa = "Dyskusja szablonu", kanoniczna = "tak", ["z myślnikami dolnymi"] = "tak", }; ---- Zwraca wartość: "Template_talk": local nazwa_przestrzeni_4 = nazwy_modul.Np{ nazwa = "Template talk", kanoniczna = "tak", ["z myślnikami dolnymi"] = "tak", }; </syntaxhighlight> ====== Nazwy wyświetlane przestrzeni nazw ====== Gdy nazwą przestrzeni nazw jest nazwa o charakterze niepustym, to przy parametrze {{Code|wyświetlana {{=}} "tak"}}, jest zamieniana ona na tą samą nazwę, gdy ona jest pusta, to jest zamieniana na szereg: {{Code|(główna)}} bez parametru {{Code|kanoniczna}}, a z tym parametrem na {{Code|(main)}}. Przykłady jak jest, jest powiedziane: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_1 = nazwy_modul.Np{ nazwa = "Szablon", wyświetlana = "", }; ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_2 = nazwy_modul.Np{ nazwa = "Szablon", wyświetlana = "tak", }; ---- Zwraca wartość: "": local nazwa_przestrzeni_3 = nazwy_modul.Np{ nazwa = "", wyświetlana = "", }; ---- Zwraca wartość: "(główna)": local nazwa_przestrzeni_4 = nazwy_modul.Np{ nazwa = "", wyświetlana = "tak", }; ---- Zwraca wartość: "(main)": local nazwa_przestrzeni_5 = nazwy_modul.Np{ nazwa = "", kanoniczna = "tak", wyświetlana = " tak", }; </syntaxhighlight> Na podstawie ramki powyżej w przestrzeniach nazw wyświetlanych dowiadujemy się, że jedyna różnica, w nazwach wyświetlanych lub nie, jest dla przestrzeni głównej, czyli dla przestrzeni nazw, której nazwa przestrzeni jest ciągiem pustym. ====== Wersja funkcji z wyświetlaną nazwą przestrzeni nazw z linkiem opisującej tą przestrzeń ====== Nazwę przestrzeni nazw zamieniamy na link z opisem, co robi dana przestrzeń nazw, z nazwą wyświetlaną niekanoniczną, bez parametru {{Code|kanoniczna}}, lub z tym,wtedy nazwę wyświetlaną jest kanoniczna. Gdy przestrzeń nazw jest główna, to wtedy nazwą linku jest {{Code|(główna)}} ({{Code|(main)}} z parametrem {{Code|kanoniczna}}). <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local nazwa_przestrzeni_nazw_1 = nazwy_modul.Np{ nazwa = "Szablon", link = "tak", }; local nazwa_przestrzeni_nazw_2 = nazwy_modul.Np{ nazwa = "Szablon", link = "tak", kanoniczna = "tak", }; local nazwa_przestrzeni_nazw_3 = nazwy_modul.Np{ nazwa = "", link = "tak", }; local nazwa_przestrzeni_nazw_4 = nazwy_modul.Np{ nazwa = "", link = "tak", kanoniczna = "tak", }; </syntaxhighlight> Przykłady funkcji w wyniku są w przykładach szablonowych: # {{Code|{{s|Np|nazwa{{=}}Szablon|link{{=}}tak}}}} → {{Tt|{{Np|nazwa=Szablon|link=tak}}}} # {{Code|{{s|Np|nazwa{{=}}Szablon|link{{=}}tak|kanoniczna{{=}}tak}}}} → {{Tt|{{Np|nazwa=Szablon|link=tak|kanoniczna=tak}}}} # {{Code|{{s|Np|nazwa{{=}}|link{{=}}tak}}}} → {{Tt|{{Np|nazwa=|link=tak}}}} # {{Code|{{s|Np|nazwa{{=}}|link{{=}}tak|kanoniczna{{=}}tak}}}} → {{Tt|{{Np|nazwa=|link=tak|kanoniczna=tak}}}} ====== Uzyskiwanie numeru {{Code|id}} danej przestrzeni nazw ====== Gdy chcemy uzyskać numer identyfikatora przestrzeni nazw, czy to z użyciem parametru {{Code|kanoniczna}}, czy nie, wtedy ten parametr jest w tym przypadku ignorowany, przy parametrze {{Code|id {{=}} "tak"}} na jej odpowiednik w postaci numeru, który charakteryzuje przestrzenie przedmiotowe i dyskusji, inna jest dla tych dwóch typów przestrzeni. Dla przestrzeni przedmiotowej {{Code|id}} jest parzyste, a dla dyskusji nieparzyste. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Uzyskany numer id nazwy przestrzeni nazw jest 10: local id_1 = nazwy_modul.Np{ nazwa = "Szablon", id = "tak", }; ---- Uzyskany numer id nazwy przestrzeni nazw jest 10: local id_2 = nazwy_modul.Np{ nazwa = "Szablon", kanoniczna = "tak", id = "tak", }; ---- Uzyskany numer id nazwy przestrzeni nazw jest 11: local id_3 = nazwy_modul.Np{ nazwa = "Dyskusja szablonu", id = "tak", }; ---- Uzyskany numer id nazwy przestrzeni nazw jest 11: local id_4 = nazwy_modul.Np{ nazwa = "Dyskusja szablonu", kanoniczna = "tak", id = "tak", }; </syntaxhighlight> ====== Uzyskiwanie nazwy projektu nazwy przedmiotowej i jej dyskusji, z kanonicznej lub nie, przestrzeni nazw ====== Gdy używamy przestrzeni nazw {{Np|Wikibooks|link=tak}} lub {{Np|Wikibooks|link=tak|dyskusja=tak}}, to je można tłumaczyć na je wersje czysto kanoniczne, tzn.: {{Np|Wikibooks|link=tak}} tłumaczymy na {{Np|Wikibooks|link=tak|nazwij projektem=tak}}, a {{Np|Wikibooks|link=tak|dyskusja=tak}} na {{Np|Wikibooks|link=tak|dyskusja=tak|nazwij dyskusją projektu=tak}}, gdy translacja jest na nazwę polską niekanoniczną, a gdy użyjemy parametru {{Code|kanoniczna}}, wtedy sytuacja jest inna: {{Np|Wikibooks|link=tak|kanoniczna=tak}} tłumaczymy na {{Np|Wikibooks|link=tak|nazwij projektem=tak|kanoniczna=tak}}, a {{Np|Wikibooks|link=tak|dyskusja=tak|kanoniczna=tak}} na {{Np|Wikibooks|link=tak|dyskusja=tak|nazwij dyskusją projektu=tak|kanoniczna=tak}}. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Projekt": local nazwa_przestrzeni_nazw_1 = nazwy_modul.Np{ nazwa = "Wikibooks", ["nazwij projektem"] = "tak", }; ---- Zwraca wartość: "Project": local nazwa_przestrzeni_nazw_2 = nazwy_modul.Np{ nazwa = "Wikibooks", ["nazwij projektem"] = "tak", kanoniczna = "tak", }; ---- Zwraca wartość: "Dyskusja projektu": local nazwa_przestrzeni_nazw_3 = nazwy_modul.Np{ nazwa = "Wikibooks", ["nazwij dyskusją projektu"] = "tak", dyskusja = "tak", }; ---- Zwraca wartość: "Project talk": local nazwa_przestrzeni_nazw_4 = nazwy_modul.Np{ nazwa = "Wikibooks", ["nazwij dyskusją projektu"] = "tak", kanoniczna = "tak", }; </syntaxhighlight> ====== Sprawdzanie, czy dana przestrzeń jest poprawnie podane, czy istnieje ====== Gdy używamy przestrzeni nieistniejącej bez parametru {{Code|istnieje {{=}} "tak" }}, wtedy na wyjściu otrzymamy to samo, tylko w wersji sformatowanej, a gdy użyjemy, wtedy pojawia tam się napis {{Code|(błąd)}}. Gdy parametrem jest znana funkcji przestrzeń nazw, to nie uzyskujemy błędu, tylko przepisaną sformatowaną nazwę. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_nazw_1 = nazwy_modul.Np{ nazwa = "Szablon", istnieje = "tak", }; ---- Zwraca wartość: "Moja przestrzeń": local nazwa_przestrzeni_nazw_2 = nazwy_modul.Np{ nazwa = "Moja przestrzeń", istnieje = "", }; ---- Zwraca wartość: "(błąd)": local nazwa_przestrzeni_nazw_3 = nazwy_modul.Np{ nazwa = "Moja przestrzeń", istnieje = "tak", }; </syntaxhighlight> ====== Łatwe sprawdzanie istnienia danej przestrzeni nazw ====== Gdy oprócz parametru {{Code|istnieje {{=}} "tak"}}, użyjemy {{Code|["wynik błędu nietekstowy"] {{=}} "tak"}}, wtedy dla nieznanej przestrzeni uzyskujemy wartość w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, czyli: {{Code|nil}}, a w wikikodzie natomiast uzyskujemy wartość pustą, co pomaga w sprawdzeniu, czy dana przestrzeń istnieje, ale dodatkowo trzeba użyć parametru {{Code|["wyświetlana"] {{=}} "tak"}}, by nie pomylić parametru błędu z przestrzenią główną, wtedy ta przestrzeń ma nazwę niepustą przy tych parametrach, bo wtedy mamy nazwę niekanoniczną {{Code|(główna)}}, kanoniczną, przy specjalnym parametrze, czyli: {{Code|(main)}}, wtedy możemy użyć parsera {{Code|{{s|#if:coś|wtedy|przeciwnie}}}}. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_nazw_1 = nazwy_modul.Np{ nazwa = "Szablon", istnieje = "tak", ["wynik błędu nietekstowy"] = "tak", }; ---- Zwraca wartość: "Moja przestrzeń": local nazwa_przestrzeni_nazw_2 = nazwy_modul.Np{ nazwa = "Moja przestrzeń", istnieje = "", ["wynik błędu nietekstowy"] = "tak", }; ---- Zwraca wartość: nil: local nazwa_przestrzeni_nazw_3 = nazwy_modul.Np{ nazwa = "Moja przestrzeń", istnieje = "tak", ["wynik błędu nietekstowy"] = "tak", }; </syntaxhighlight> ====== Uzyskiwanie uchwytu danej przestrzeni nazw analogicznie do funkcji {{LzLua|mw.site.namespaces}} ====== Uchwyt niskopoziomowy do danej przestrzeni nazw można uzyskać przy pomocy kodu, uzyskujemy dla tej tablicy przestrzennej, która jest połączona z metatabelką, dzięki której możemy podawać przestrzenie nazw w wersji niezależnie jakimi literami, z dowolną kliczbą odstępów, nawet zapisana dolnymi myślnikami: <syntaxhighlight lang="lua"> local uchwyt_1 = mw.site.namespaces["Szablon"]; local uchwyt_2 = mw.site.namespaces["Template"]; local uchwyt_3 = mw.site.namespaces[10]; </syntaxhighlight> Funkcja powyżej ignoruje wielkość liter w przestrzeni nazw oraz powtórzone odstępy zrealizowane za pomocą spacji lub dolnych myślników. To samo, ale wysokopoziomowe, można utworzyć przy pomocy parametru: {{Code|uchwyt}}, wtedy szablon z rzuci odwołanie do tej tabeli, ale nie zawsze tak jest, czasami, gdy jakieś przestrzenie nie istnieją na polskim {{NS|w=tak|l=tak|pk=mj}}, wtedy odwołujemy się do jej wersji pseudo tej tabeli: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local uchwyt_1 = nazwy_modul.Np{ nazwa = "Szablon", uchwyt = "tak", }; local uchwyt_2 = nazwy_modul.Np{ nazwa = "Template", uchwyt = "tak", }; local uchwyt_3 = nazwy_modul.Np{ nazwa = 10, uchwyt = "tak", }; </syntaxhighlight> Funkcja {{Code|nazwy_modul.Np}} jest bardziej ogólniejsza niż {{LzLua|mw.site.namespaces}}, ponieważ uwzględnia większą liczbę nazw przestrzeni nazw, bo ona uwzględnia nieznane przestrzenie i znane o nieznanych nazwach, i dlatego należy stosować tę funkcję, a nie dedykowaną tabelę z połączoną z metatabelką za pomocą funkcji {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. === {{Code|m.NpDane}} === ==== Odpowiednik szablonowy ==== Odpowiednik szablonowy jest pod nazwą {{s|NpDane}}. Jego parametry są podobne do jego wersji bibliotecznej. Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce. * Szablon {{s|NpDane}} korzysta z funkcji bibliotecznej {{m|Nazwy|NpDane}}, więc parametry obu są wręcz takie same, a nawet podobne. Chociaż ta sama nazwa funkcji w ramce i kodzie {{lpg|Lua}}, to używanie ich nie jest dokładnie takie samo, funkcja biblioteczna nie potrzebuje parametru {{Parametr|wyspecjalizowana|tak}}, a ramka już tak, a szablon {{s|NpDane}}, który korzysta z tej ramki, to nieobecność, lub obecność z wartością pustą, tego parametru powoduje, że przyjmowane są parametry rodzica, a nie dziecka, które wymagają jego niepustość. ==== Funkcja biblioteczna ==== Szablon służy przede wszystkim do tłumaczenia angielskich nazw przestrzeni nazw na ich wersję w jakimś języku i operacji odwrotnej, a także numer przestrzeni nazw na jej nazwę w nim angielską lub w jakimś języku, lub odwrotnie, umożliwia też na przetłumaczenie nazwy przestrzeni nazw lub identyfikatora przestrzeni na jej nazwę polską, jeżeli istnieje. Funkcja {{m|Nazwy|NpDane}} przyjmuje te same parametry, co {{m|Nazwy|Np}}, oprócz wywołania ramkowego: {{Code|uchwyt}} (która w tej funkcji w sposób inny jest zdefiniowana, nie jak w funkcji: {{m|Nazwy|Np}}), jak oba, którego tutaj w nim nie ma, a jako zwykła funkcja biblioteczna może przyjmować ten parametr. Te zmienne działają podobnie w obu procedurach, z tą różnicą, że mamy inny zestaw nazw przestrzeni nazw (czasami bez numerów {{Code|id}} - identyfikatorów tych obsługiwanych przestrzeni nazw, a te podstawowe one je mają, jeżeli da się je powiązać z pierwszą funkcją w drugiej, jedynie w takim przypadku one występują) i można też użyć parametrów dodatkowych, które są niedostępne w pierwszej funkcji, a w drugiej już tak. Dodatkowo on przyjmuje argumenty: {{OpisParametrów | 1 = Adres kodowy projektu siostrzanego lub lokalnego polskiego {{Code|Wikibooks}}:|nagłówek1=tak | 2 = {{Code|klucz projektu}} | _2 = Kody języka i projektu podana w jednej zmiennej oddzielone od siebie dwukropkami, może być dowolna liczba tych kodów. | 3 = {{Code|kod projektu}} | _3 = Kod projektu danego wiki. | 4 = {{Code|kod języka}} | _4 = kod języka danego wiki. | 5 = {{Code|po polsku}} |_5 = Tłumaczy nazwę kanoniczną danej przestrzeni nazw na jej wersję polską, tzn. na język polski, a jeżeli jej wersja polska nie istnieje, to pisze jej wersję w języku angielskim, czyli w postaci nazwy kanonicznej. | 6 = {{Code|awaryjnie}} | _6 = Za pomocą projektu {{NS|l=tak|k=d}} tłumaczy daną nazwę przestrzeni nazw w jednym języku (jej nazwę kanoniczną jakieś przestrzeni nazw) na drugi, gdy wartość jest pusta, to tłumaczy na jej nazwę kanoniczną, jeżeli, przy tym parametrze lub bez, jej wersja w innym danym języku nie istnieje zdefiniowana w module {{m|Nazwy/przestrzenie}}. | 7 = Parametry: {{Code|nazwij projektem}} i {{Code|nazwij dyskusją projektu}} używa się tak samo jak dla funkcji {{m|Nazwy|Np}}, tylko z różnicą, że w funkcji {{m|Nazwy|NpDane}} musimy skorzystać koniecznie z parametru {{Code|kanoniczna}} z wartością niepustą, a wtedy wydrukowane wartości są w postaci wersji kanonicznej w języku angielskim, tak jak z ostatnim szablonem.|nagłówek7=tak }} ===== Używanie kluczy projektu, kodów projektu i kodów języka ===== Kody nazw piszemy, jak zwykle, z małej litery, co jest zalecane, ale można je pisać z liter o dowolnej wielkości. ====== Użycie różnych kodów i ich równoważność ====== Kody projektu i języka możemy pisać ze względu na dwa sposoby, w zależności jakich zmiennych używamy, możemy pisać tzw. grupę tych kodów w jednej zmiennej, wtedy się liczy ostateczny adres do danego projektu w jakieś wersji językowej, tylko jeden, a nie n-wersji danego języka i m-wersji danego projektu, czyli: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local wynik = nazwy_modul.NpDane{ ..., ["klucz projektu"] = "en:de:w:ru:en:q:pt", ... }; </syntaxhighlight> * Najważniejsze są kody projektu końcowe, podobnie ma się sprawa z kodami języków, tutaj kodami projektów są: {{Code|w}} ({{NS|l=tak|k=w}}) i {{Code|q}} ({{NS|l=tak|k=q}}), a kodami języków są: {{Code|en}} ({{lpg|{{#invoke:lang|hasło|en}}}}), {{Code|de}} ({{lpg|{{#invoke:lang|hasło|de}}}}), {{Code|ru}} ({{lpg|{{#invoke:lang|hasło|ru}}}}), {{Code|en}} ({{lpg|{{#invoke:lang|hasło|en}}}}) i {{Code|pt}} ({{lpg|{{#invoke:lang|hasło|pt}}}}), czy końcowy kod projektu jest: {{Code|q}} ({{NS|l=tak|k=q}}) i kod języka {{Code|pt}} ({{lpg|{{#invoke:lang|hasło|pt}}}}). W powyższym przykładzie napisaliśmy mnóstwo kodów w postaci jednej zmiennej, to jest równoważne zapisowi, czyli ostatecznej wersji wspomnianej powyższego zapisu, też zapisaną za pomocą tej samej zmiennej: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local wynik_1 = nazwy_modul.NpDane{ ..., ["klucz projektu"] = "pt:q", ... }; local wynik_2 = nazwy_modul.NpDane{ ..., ["klucz projektu"] = "q:pt", ... }; </syntaxhighlight> Powyższy wynik rozpisujemy na dwie zmienne, w których podajemy tylko pojedyncze kody, a nie grupy, więc widziemy, ża zamiast podawania jednego parametru z interwiki, to możemy to rozbić na dwa parametry kodu projektu i języka, a nie używać to w jednej zmiennej, należy pamiętać, że w tych kodach, może być jedno interwiki, specjalnie dla projektu lub języka, do którego dana zmienna jest przystosowana: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local wynik = nazwy_modul.NpDane{ ..., ["kod projektu"] = "q", ["kod języka"] = "pt", ... }; </syntaxhighlight> ====== Nazwy wyświetlane przy użyciu tych kodów dla przestrzeni głównej ====== Nazwy bez użycia zmiennej powodujące wyświetlanie nazwy przestrzeni nazw '''głównej''' na różnych projektach w postaci nieprzetłumaczonej na język polski, wtedy uzyskujemy niezależnie od projektu wartość pustą, bo takie jest przedstawienie wartości niewyświetlanej przestrzeni głównej na każdym projekcie obsługujący przestrzenie nazw, czyli: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość równą ciągowi pustemu: "": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "", ["klucz projektu"] = "commons", }; ---- Zwraca wartość równą ciągowi pustemu: "": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "", ["kod projektu"] = "commons", }; </syntaxhighlight> A przy użyciu identyfikatora przestrzeni nazw przestrzeni głównej, wtedy uzyskujemy na wyjściu to samo, co powyżej, czyli wartość pustą, bo wartość {{Code|0}} jest odpowiednikiem przestrzeni głównej, czyli poniższe przykłady są odpowiedniami tych powyższych, czyli te dwa przykład, tak można powiedzieć, że to samo robią: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość równą ciągowi pustemu: "": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = 0, ["klucz projektu"] = "commons", }; ---- Zwraca wartość równą ciągowi pustemu: "": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = 0, ["kod projektu"] = "commons", }; </syntaxhighlight> 0 Przy użyciu zmiennej generującej wyświetlanie w postaci znaków o charakterze niepustej, wtedy jeżeli nie ma wartości kanonicznej dla danego języka projektu, to wyswietlana jest wartość {{Np|(main)|link=tak|kanoniczna=tak}}, a dla polskigo projektu {{Np|(main)|link=tak}}, a dla innych języków jest nazwa charakterystyczna dla danego języka pod warunkiem, jeżeli doda się tego obsługę, więc tego przykłady przy użyciu zmiennej {{Code|["wyświetlana"] {{=}} "tak"}}, więc: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość nazwy przestrzeni głównej: "(main)": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "", ["klucz projektu"] = "commons", ["wyświetlana"] = "tak", }; ---- Zwraca wartość nazwy przestrzeni głównej: "(main)": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "", ["kod projektu"] = "commons", ["wyświetlana"] = "tak", }; </syntaxhighlight> Przy użyciu identyfikatora przestrzeni nazw przestrzeni głównej, w takim przypadku uzyskujemy to samo co powyżej, tylko jest inaczej, oznaczana jest wtedy przestrzeń główna, dla tego samego projektu siostrzanego, w wersji charakterystycznej dla danego języka, tutaj dla angielskiego: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość nazwy przestrzeni głównej: "(main)": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = 0, ["klucz projektu"] = "commons", ["wyświetlana"] = "tak", }; ---- Zwraca wartość nazwy przestrzeni głównej: "(main)": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = 0, ["kod projektu"] = "commons", ["wyświetlana"] = "tak", }; </syntaxhighlight> ====== Nazwy wyświetlane przy użyciu tych kodów przetłumaczone je na język polski dla przestrzeni głównej ====== Z wyświetlaniem na ekranie przestrzeni nazw charakteryzujące się ciągiem niepustym mamy podobne wyniki, jak powyżej bez parametry {{Code|["wyświetlana"] {{=}} "tak"}}, tylko nazwa wyświetlana przestrzeni nazw jest po polsku (odpowiednia nazwa w języku polskim), a nie po angielsku (w języku danego projektu): Przy użyciu zmiennej generującej wyświetlanie w postaci znaków o charakterze niepustej, nazw przestrzeni nazw mający nazwy puste, ale zamienione na nazwy wyświetlane, ale w postaci języka polskiego, używając parametru {{Code|["po polsku"] {{=}} "tak"}}: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość nazwy przestrzeni głównej: "(główna)": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "", ["klucz projektu"] = "commons", ["wyświetlana"] = "tak", ["po polsku"] = "tak", }; ---- Zwraca wartość nazwy przestrzeni głównej: "(główna)": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "", ["kod projektu"] = "commons", ["wyświetlana"] = "tak", ["po polsku"] = "tak", }; </syntaxhighlight> Przy użyciu identyfikatora przestrzeni nazw głównej, czyli dla tej samej przestrzeni nazw, co powyżej, tylko ona jest inaczej oznaczana, to możemy zrobić to samo, co powyżej, tylko nazwa główna przestrzeni nazw jest inaczej zapisana, w postaci numerycznej, wtedy otrzymamy wynik taki sam, jak w powyższym przykładzie, bo w obu używaliśmy takiej samej przestrzeni, tylko różnie przepisaną: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość nazwy przestrzeni głównej: "(główna)": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = 0, ["klucz projektu"] = "commons", ["wyświetlana"] = "tak", ["po polsku"] = "tak", }; ---- Zwraca wartość nazwy przestrzeni głównej: "(główna)": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = 0, ["kod projektu"] = "commons", ["wyświetlana"] = "tak", ["po polsku"] = "tak", }; </syntaxhighlight> ====== Nazwy wyświetlane przy użyciu tych kodów dla przestrzeni innej niż główna ====== Nazwy bez użycia zmiennej powodujące wyświetlanie nazwy przestrzeni nazw '''niegłównej''' na różnych projektach w postaci nieprzetłumaczonej na język polski, tylko w wersji charakterystucznej dla języka danego projektu używaną w odwołaniu: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość równą ciągowi niepustemu: "Template": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "Template", ["klucz projektu"] = "commons", }; ---- Zwraca wartość równą ciągowi niepustemu: "Template": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "Template", ["kod projektu"] = "commons", }; </syntaxhighlight> A przy zamianie tej przestrzeni nazw w powyższym przykładzie na numer - identyfikator nazw, czyli {{Code|id}}, to identyfikator przestrzeni nazw, innej niż główna, z jej wersji nazwowej, otrzymamy wynik w postaci nazwy niepustej, bo to nie jest przestrzeń główna, oznaczana zerowy tym identyfikatorem, czyli w postaci tej liczby: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość równą ciągowi niepustemu: "Template": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = 10, ["klucz projektu"] = "commons", }; ---- Zwraca wartość równą ciągowi niepustemu: "Template": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = 10, ["kod projektu"] = "commons", }; </syntaxhighlight> Przy użyciu zmiennej generującej wyświetlanie w postaci znaków, o charakterze niepustości, przy użyciu tego parametru, otrzymujemy wynik, jak powyżej, bo nazwa wyświetlana przestrzeni jest od razu niepusta, bo przestrzeni nazw mają wartość niepustą, więc nie trzeba ich uznawać, że są inne: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość równą nazwie przestrzeni niegłównej: "Template": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "Template", ["klucz projektu"] = "commons", ["wyświetlana"] = "tak", }; ---- Zwraca wartość równą nazwie przestrzeni niegłównej: "Template": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "Template", ["kod projektu"] = "commons", ["wyświetlana"] = "tak", }; </syntaxhighlight> A gdy parametr {{Code|nazwa}} przyjmuje wartość liczbową w postaci identyfikatora {{Code|id}}, innej niż dla przestrzeni głównej, ale zapisaną dla tych samych przestrzeni nazw, jak powyżej, co czyni, że tutaj jest też podobnie, otzrymamy te same wartości, tylko jest inna reprezentacja parametrów wchodzących do funkcji, jak powyżej: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość równą nazwie przestrzeni niegłównej: "Template": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = 10, ["klucz projektu"] = "commons", ["wyświetlana"] = "tak", }; ---- Zwraca wartość równą nazwie przestrzeni niegłównej: "Template": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = 10, ["kod projektu"] = "commons", ["wyświetlana"] = "tak", }; </syntaxhighlight> Widzimy, jedynie dla przestrzeni niepustej, że użycie tego parametru, według przykładów powyżej, jest opcjonalne, a nawet zbędne, bo ten parametr w tym przypadku nic nie zmienia, zmienia tylko dla przestrzeni głównej, którego ciąg charakteryzujący tą przestrzeń jest pusty, a jej wersja wyświetlana posiada za to ciąg niepusty, o jej wersji kanonicznej {{Code|{{Np|(main)|link=tak|kanoniczna=tak}}}}, a w wersji polskiej {{Code|{{Np|(main)|link=tak}}}}, te nazwy można pomiędzy sobą tłumaczyć za pomocą funkcji {{m|Nazwy|NpDane}} lub szablonu {{s|NpDane}}. ====== Nazwy wyświetlane przy użyciu tych kodów przetłumaczone je na język polski dla przestrzeni innej niż główna ====== Z wyświetlaniem na ekranie przestrzeni nazw charakteryzujące ciągiem niepustym mamy podobne wyniki jak powyżej bez parametru {{Code|["wyświetlana"] {{=}} "tak"}}: Przy użyciu zmiennej generującej wyświetlanie w postaci znaków o charakterze niepustej przetłumaczonej na język polski, używając parametrów w postaci pewnych nazw niepusstych, dla projektów innych niż wq języku polskim, ale te przestrzenie nazw tłumaczymyna ich odpowiedniki polskie, jakie istnieją, na projektach właśnie, że polskich: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość równą nazwie przestrzeni niegłównej: "Szablon": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "Template", ["klucz projektu"] = "commons", ["po polsku"] = "tak", }; ---- Zwraca wartość równą nazwie przestrzeni niegłównej: "Szablon": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "Template", ["kod projektu"] = "commons", ["po polsku"] = "tak", }; </syntaxhighlight> Albo przy użyciu numeru {{Code|id}} (identyfikatora przestrzeni nazw), wtedy właśnie robimy to samo, co powyżej, tylko jest inna reprezentacja parametrów, ale ta sama przestrzeń, więc uzyskujemy te same wyniki, czyli o tej samej wartości, mimo, że wizulanie,a by inne parametry: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość równą nazwie przestrzeni niegłównej: "Szablon": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = 10, ["klucz projektu"] = "commons", ["po polsku"] = "tak", }; ---- Zwraca wartość równą nazwie przestrzeni niegłównej: "Szablon": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = 10, ["kod projektu"] = "commons", ["po polsku"] = "tak", }; </syntaxhighlight> Przy użyciu zmiennej generującej wyświetlanie, użzywając parametru wspoianego powyżej, w postaci znaków o charakterze niepustej przy użyciu tego parametru, co sugeruje, że ten argiment nic nie zmienia, ale jedynie wyświetla się to samo, co bez tego parametru: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość równą nazwie przestrzeni niegłównej: "Szablon": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "Template", ["klucz projektu"] = "commons", ["wyświetlana"] = "tak", ["po polsku"] = "tak", }; ---- Zwraca wartość równą nazwie przestrzeni niegłównej: "Szablon": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "Template", ["kod projektu"] = "commons", ["wyświetlana"] = "tak", ["po polsku"] = "tak", }; </syntaxhighlight> A tutaj przy użyciu identyfikatora przestrzeni nazw przestrzeni nazw niegłównej, czyli przestrzeni nazw charakteryzującej się jej wersją niewyświetlaną niepustą, z tymi samymi parametrami, co powyżej, z tymi samymi wartościami, tylko jest inna reprezentacja przestrzeni nazw: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość równą nazwie przestrzeni niegłównej: "Szablon": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = 10, ["klucz projektu"] = "commons", ["wyświetlana"] = "tak", ["po polsku"] = "tak", }; ---- Zwraca wartość równą nazwie przestrzeni niegłównej: "Szablon": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = 10, ["kod projektu"] = "commons", ["wyświetlana"] = "tak", ["po polsku"] = "tak", }; </syntaxhighlight> Widzimy, jedynie dla tej przestrzeni, że użycie wspomnianego tego parametru jest opcjonalne, bo nic w tym przypadki nie zmienia, bo przestrzeń nazw nie jest pusta, lub nie jest reprezentowana inaczej, niż przez liczbę {{Code|0}}. ===== Tłumaczenie nazw przestrzeni nazw z jednego języka na drugi ===== ====== Tłumaczenie nazw obcojęzycznych nazw przestrzeni nazw na jej wersję polską, tzn. jej język polski, i na język angielski, tzn. jej wersje angielską w postaci nazwy kanonicznej, albo identyfikator przestrzeni nazw lub operację przeciwną ====== Tłumaczenie na nazwę kanoniczną w języku angielskim, z nazwy polskiej, czy nazwy w innym języku, tutaj w języku polskim, w jakim ona jest jedynie dostępna, przy użyciu parametru {{Code|kanoniczna {{=}} "tak"}}: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Template": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "Szablon", ["klucz projektu"] = "pl:w", kanoniczna = "tak", }; ---- Zwraca wartość: "Template": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "Szablon", ["kod projektu"] = "w", ["kod języka"] = "pl", kanoniczna = "tak", }; </syntaxhighlight> Tłumaczenie identyfikatora przestrzeni nazw na nazwę kanoniczną, ale przestrzeni nazw są te same, co powyżej, tylko zamiast przestrzeni nazw: "Szablon", mamy to jej idenntyfiator, którym jest liczba: {{Code|10}}, wtedy otrzymamy te same wyniki, co powyżej: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Template": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = 10, ["klucz projektu"] = "pl:w", kanoniczna = "tak", }; ---- Zwraca wartość: "Template": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = 10, ["kod projektu"] = "w", ["kod języka"] = "pl", kanoniczna = "tak", }; </syntaxhighlight> Przypadek odwrotny, do poprzednich, dla tego samego projektu, gdy nie używamy tego parametru, ale przestrzenie nazw są tym razem po angielsku, jako nazwy kanoniczne, które są zamieniane na jej wersją charakterystyczną dla danego projektu, tutaj polską: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "Template", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "Template", ["kod projektu"] = "w", ["kod języka"] = "pl", }; </syntaxhighlight> Identyfikator przestrzeni nazw tłumaczymy na jego nazwę polską - ewentualnie, na wersję języka projektu, i dlatego tutaj używamy języka polskiego, ponieważ mamy do czynienia z projektem polskojęzycznym, bo kod języka projektu wskazuje tutaj na ten język: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = 10, ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = 10, ["kod projektu"] = "w", ["kod języka"] = "pl", }; </syntaxhighlight> ====== Tłumaczenie nazw przestrzeni na jej wersję w innych języku w jakikolwiek projekcie ====== Do tłumaczenia używamy parametru {{Code|awaryjnie}}, której użycie w funkcji {{m|Nazwy|NpDane}}, powoduje skorzystanie z bazy danym projektów {{Code|MediaWiki}}, czyli {{Code|{{NS|l=tak|w=tak|k=en:d|jw=tak}}}} (po angielsku), a inaczej {{Code|{{NS|l=tak|w=tak|k=d}}}} (po polsku): * Przy użyciu nazw przestrzeni nazw w postaci, nie identyfikatorów, nazwanej łańcuchem znaków,możemy daną przestrzeń przetłomaczyć na dany język, nie używając przy tym żadnych stron: {{Code|.json}}, w podstronach modułu {{Code|{{m|Nazwy/}}}}: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "Kategorie", ["klucz projektu"] = "de:w", awaryjnie = "tak", kanoniczna = "tak", }; local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "Category", ["klucz projektu"] = "de:w", awaryjnie = "tak", }; local nazwa_przestrzeni_nazw_3 = nazwy_modul.NpDane{ nazwa = "Категория", ["klucz projektu"] = "ru:w", awaryjnie = "tak", kanoniczna = "tak", }; local nazwa_przestrzeni_nazw_4 = nazwy_modul.NpDane{ nazwa = "Category", ["klucz projektu"] = "ru:w", awaryjnie = "tak", }; </syntaxhighlight> * Jako z ich wersją numeryczną, czyli w postaci identyfikatorów, nazwanej w postaci pewnego numeru, ale przestrzenie nazw są te same, co powyżej, tylko inaczej zapisane, a inne parametry są takie same, czyli z czterech przykładów generują się jedynie dwa, ale wyniki są te same: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = 14, ["klucz projektu"] = "de:w", awaryjnie = "tak", }; local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa 14, ["klucz projektu"] = "ru:w", awaryjnie = "tak", }; </syntaxhighlight> Przykłady tłumaczenia z jednej wersji językowej w danym języku na angielski (wersję kanoniczną) i odwrotnie # {{Code|{{s|NpDane|Kategorie|klucz projektu{{=}}de:w|awaryjnie{{=}}tak|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|Kategorie|klucz projektu=de:w|awaryjnie=tak|kanoniczna=tak}}}} # {{Code|{{s|NpDane|Category|klucz projektu{{=}}de:w|awaryjnie{{=}}tak}}}} → {{Tt|{{NpDane|Category|klucz projektu=de:w|awaryjnie=tak}}}} # {{Code|{{s|NpDane|Категория|klucz projektu{{=}}ru:w|awaryjnie{{=}}tak|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|Категория|klucz projektu=ru:w|awaryjnie=tak|kanoniczna=tak}}}} # {{Code|{{s|NpDane|Category|klucz projektu{{=}}ru:w|awaryjnie{{=}}tak}}}} → {{Tt|{{NpDane|Category|klucz projektu=ru:w|awaryjnie=tak}}}} Przykłady przy użyciu identyfikatorów: # {{Code|{{s|NpDane|14|klucz projektu{{=}}de:w|awaryjnie{{=}}tak}}}} → {{Tt|{{NpDane|Category|klucz projektu=de:w|awaryjnie=tak}}}} # {{Code|{{s|NpDane|14|klucz projektu{{=}}ru:w|awaryjnie{{=}}tak}}}} → {{Tt|{{NpDane|Category|klucz projektu=ru:w|awaryjnie=tak}}}} ===== Użycie parametru {{Code|link}} oraz zależność od projektu i języka, wyświetlanie nazw przestrzeni nazw po polsku ===== Przykłady poniżej i niektóre wywołania funkcji {{m|Nazwy|NpDane}} piszemy przy pomocy parametru {{Code|link}}, który posiłkujemy z {{Code|klucz projektu}}, przykładowo z pomożeniem użycia zmiennej {{Code|po polsku}}, ewentualnie z użyciem argumentu {{Code|kanoniczna}}, co powoduje wyświetlanie się linku do pewnej strony naa tym samym projekcie lub innym,a jeśli mamy nazwę kanoniczną, to otrzymamy w linku nazwę linku właśnie że wyświetlaną, np. w postaci: {{Np|(main)|link=tak}}: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "Szablon", link = "tak", ["klucz projektu"] = "pl:w", }; local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "Szablon", link = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; local nazwa_przestrzeni_nazw_3 = nazwy_modul.NpDane{ nazwa = "Template", link = "tak", ["klucz projektu"] = "en:w", ["po polsku"] = "tak", }; ---- Tutaj nazwa przestrzeni zostanie wyświetlona, jako nazwa linku, po angielsku, czyli w wersji kanonicznej local nazwa_przestrzeni_nazw_4 = nazwy_modul.NpDane{ nazwa = "Template", link = "tak", kanoniczna = "tak", ["klucz projektu"] = "en:w", ["po polsku"] = "tak", }; local nazwa_przestrzeni_nazw_5 = nazwy_modul.NpDane{ nazwa = "", link = "tak", ["klucz projektu"] = "en:w", }; local nazwa_przestrzeni_nazw_6 = nazwy_modul.NpDane{ nazwa = "", link = "tak", kanoniczna = "tak", ["klucz projektu"] = "en:w", }; local nazwa_przestrzeni_nazw_7 = nazwy_modul.NpDane{ nazwa = "", link = "tak", ["klucz projektu"] = "en:w", ["po polsku"] = "tak", }; ---- Tutaj nazwa przestrzeni zostanie wyświetlona, jako nazwa linku, po angielsku, czyli w wersji kanonicznej local nazwa_przestrzeni_nazw_8 = nazwy_modul.NpDane{ nazwa = "", link = "tak", kanoniczna = "tak", ["klucz projektu"] = "en:w", ["po polsku"] = "tak", }; </syntaxhighlight> Teraz będziemy, to robili przy użyciu identyfikatorów przestrzeni nazw, który będziemy tłumaczyć na jego wersję charakterystyczną dla danego projektu, nazwę kanoniczną lub na jego odpowiednik polski, ale mamy te same przykłady, co powyżej, bo te same przestrzenie nazw, tylko z tą różnicą, że ona jest inaczej zapisana, więc otrzymamy te same wyniki, więc: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = 10, link = "tak", ["klucz projektu"] = "pl:w", }; local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = 10, link = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; local nazwa_przestrzeni_nazw_3 = nazwy_modul.NpDane{ nazwa = 10, link = "tak", ["klucz projektu"] = "en:w", ["po polsku"] = "tak", }; ---- Tutaj nazwa przestrzeni zostanie wyświetlona, jako nazwa linku, po angielsku, czyli w wersji kanonicznej local nazwa_przestrzeni_nazw_4 = nazwy_modul.NpDane{ nazwa = 10, link = "tak", kanoniczna = "tak", ["klucz projektu"] = "en:w", ["po polsku"] = "tak", }; local nazwa_przestrzeni_nazw_5 = nazwy_modul.NpDane{ nazwa = 0, link = "tak", ["klucz projektu"] = "en:w", }; local nazwa_przestrzeni_nazw_6 = nazwy_modul.NpDane{ nazwa = 0, link = "tak", kanoniczna = "tak", ["klucz projektu"] = "en:w", }; local nazwa_przestrzeni_nazw_7 = nazwy_modul.NpDane{ nazwa = 0, link = "tak", ["klucz projektu"] = "en:w", ["po polsku"] = "tak", }; ---- Tutaj nazwa przestrzeni zostanie wyświetlona, jako nazwa linku, po angielsku, czyli w wersji kanonicznej local nazwa_przestrzeni_nazw_8 = nazwy_modul.NpDane{ nazwa = 0, link = "tak", kanoniczna = "tak", ["klucz projektu"] = "en:w", ["po polsku"] = "tak", }; </syntaxhighlight> ---- Przykłady funkcji w wyniku są: # {{Code|{{s|NpDane|nazwa{{=}}Szablon|link{{=}}tak|klucz projektu{{=}}pl:w}}}} → {{Tt|{{NpDane|nazwa=Szablon|link=tak|klucz projektu=pl:w}}}} # {{Code|{{s|NpDane|nazwa{{=}}Szablon|link{{=}}tak|klucz projektu{{=}}pl:w|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=Szablon|link=tak|klucz projektu=pl:w|kanoniczna=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}|link{{=}}tak|klucz projektu{{=}}pl:w}}}} → {{Tt|{{NpDane|nazwa=|link=tak|klucz projektu=pl:w}}}} # {{Code|{{s|NpDane|nazwa{{=}}|link{{=}}tak|klucz projektu{{=}}pl:w|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=|link=tak|klucz projektu=pl:w|kanoniczna=tak}}}} Gdy parametr {{Code|nazwa}} jest liczbą, odpowiedniki tych samych przykładów, co powyżej, tylko przestrzeń nazw jest w postaci numerycznej: # {{Code|{{s|NpDane|nazwa{{=}}10|link{{=}}tak|klucz projektu{{=}}pl:w}}}} → {{Tt|{{NpDane|nazwa=10|link=tak|klucz projektu=pl:w}}}} # {{Code|{{s|NpDane|nazwa{{=}}10|link{{=}}tak|klucz projektu{{=}}pl:w|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=10|link=tak|klucz projektu=pl:w|kanoniczna=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}0|link{{=}}tak|klucz projektu{{=}}pl:w}}}} → {{Tt|{{NpDane|nazwa=0|link=tak|klucz projektu=pl:w}}}} # {{Code|{{s|NpDane|nazwa{{=}}0|link{{=}}tak|klucz projektu{{=}}pl:w|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=0|link=tak|klucz projektu=pl:w|kanoniczna=tak}}}} ---- ---- Inne przykłady, projektu niepolskiego, ale mającej jego wersje polską: # {{Code|{{s|NpDane|nazwa{{=}}Template|link{{=}}tak|klucz projektu{{=}}en:w|po polsku{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=Template|link=tak|klucz projektu=en:w|po polsku=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}Template|link{{=}}tak|klucz projektu{{=}}en:w|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=Template|link=tak|klucz projektu=en:w|kanoniczna=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}|link{{=}}tak|klucz projektu{{=}}en:w|po polsku{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=|link=tak|klucz projektu=en:w|po polsku=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}|link{{=}}tak|klucz projektu{{=}}en:w|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=|link=tak|klucz projektu=pl:w|kanoniczna=tak}}}} Gdy parametr {{Code|nazwa}} jest liczbą, odpowiedniki przykładów powyższych z innym przedstawieniem przestrzeni nazw: # {{Code|{{s|NpDane|nazwa{{=}}10|link{{=}}tak|klucz projektu{{=}}en:w|po polsku{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=10|link=tak|klucz projektu=en:w|po polsku=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}10|link{{=}}tak|klucz projektu{{=}}en:w|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=10|link=tak|klucz projektu=en:w|kanoniczna=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}0|link{{=}}tak|klucz projektu{{=}}en:w|po polsku{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=0|link=tak|klucz projektu=en:w|po polsku=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}0|link{{=}}tak|klucz projektu{{=}}en:w|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=0|link=tak|klucz projektu=pl:w|kanoniczna=tak}}}} ---- ---- A dla projektu niemającej wersji polskiej, np. tylko wersję angielską: # {{Code|{{s|NpDane|nazwa{{=}}Template|link{{=}}tak|klucz projektu{{=}}commons|po polsku{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=Template|link=tak|klucz projektu=commons|po polsku=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}Template|link{{=}}tak|klucz projektu{{=}}commons|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=Template|link=tak|klucz projektu=commons|kanoniczna=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}|link{{=}}tak|klucz projektu{{=}}commons|po polsku{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=|link=tak|klucz projektu=commons|po polsku=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}|link{{=}}tak|klucz projektu{{=}}commons|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=|link=tak|klucz projektu=commons|kanoniczna=tak}}}} Gdy parametr {{Code|nazwa}} jest liczbą, wtedy mamy te same przykłady, co powyżej, tylko ta sama przestrzeń nazw jest w innej postaci przedstawiona: # {{Code|{{s|NpDane|nazwa{{=}}10|link{{=}}tak|klucz projektu{{=}}commons|po polsku{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=10|link=tak|klucz projektu=commons|po polsku=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}10|link{{=}}tak|klucz projektu{{=}}commons|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=10|link=tak|klucz projektu=commons|kanoniczna=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}0|link{{=}}tak|klucz projektu{{=}}commons|po polsku{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=0|link=tak|klucz projektu=commons|po polsku=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}0|link{{=}}tak|klucz projektu{{=}}commons|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=0|link=tak|klucz projektu=commons|kanoniczna=tak}}}} ===== Zamiana przestrzeni nazw przedmiotowej na dyskusji lub przeciwnie, i transformacje tożsame ===== * Używać tu będziemy dodatkowo parametrów: {{Code|przedmiotowa}} - zamiany przestrzeni nazw na przedmiotową, czy: {{Code|dyskusja}} - na dyskusji. Można też przechodzić z tej samej przestrzeni nazw w nią samą, lub do niego skojarzonej, tzn. z przedmiotowej do dyskusji lub odwrotnie, wtedy w tym przypadku otrzymujemy nazwę po polsku, dla poskich projektów, dla projektów w danym języku, na nazwę w danym języku, przykłady: <syntaxhighlight lang="lua"> local nazwy_modul = require("Module:Nazwy"); -- Gdy nazwą przestrzeni jest nazwa niekanoniczna: ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_przedmotowej_1 = nazwy_modul.NpDane{ nazwa = "Dyskusja szablonu", przedmiotowa = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_dyskusji_1 = nazwy_modul.NpDane{ nazwa = "Szablon", dyskusja = "tak", ["klucz projektu"] = "pl:w", }; -- Gdy nazwą przestrzeni jest nazwa kanoniczna ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_przedmotowej_2 = nazwy_modul.NpDane{ nazwa = "Template talk", przedmiotowa = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_dyskusji_2 = nazwy_modul.NpDane{ nazwa = "Template", dyskusja = "tak", ["klucz projektu"] = "pl:w", }; -- Gdy prrzestrzeń nazw jest w postaci jej numeru id ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_przedmotowej_3 = nazwy_modul.NpDane{ nazwa = 11, przedmiotowa = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_dyskusji_3 = nazwy_modul.NpDane{ nazwa = 10, dyskusja = "tak", ["klucz projektu"] = "pl:w", }; </syntaxhighlight> Gdy użyjemy dodatkowo parametr {{Code|kanoniczna}}, wtedy otrzymujemy te nazwy w postaci nazwy w języku angielskim (kanoniczne) tych przestrzeni nazw, są te same przykłady, co powyżej, tylko jest inna wersja językowa w wyniku tej samej otrzymanej przestrzeni nazw: <syntaxhighlight lang="lua"> local nazwy_modul = require("Module:Nazwy"); -- Gdy nazwą przestrzeni jest nazwa niekanoniczna: ---- Zwraca wartość: "Template": local nazwa_przestrzeni_przedmotowej_1 = nazwy_modul.NpDane{ nazwa = "Dyskusja szablonu", przedmiotowa = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Template talk": local nazwa_przestrzeni_dyskusji_1 = nazwy_modul.NpDane{ nazwa = "Szablon", dyskusja = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", -- Gdy nazwą przestrzeni jest nazwa kanoniczna: ---- Zwraca wartość: Template": local nazwa_przestrzeni_przedmotowej_2 = nazwy_modul.NpDane{ nazwa = "Template talk", przedmiotowa = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Template talk": local nazwa_przestrzeni_dyskusji_2 = nazwy_modul.NpDane{ nazwa = "Template", dyskusja = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; -- Gdy przestrzeń nazw jest w postaci jej numeru id: ---- Zwraca wartość: ""Template": local nazwa_przestrzeni_przedmotowej_3 = nazwy_modul.NpDane{ nazwa = 11, przedmiotowa = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Template talk": local nazwa_przestrzeni_dyskusji_3 = nazwy_modul.NpDane{ nazwa = 10, dyskusja = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; </syntaxhighlight> Przejście z tej samej przestrzeni na tą samą możemy uzyskać to wtedy, tzw. przejście tożsamościowe, poprzez tłumaczenie nazw dyskusji na dysusji, i nazw przedmiotowych na przedmiotowe, dla róznych projektów, nie tylko polskich, a tutaj mamy dla języka polskiego, tylko repezentacja językowa może być inna, tutaj jest ta polska (w wersji niekanonicznej) i angielska (w wersji kanonicznej): <syntaxhighlight lang="lua"> local nazwy_modul = require("Module:Nazwy"); -- Gdy nazwą przestrzeni jest nazwa niekanoniczna, gdy w ty przypadku chcemy uzyskać nazwę charakterystyczną dla danego języka danego projektu: ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_przedmotowej_1 = nazwy_modul.NpDane{ nazwa = "Szablon", przedmiotowa = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_dyskusji_1 = nazwy_modul.NpDane{ nazwa = "Dyskusja szablonu", dyskusja = "tak", ["klucz projektu"] = "pl:w", }; -- Gdy nazwą przestrzeni jest nazwą kanoniczną: ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_przedmotowej_2 = nazwy_modul.NpDane{ nazwa = "Template", przedmiotowa = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_dyskusji_2 = nazwy_modul.NpDane{ nazwa = "Template talk", dyskusja = "tak", ["klucz projektu"] = "pl:w", }; -- Gdy przestrzeń nazw jest w postaci jej numeru id: ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_przedmotowej_3 = nazwy_modul.NpDane{ nazwa = 10, przedmiotowa = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_dyskusji_3 = nazwy_modul.NpDane{ nazwa = 11, dyskusja = "tak", ["klucz projektu"] = "pl:w", }; </syntaxhighlight> Gdy użyjemy dodatkowo parametr {{Code|kanoniczna}}, uzyskamy nazwę angielską danej przestrzeni nazw, nawet gdy to jest przestrzeń podana w języku polskim, dla polskiego projektu, lub w jezyku charakterystycznym dla danego projektu, jeżeli mamy to w bazie przestrzeni nazw w formie pliku {{Code|.json}}, podane w podstronach modułu {{m|Nazwy/}}, to te nazwy wtedy obsługuje: <syntaxhighlight lang="lua"> local nazwy_modul = require("Module:Nazwy"); -- Gdy nazwą przestrzeni jest nazwą niekanoniczną: ---- Zwraca wartość: "Template": local nazwa_przestrzeni_przedmotowej_1 = nazwy_modul.NpDane{ nazwa = "Szablon", przedmiotowa = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Template talk": local nazwa_przestrzeni_dyskusji_1 = nazwy_modul.NpDane{ nazwa = "Dyskusja szablonu", dyskusja = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; -- Gdy nazwą przestrzeni jest nazwą kanoniczną: ---- Zwraca wartość: Template": local nazwa_przestrzeni_przedmotowej_2 = nazwy_modul.NpDane{ nazwa = "Template", przedmiotowa = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Template talk": local nazwa_przestrzeni_dyskusji_2 = nazwy_modul.NpDane{ nazwa = "Template talk", dyskusja = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; -- Gdy przestrzeń nazw jest w postaci jej numeru id: ---- Zwraca wartość: "Template": local nazwa_przestrzeni_przedmotowej_3 = nazwy_modul.NpDane{ nazwa = 10, przedmiotowa = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", } ---- Zwraca wartość: "Template talk": local nazwa_przestrzeni_dyskusji_3 = nazwy_modul.NpDane{ nazwa = 11, dyskusja = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; </syntaxhighlight> ===== Nazwy przestrzeni z myślnikami dolnymi ===== Jeżeli nazwy danych przestrzeni, niezależnie, czy są w postaci niekanonicznej, czy nie, ale jeżeli w nazwie zawierają spację, to one jako w wyniku zamiast nich będą miały dolny myślnik zamiast spacji, gdy użyjemy parametru: {{Code|["z myślnikami dolnymi"] {{=}} "tak"}}, czyli: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Dyskusja_szablonu": local nazwa_przestrzeni_1 = nazwy_modul.NpDane{ nazwa = "Dyskusja szablonu", ["z myślnikami dolnymi"] = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Dyskusja_szablonu": local nazwa_przestrzeni_2 = nazwy_modul.NpDane{ nazwa = "Template talk", ["z myślnikami dolnymi"] = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Template_talk";: local nazwa_przestrzeni_3 = nazwy_modul.NpDane{ nazwa = "Dyskusja szablonu", kanoniczna = "tak", ["z myślnikami dolnymi"] = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Template_talk": local nazwa_przestrzeni_4 = nazwy_modul.NpDane{ nazwa = "Template talk", kanoniczna = "tak", ["z myślnikami dolnymi"] = "tak", ["klucz projektu"] = "pl:w", }; </syntaxhighlight> ===== Uzyskiwanie kanonicznej nazwy projektu, nazwy przedmiotowej i jej dyskusji, z jej odpowiednika nazwy przestrzeni nazw ===== Dla przestrzeni nazw: {{NpDane|Wikipedia|link=tak|klucz projektu=pl:w}}, jej nazwy projektowej: {{NpDane|Wikipedia|link=tak|kanoniczna=tak|nazwij projektem=tak|klucz projektu=pl:w}} możemy uzyskać, gdy dla funkcji {{m|Nazwy|NpDane}} podamy parametr: {{Code|["nazwij projektem"] {{=}} "tak"}}, dla przestrzeni przedmiotowej lub dyskusji: {{NpDane|Wikipedia talk|link=tak|klucz projektu=pl:w}}, jej nazwy projektowej: {{NpDane|Wikipedia talk|link=tak|kanoniczna=tak|nazwij dyskusją projektu=tak|klucz projektu=pl:w}}, gdy podamy parametr {{Code|["nazwij dyskusją projektu"] {{=}} "tak"}}, czyli: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Wikipedia": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "Wikipedia", ["nazwij projektem"] = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Project": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "Wikipedia", ["nazwij projektem"] = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Project": local nazwa_przestrzeni_nazw_3 = nazwy_modul.NpDane{ nazwa = "Dyskusja Wikipedii", ["nazwij projektem"] = "tak", przedmiotowa = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Dyskusja Wikipedii": local nazwa_przestrzeni_nazw_4 = nazwy_modul.NpDane{ nazwa = "Wikipedia", ["nazwij dyskusją projektu"] = "tak", dyskusja = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Project talk": local nazwa_przestrzeni_nazw_5 = nazwy_modul.NpDane{ nazwa = "Dyskusja Wikipedii", ["nazwij dyskusją projektu"] = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Project talk": local nazwa_przestrzeni_nazw_6 = nazwy_modul.NpDane{ nazwa = "Wikipedia", ["nazwij dyskusją projektu"] = "tak", dyskusja = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; </syntaxhighlight> ===== Różne wersje sprawdzania istnienia przestrzeni nazw ===== ====== Sprawdzanie, czy dana przestrzeń jest poprawnie podane, czy istnieje ====== Możemy sprawdzić, istnienie podanej przestrzeni nazw poprzez użycie parametru {{Code|istnieje}} z wartością niepustą, wtedy dla obu jej wartości uzyskujemy wyniki, wskazujać, czy istnieją przestrzenie nazw istniejące i które nie mają prawa istnieć z racji bytu, w pierwszym przypadku otrzymamy treściwy wynik, a w drugim komunikatro błędzie: <syntaxhighlight lang="lua">0 local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "Szablon", istnieje = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Moja przestrzeń": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "Moja przestrzeń", istnieje = "", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "(błąd)": local nazwa_przestrzeni_nazw_3 = nazwy_modul.NpDane{ nazwa = "Moja przestrzeń", istnieje = "tak", ["klucz projektu"] = "pl:w", }; </syntaxhighlight> Gdy dana przestrzeń nie istnieje przy użyciu wartości niepustej parametru {{Code|istnieje}}, wtedy otrzymujemy błąd funkcji w postaci tekstu {{Code|(błąd)}}, a gdy nie podamy tego parametru, to otrzymamy nazwę sformatowaną danej nieznanej przestrzeni nazw po usunięciu wszystkich spacji lub dolnych myślników na początku i końcu ciągu oraz zbędnych wewnątrz tego ciągu i zastąpieniu ich kolejnych jedną spacją. A gdy jednak przestrzeń nazw istnieje, to funkcja zachowuje się tak, jakby nie podano tego parametru. ====== Łatwe sprawdzanie istnienia danej przestrzeni nazw ====== Sprawdzamy tutaj istnienie podanej przestrzeni nazw w parserach wikikodu {{Code|MediaWiki}}, wtedy dla nieistniejącej przestrzeni nazw otrrzymamy wynik pusty, a dla istniejącej już nie, wyjątkiem jest przestrzeń główna, dla której wartość otrzymana jest pusta, co nie trudno jest odróżnić od stanu błędu funkcji, chyba, że użyjemy pewnego parametru opisywanego poniżej: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "Szablon", istnieje = "tak", ["wynik błędu nietekstowy"] = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Moja przestrzeń": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "Moja przestrzeń", istnieje = "", ["wynik błędu nietekstowy"] = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: nil: local nazwa_przestrzeni_nazw_3 = nazwy_modul.NpDane{ nazwa = "Moja przestrzeń", istnieje = "tak", ["wynik błędu nietekstowy"] = "tak", ["klucz projektu"] = "pl:w", }; </syntaxhighlight> W kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}} powyższe wywołanie przy nieznanych przestrzeniach przyjmuje wartość {{Code|nil}} (ostatni przykład), a wikikodzie w szablonach wartość pustą: "". A jeżeli chcemy sprawdzić, za pomocą funkcji parsera wikikodu: {{Code|{{s|#if:coś|wtedy|przeciwnie}}}}, używając odpowiednika szablonowego {{s|NpDane}}, wtedy musimy użyć parametru: {{Code|["wynik błędu nietekstowy"] {{=}} "tak"}}, używany z: {{Code|istnieje {{=}} "tak"}}, gdy dana przestrzeń nie istnieje, wtedy uzyskamy wartość pustą (bo wartość {{Code|nil}} jest tłumaczone na to), a żeby odróżnić ją od nazwy przestrzeni nazw głównej, to należy dodatkowo użyć: {{Code|["wyświetlana"] {{=}} "tak"}}, wtedy dla wartości pustej tej nazwy przestrzeni nazw, uzyskujemy w wyniku czego nie wartość pustą, czyli: {{Code|(główna)}} dla projektów polskich, lub po użyciu parametru {{Code|["po polsku"] {{=}} "tak"}} z wartością niepustą albo {{Code|(main)}} dla przestrzeni angielskich bądź innych, gdy nie ma obsługi w bazie przestrzeni nazw, tę nazwę można uzyskać też przy parametrze {{Code|kanoniczna {{=}} "tak"}} dla każdego obsługiwanego projektu {{Strong|wiki}}, więc przy takich realiach łatwo to odróżnić od komunikatu błędu tej funkcji. ===== Uzyskiwanie uchwytu danej przestrzeni nazw, analogicznie do funkcji {{Code|mw.site.namespaces}} (ale w sposób inny sformułowana), ale też z innym zestawem parametrów ===== Uchwyt niskopoziomowy do danej przestrzeni nazw nie można uzyskać przy pomocy kodu z: {{Code|mw.site.namespaces}}, ponieważ jest on dla przestrzeni na bieżącym projekcie, a tutaj mamy siostrzany. Funkcja uzyskująca uchwyt ignoruje wielkość liter w przestrzeni nazw oraz powtórzone odstępy zrealizowane za pomocą spacji lub dolnych myślników. To wysokopoziomowe uzyskanie uchwytu można utworzyć przy pomocy parametru: {{Code|uchwyt}}: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local uchwyt_1 = nazwy_modul.NpDane{ nazwa = "Szablon", uchwyt = "tak", ["klucz projektu"] = "pl:w", }; local uchwyt_2 = nazwy_modul.NpDane{ nazwa = "Template", uchwyt = "tak", ["klucz projektu"] = "pl:w", }; local uchwyt_3 = nazwy_modul.NpDane{ nazwa = 10, uchwyt = "tak", ["klucz projektu"] = "pl:w", }; </syntaxhighlight> Funkcja {{Code|nazwy_modul.NpDane}} jest bardziej ogólniejsza niż {{Code|mw.site.namespaces}} na projekcie bieżącym, ponieważ ona uwzględnia inne projekty niż polski {{NS|l=tak|w=tak}}, bo uwzględnia większą liczbę nazw przestrzeni nazw, czyli ona obejmuje wszystkie znane przestrzenie nazw, i dlatego należy stosować tę funkcję, a nie dedykowaną tabelę z połączoną z metatabelką za pomocą funkcji {{lpg|Lua}}. == Funkcje nazw serwisowych projektów siostrzanych polskiego {{NS|w=tak|l=tak|pk=d}} == === {{Code|m.NAZWASERWISU()}} === ==== Odpowiednik szablonowy ==== Odpowiednik szablonowy jest pod nazwą {{s|NAZWASERWISU}} (skrót: {{s|NS}}). Jego parametry są podobne do jego wersji bibliotecznej. Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce. ==== Funkcja biblioteczna ==== Szablon jest używany do uzyskania nazwy serwisu danej wiki, ewentualnie w postaci linku do strony głównej projektu danej wiki lub do artykułu o danej wiki na {{lpg|Wikipedia|Wikipedii}}, w jakieś podanej wersji językowej. {{OpisParametrów | 1 = Parametry podstawowe...| nagłówek1=tak | 2 = {{Parametr|wyspecjalizowana|tak}} | _2 = Tylko dla tej funkcji wywołanej w postaci ramki w wikikodzie w szablonach, gdy do niej wsadzamy bezpośrednio jako dzieci, a w przypadku z rodzica to ten parametr jest niepotrzebny lub powinien przyjmować wartość pustą, | 3 = Inne parametry...| nagłówek3=tak | 4 = Ta funkcja dalsze ma takie same parametry, co szablon w jego pełnej nazwie: {{s|NAZWASERWISU}}, lub skrótowej: {{s|NS}}.|nagłówek4=tak | 5 = Wszystkie powyższe zmienne są opcjonalne|nagłówek5=tak }} ===== Opis parametrów użytych razem z parametrem {{Code|link}} ===== Szablon przyjmuje parametr opcjonalny {{Code|link}} ({{s|NS|l{{=}}tak}}), dzięki któremu jest wyświetlany link, do strony głównej tego projektu, w postaci: {{Code|{{NS|l=tak}}}}, o nazwie linku, będącą jednocześnie nazwą serwisu projektu '''{{NS|l=tak}}'''. Gdy dodamy parametr {{Code|wikipedia{{=}}tak}} do wywołania {{Code|{{s|NS|l{{=}}tak|w{{=}}tak}}}}, wtedy uzyskamy wynik: {{Code|{{NS|l=tak|w=tak}}}}, w innym przypadku, gdy linkujemy do angielskiej {{NS|w=tak|l=tak|pk=mj|k=tak}}, wtedy dla wywołania {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|kj{{=}}en}}}} mamy: {{Code|{{NS|l=tak|w=tak|kj=en}}}}, a w przypadku angielskiego {{NS|w=tak|l=tak|pk=d}} dla wikikodu {{Code|{{s|NS|l{{=}}tak|kj{{=}}en}}}} mamy wynik w postaci: {{Code|{{NS|l=tak|kj=en}}}}, a jeśli użyjemy parametru {{Code|kod projektu}}, wtedy wywołanie {{Code|{{s|NS|link{{=}}tak|kp{{=}}s}}}}, to mamy: {{Code|{{NS|l=tak|kp=s}}}}, a gdy dodamy dodatkowo {{Code|wikipedia{{=}}tak}}, zatem {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|kp{{=}}s}}}} jest o wyniku: {{Code|{{NS|l=tak|w=tak|kp=s}}}}. {{OpisParametrów | 1 = Wyniki z parametrem {{Parametr|link|tak}} zostały obtoczone znacznikiem {{Tag|code}} dla odróżnienia rezultatu od reszty tekstu.|nagłówek1=tak }} ===== Wywołania szablonu z tekstem z małymi literami po linku (parametr: {{Code|po}}) i z dowolnym tekstem w nazwie linku (parametr: {{Code|za}}) ===== {{OpisParametrów | 1 = Parametr {{Parametr|link|tak}} w szablonie {{s|NAZWASERWISU}} mówi, że ma być podany link do strony głównej projektu lub artykułu na {{NS|l=tak|k=w}}. Można w nie podać parametr {{Parametr|po|<łańcuch tekstowy>}}, który jest za linkiem, podobnie {{Parametr|za|<łańcuch tekstowy>}}, który jest w nazwie linku, ale względem jej originalnej nazwy za nim.|nagłówek1=tak }} ====== Proste przykłady użycia, z linkiem do projektu bieżącego, przy użyciu parametru {{Code|link}} ====== Gdy chcemy wyświetlić link do polskiego projektu {{NS|w=tak|l=tak|pk=mj}} do jego strony głównej. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local link_1 = nazwy_modul.NAZWASERWISU{ link = "tak", po = "a", }; local link_2 = nazwy_modul.NAZWASERWISU{ link = "tak", za = "a", }; </syntaxhighlight> ; Analogiczne wywołanie szablonu{{Dk}} * {{Code|{{s|NS|l{{=}}tak|p{{=}}a}}}} → {{Tt|{{NS|l=tak|p=a}}}}, * {{Code|{{s|NS|l{{=}}tak|z{{=}}a}}}} → {{Tt|{{NS|l=tak|z=a}}}}. ; Kod wywołania tych szablonów: ;; Dla wywołania {{Code|{{s|NS|l{{=}}tak|p{{=}}a}}}}{{Dk}} {{PreNowiki|{{NS|l=tak|p=a}}}} ;; Dla wywołania {{Code|{{s|NS|l{{=}}tak|z{{=}}a}}}}{{Dk}} {{PreNowiki|{{NS|l=tak|z=a}}}} ====== Proste przykłady użycia, z linkiem do polskiej {{NS|w=tak|l=tak|k=w|pk=mj}}, przy użyciu parametru {{Code|link}} ====== Gdy chcemy wyświetlić link do artykułu o {{NS|w=tak|l=tak|k=b|pk=mj}} na polskiej {{NS|w=tak|l=tak|k=w|pk=mj}}. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local link_1 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", po = "a", }; local link_2 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", za = "a", }; </syntaxhighlight> ; Analogiczne wywołanie szablonu{{Dk}} * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|p{{=}}a}}}} → {{Tt|{{NS|l=tak|w=tak|p=a}}}}, * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|z{{=}}a}}}} → {{Tt|{{NS|l=tak|w=tak|z=a}}}}. ; Kod wywołania tych szablonów: ;; Dla wywołania {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|p{{=}}a}}}}{{Dk}} {{PreNowiki|{{NS|l=tak|w=tak|p=a}}}} ;; Dla wywołania {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|z{{=}}a}}}}{{Dk}} {{PreNowiki|{{NS|l=tak|w=tak|z=a}}}} ====== Przykłady użycia, z linkiem do obcojęzycznej {{NS|w=tak|l=tak|k=w|pk=mj}}, z polską podanego nazwą projektu, przy użyciu parametru {{Code|link}} ====== Gdy chcemy wyświetlić link do artykułu o {{NS|w=tak|l=tak|k=b|pk=mj}} na podanej obcojęzycznej {{NS|w=tak|l=tak|k=w|pk=mj}} podany za pomocą parametru {{Code|["klucz projektu"] {{=}} "en:s"}}. Jest to projekt: {{NS|l=tak|k=en:s}}, którego językiem jest: {{lpg|{{#invoke:lang|hasło|es}}}}. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local link_1 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", ["klucz projektu"] = "en:s", po = "a", }; local link_2 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", ["klucz projektu"] = "en:s", za = "a", }; </syntaxhighlight> ; Analogiczne wywołanie szablonu{{Dk}} * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|k{{=}}en:s|p{{=}}a}}}} → {{Tt|{{NS|l=tak|w=tak|k=en:s|p=a}}}}, * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|k{{=}}en:s|z{{=}}a}}}} → {{Tt|{{NS|l=tak|w=tak|k=en:s|z=a}}}}. ; Kod wywołania tych szablonów: ;; Dla wywołania {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|k{{=}}en:s|p{{=}}a}}}}{{Dk}} {{PreNowiki|{{NS|l=tak|w=tak|k=en:s|p=a}}}} ;; Dla wywołania {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|k{{=}}en:s|z{{=}}a}}}}{{Dk}} {{PreNowiki|{{NS|l=tak|w=tak|k=en:s|z=a}}}} ====== Przykłady użycia, z linkiem do obcojęzycznej {{NS|w=tak|l=tak|k=w|pk=mj}}, z niepolską podanego nazwą projektu, przy użyciu parametru {{Code|link}} ====== Gdy chcemy wyświetlić link do artykułu o {{NS|w=tak|l=tak|k=b|pk=mj}} do podanej obcojęzycznej {{NS|w=tak|l=tak|k=w|pk=mj}} podany za pomocą parametru {{Code|["klucz projektu"] {{=}} "en:s"}}. A nazwa linku ma być podana w języku tego projektu. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local link_1 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", ["klucz projektu"] = "en:s", ["w języku wiki"] = "tak", po = "a", }; local link_2 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", ["klucz projektu"] = "en:s", ["w języku wiki"] = "tak", za = "a", }; </syntaxhighlight> ; Analogiczne wywołanie szablonu{{Dk}} * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|k{{=}}en:s|jw{{=}}tak|p{{=}}a}}}} → {{Tt|{{NS|l=tak|w=tak|k=en:s|jw=tak|p=a}}}}, * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|k{{=}}en:s|jw{{=}}tak|z{{=}}a}}}} → {{Tt|{{NS|l=tak|w=tak|k=en:s|jw=tak|z=a}}}}. ; Kod wywołania tych szablonów: ;; Dla wywołania {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|k{{=}}en:s|jw{{=}}tak|p{{=}}a}}}}{{Dk}} {{PreNowiki|{{NS|l=tak|w=tak|k=en:s|jw=tak|p=a}}}} ;; Dla wywołania {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|k{{=}}en:s|jw{{=}}tak|z{{=}}a}}}}{{Dk}} {{PreNowiki|{{NS|l=tak|w=tak|k=en:s|jw=tak|za=a}}}} ===== Wywołania szablonu dotyczące, w {{NS|w=tak|l=tak|k=w|pk=mj}} iub nie, kodzie dla projektu {{NS|w=tak|l=tak|pk=m}} dla różnych wersji językowych ===== ====== Przykłady użycia funkcji {{Code|nazwy_modul.NAZWASERWISU()}} ====== Gdy chcemy podać nazwę projektu w postaci linku do artykułu strony głównej na {{NS|w=tak|l=tak|pk=mj}} lub artykułu na polskiej lub obcojęzycznej {{NS|w=tak|l=tak|k=w|pk=mj}}. Do jakiej {{NS|w=tak|l=tak|k=w|pk=mj}} ma być link, to wskazuje kod języka, np.: {{Code|["kod języka"] {{=}} "en"}}. Gdy nie podamy tego kodu, to linkujemy tylko do polskiego {{NS|w=tak|l=tak|pk=mj}} lub do polskiej {{NS|w=tak|l=tak|k=w|pk=mj}} (jeżeli podamy parametr {{Code|wikipedia {{=}} "tak"}}). A gdy podany jest ten kod, to możemy linkować nie tylko do polskich projektów siostrzanych polskiego {{NS|w=tak|l=tak|pk=mj}} (ale tylko różnych jego wersji językowych), ale też można linkować do obcojęzycznych projektów, którym jest Wikipedia do artykułu o tym projekcie. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local link_1 = nazwy_modul.NAZWASERWISSU{}; }; local link_2 = nazwy_modul.NAZWASERWISU{ link = "tak", }; local link_3 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", }; local link_4 = nazwy_modul.NAZWASERWISU{ link = "tak", ["kod języka"] = "pl", }; local link_5 = nazwy_modul.NAZWASERWISU{ link = "tak", ["kod języka"] = "en", }; local link_6 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", ["kod języka"] = "pl", }; local link_7 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", ["kod języka"] = "en", }; </syntaxhighlight> ====== Analogiczne wywołanie szablonu ====== * {{Code|{{s|NS}}}} → {{Tt|{{NS}}}}, * {{Code|{{s|NS|l{{=}}tak}}}} → {{Tt|{{NS|l=tak}}}}, * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak}}}} → {{Tt|{{NS|l=tak|w=tak}}}}, * {{Code|{{s|NS|l{{=}}tak|kj{{=}}pl}}}} → {{Tt|{{NS|l=tak|kj=pl}}}}, * {{Code|{{s|NS|l{{=}}tak|kj{{=}}en}}}} → {{Tt|{{NS|l=tak|kj=en}}}}, * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|kj{{=}}pl}}}} → {{Tt|{{NS|l=tak|w=tak|kj=pl}}}}, * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|kj{{=}}en}}}} → {{Tt|{{NS|l=tak|w=tak|kj=en}}}}. ===== Wywołanie szablonu dotyczące innego projektu niż ten ===== ====== Przykłady użycia funkcji {{Code|nazwy_modul.NAZWASERWISU()}} ====== Ale też możemy linkować do stron głównych innych projektów niż {{NS|w=tak|l=tak|pk=m}}. Robimy to za pomocą parametru: {{Code|["kod projektu"] {{=}} "s"}}, nie licąc parametru języka, ale też możemy linkować do artykułu o danym projekcie na {{NS|w=tak|l=tak|k=w|pk=mj}}. A jeżeli podamy kod języka {{Code|["kod języka"] {{=}} "en"}}, wtedy linkujemy do angielskich projektów, w tym również do {{NS|w=tak|l=tak|k=w|pk=mj}}. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Tutaj linkujemy do Wikiźródeł do jej strony głównej local linki_1 = nazwy_modul.NAZWASERWISU{ link = "tak", ["kod projektu"] = "s", }; --- Co powyżej, tylko do artykułu na Wikipedii o Wikiźródłach local linki_2 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", ["kod projektu"] = "s", }; -- Tutaj linkujemy do Wikibooksa do jej strony głównej w jakieś jej wersji językowej local linki_3 = nazwy_modul.NAZWASERWISU{ link = "tak", ["kod języka"] = "pl", ["kod projektu"] = "s", }; local linki_4 = nazwy_modul.NAZWASERWISU{ link = "tak", ["kod języka"] = "en", ["kod projektu"] = "s", }; -- Jak powyżej, tylko do artykułu Wikipedii w jakieś wersji językowej o Wikiźródłach local linki_5 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", ["kod języka"] = "pl", ["kod projektu"] = "s", }; local linki_6 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", ["kod języka"] = "en", ["kod projektu"] = "s", }; </syntaxhighlight> ====== Analogiczne wywołanie szablonu ====== * {{Code|{{s|NS|l{{=}}tak|kp{{=}}s}}}} → {{Tt|{{NS|l=tak|kp=s}}}}, * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|kp{{=}}s}}}} → {{Tt|{{NS|l=tak|w=tak|kp=s}}}}, * {{Code|{{s|NS|l{{=}}tak|kj{{=}}pl|kp{{=}}s}}}} → {{Tt|{{NS|l=tak|kj=pl|kp=s}}}}, * {{Code|{{s|NS|l{{=}}tak|kj{{=}}en|kp{{=}}s}}}} → {{Tt|{{NS|l=tak|kj=en|kp=s}}}}, * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|kj{{=}}pl|kp{{=}}s}}}} → {{Tt|{{NS|l=tak|w=tak|kj=pl|kp=s}}}}, * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|kj{{=}}en|kp{{=}}s}}}} → {{Tt|{{NS|l=tak|w=tak|kj=en|kp=s}}}}. ===== Wywołania szablonu z nazwą linku danej wiki ===== ====== Przykłady użycia funkcji {{Code|nazwy_modul.NAZWASERWISU()}} ====== Gdy chcemy podać nazwę linku przy pomocy parametru {{Code|["w języku wiki"] {{=}} "tak"}}, w języku danej wiki, którego podajemy przy parametrze {{Code|["kod języka"] {{=}} "en"}}, dla projektu podanego w zmiennej {{Code|["kod projektu"] {{=}} "s"}}. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local linki_1 = nazwy_modul.NAZWASERWISU{ link = "tak", ["kod projektu"] = "s", ["w języku wiki"] = "tak", }; local linki_2 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", ["kod projektu"] = "s",["w języku wiki"] = "tak", }; local linki_3 = nazwy_modul.NAZWASERWISU{ link = "tak", ["kod języka"] = "pl", ["kod projektu"] = "s", ["w języku wiki"] = "tak", }; local linki_4 = nazwy_modul.NAZWASERWISU{ link = "tak", ["kod języka"] = "en", ["kod projektu"] = "s", ["w języku wiki"] = "tak", }; local linki_5 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", ["kod języka"] = "pl", ["kod projektu"] = "s", ["w języku wiki"] = "tak", }; local linki_6 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", ["kod języka"] = "en", ["kod projektu"] = "s", ["w języku wiki"] = "tak", }; </syntaxhighlight> ====== Analogiczne wywołanie szablonu ====== * {{Code|{{s|NS|l{{=}}tak|kp{{=}}s|jw{{=}}tak}}}} → {{Tt|{{NS|l=tak|kp=s|jw=tak}}}}, * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|kp{{=}}s|jw{{=}}tak}}}} → {{Tt|{{NS|l=tak|w=tak|kp=s|jw=tak}}}}, * {{Code|{{s|NS|l{{=}}tak|kj{{=}}pl|kp{{=}}s|jw{{=}}tak}}}} → {{Tt|{{NS|l=tak|kj=pl|kp=s|jw=tak}}}}, * {{Code|{{s|NS|l{{=}}tak|kj{{=}}en|kp{{=}}s|jw{{=}}tak}}}} → {{Tt|{{NS|l=tak|kj=en|kp=s|jw=tak}}}}, * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|kj{{=}}pl|kp{{=}}s|jw{{=}}tak}}}} → {{Tt|{{NS|l=tak|w=tak|kj=pl|kp=s|jw=tak}}}}, * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|kj{{=}}en|kp{{=}}s|jw{{=}}tak}}}} → {{Tt|{{NS|l=tak|w=tak|kj=en|kp=s|jw=tak}}}}. ===== Wywołanie szablonu z podaną nazwą linku ===== ====== Przykłady użycia funkcji {{Code|nazwy_modul.NAZWASERWISU()}} ====== Jeżeli chcemy podać ściśle określony ciąg, który jest nazwą linku, do linkowania do strony głównej lub artykułu na {{NS|w=tak|l=tak|k=w|pk=mj}} o danym projekcie, np. inną niż nazwa projektu. Tutaj nazwą linku jest {{Code|[1] {{=}} "Biblioteka książek"}}. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local link_1 = nazwy_modul.NAZWASERWISU{ [1] = "Biblioteka książek", link = "tak", }; local link_2 = nazwy_modul.NAZWASERWISU{ [1] = "Biblioteka książek", link = "tak", wikipedia = "tak", }; local link_3 = nazwy_modul.NAZWASERWISU{ [1] = "Biblioteka książek", link = "tak", ["kod projektu"] = "s",["kod języka"] = "en", }; local link_4 = nazwy_modul.NAZWASERWISU{ [1] = "Biblioteka książek", link = "tak", wikipedia = "tak", ["kod projektu"] = "s",["kod języka"] = "en", }; </syntaxhighlight> ====== Analogiczne wywołanie szablonu ====== * {{Code|{{s|NS|Biblioteka książek|l{{=}}tak}}}} → {{Tt|{{NS|Biblioteka książek|l=tak}}}}, * {{Code|{{s|NS|Biblioteka książek|l{{=}}tak|w{{=}}tak}}}} → {{Tt|{{NS|Biblioteka książek|l=tak|w=tak}}}}, * {{Code|{{s|NS|Biblioteka wikiźródeł|l{{=}}tak|kp{{=}}s|kj{{=}}en}}}} → {{Tt|{{NS|Biblioteka wikiźródeł|l=tak|kp=s|kj=en}}}}, * {{Code|{{s|NS|Biblioteka wikiźródeł|l{{=}}tak|w{{=}}tak|kp{{=}}s|kj{{=}}en}}}} → {{Tt|{{NS|Biblioteka wikiźródeł|l=tak|w=tak|kp=s|kj=en}}}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> fwbo5lz1nemyzsacvgjrp8t6xz4bvjl 555694 555686 2026-09-11T14:34:29Z Persino 2851 /* Opis parametrów użytych razem z parametrem {{Code|link}} */ 555694 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Nazwy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == Funkcje nazw nazwy przestrzeni nazw == Należy przeczytać wiadomości ze strony {{lru|Moduły/Nazwy}}, które są informacjami wstępnymi, by używać funkcji bibliotecznych: {{m|Nazwy|Np}} i {{m|Nazwy|NpDane}}, i z nimi skojarzonych szablonów, tzn.: {{s|Np}} i {{s|NpDane}}. Wiadomosci też stąd są bardzo potrzebne do dalszych modułów tomów tej publikacji, to znaczy do funkcji, czy szablonów, nazw. === {{Code|m.Np}} === ==== Odpowiednik szablonowy ==== Odpowiednik szablonowy jest pod nazwą {{s|Np}}, odpowiednik funkcji, w mechanizmie '''MediaWiki''', tzn.: {{Span|styl=color:blue;|<nowiki>{{ns:<nazwa przestrzeni kanoniczna lub nie, albo jej id>}}</nowiki>}}, format tego, bo to nie jest szablon, czy funkcja, tylko wywołanie parserowe, tego, w którym jej parametr, tylko przestrzeny w nim występuje, jej element jest podobny do jej wersji bibliotecznej, opisywanej funkcji. Format wersji bibliotecznej tej funkcji jest bardzo bodobny do jej wersji szablonowej, tylko jest inne uruchomienie, tam jest ramka, a tutaj wywołanie szablonowe. Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce. * Szablon {{s|Np}} korzysta z funkcji bibliotecznej {{m|Nazwy|Np}}, więc parametry obu są wręcz takie same, a nawet podobne. Chociaż ta sama nazwa funkcji w ramce i kodzie {{lpg|Lua}}, to używanie ich nie jest dokładnie takie samo, funkcja biblioteczna nie potrzebuje parametru {{Parametr|wyspecjalizowana|tak}}, a ramka już tak, a szablon {{s|Np}}, który korzysta z tej ramki, to nieobecność, lub obecność z wartością pustą, tego parametru powoduje, że przyjmowane są parametry rodzica, a nie dziecka, które wymagają jego niepustość. ==== Funkcja biblioteczna ==== Zestaw parametrów tej funkcji są to parametry nazwane podawane, w wersji tabelkowej,, w nawiasach klamerkowej, jak się to podaje w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. ; Paramery funkcji {{m|Nazwy|Np|...|wyspecjalizowana{{=}}tak}} lub funkcji bibliotecznej wykorzystującej opisywaną funkcję{{Dk}} {{OpisParametrów | 1 = Parametry podstawowe | nagłówek1=tak | 2 = {{Code|nazwa}} lub {{Code|1}} | _2 = Nazwa przestrzeni nazw, kanoniczna lub nie, lub {{Code|id}} danej przestrzeni. | 3 = {{Parametr|wyspecjalizowana|tak}} | _3 = Tylko dla tej funkcji wywołanej w postaci ramki w wikikodzie w szablonach, gdy do niej wsadzamy bezpośrednio jako dzieci, a w przypadku z rodzica to ten parametr jest niepotrzebny lub powinien przyjmować wartość pustą, | 4 = Zmienne puste lub nie, np. o wartości {{Code|tak}}, lub nie, podawane do tej funkcji są:| nagłówek4=tak | 5 = {{Code|przedmiotowa}} | _5 = Zamienia daną przestrzeń na jej nazwę przedmiotową, tzn. na przestrzenie o numerach {{Code|id}} parzyste. | 6 = {{Code|dyskusja}} | _6 = Zamienia daną przestrzeń na jej wersję dyskusji, tzn. na przestrzenie o numerach {{Code|id}} nieparzyste. | 7 = {{Code|kanoniczna}} | _7 = Zamienia nazwę przestrzeni lub {{Code|id}} danej przestrzeni na jej nazwę kanoniczną, tzn. na jej wersję angielską. | 8 = {{Code|z myślnikami dolnymi}} | _8 = Zamienia spację w nazwach przestrzenie nazw na dolne myślniki, | 9 = {{Code|wyświetlana}} | _9 = Ten parametr nie wpływa na sposób wyświetlania nazw przestrzeni, oprócz jednej przestrzeni nazw, której jest przestrzeń główna o nazwie kanonicznej {{Code|(main)}} lub niekanonicznej {{Code|(główna)}}, wtedy są wyświetlane zamiast ciągu pustego te nazwy w zależności od podanego parametru {{Code|kanoniczna}}, tj. czy ona jest pusta lub nie, lub niepodana. | 10 = {{Code|link}} | _10 = Drukuje link o nazwie referencji, którą jest nazwa wyświetlana danej przestrzeni nazw, lub jej {{Code|id}}, o adresie strony przekierowującej, której jest adres odniesienia podanej w tabeli powyżej dla tej funkcji lub szablonu {{s|Np}}. | 11 = {{Code|id}} | _11 = wyświetla id danej przestrzeni nazw. | 12 = {{Code|nazwij projektem}} | _12 = Powoduje, że wyświetlana jest nazwa projektu {{Code|Wikibooks}} w postaci rzeczywistej nazwy kanonicznej (używany wraz z parametrem {{Code|kanoniczna}}), tzn. w postaci nazwy {{Code|Project}}, lub bez tego parametru, w postaci nazwy nierzeczywistej niekanonicznej {{Code|Projekt}}. | 13 = {{Code|nazwij dyskusją projektu}} | _13 = Powoduje, że wyświetlana jest nazwa projektu {{Code|Dyskusja wikibooks}} w postaci rzeczywistej nazwy kanonicznej (używany wraz z parametrem {{Code|kanoniczna}}), tzn. w postaci nazwy {{Code|Project talk}}, lub bez tego parametru, w postaci nazwy nierzeczywistej niekanonicznej {{Code|Dyskusja projektu}}. | 14 = Inne zmienne niepuste:|nagłówek14=tak | 15 = {{Code|istnieje}} | _15 = Zwraca wartość tekstową {{Code|(bląd)}}, gdy przestrzeń jest nieprawidłowa lub nie istnieje, w innym przypadku zwraca normalną wartość. | 16 = {{Code|wynik błędu nietekstowy}} | _16 = Używany z {{Code|istnieje}}, zwraca wartość w języku {{lpg|Lua}} wartość {{Code|nil}}, gdy wartość nazwy przestrzeni nazw lub {{Code|id}} jest nieprawidłowa lub nieznana. | 17 = Zwracana zmienna w postaci tabeli ze składowymi z pewnymi podzmiennymi:|nagłówek17=tak | 18 = {{Code|uchwyt}} | _18 = Zwraca uchwyt przestrzeni nazw do danej przestrzeni nazw. }} ===== Przykłady używania ===== ====== Podstawowe wywołanie ====== Podstawowe przykłady podstawowego wywołania funkcji, czyli uzyskiwania nazwy niekanonicznej z dowolnej nazwy przestrzeni kanonicznej, czy jej numeru {{Code|id}} (kodu danej przestrzeni nazw, który reprezentuje daną przestrzeń nazw przedmiotową, czy dyskusji), a więc: <syntaxhighlight lang="lua"> local nazwy_modul = require("Module:Nazwy"); ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_1 = nazwy_modul.Np{ [1] = "Szablon", }; ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_2 = nazwy_modul.Np{ [1] = "Template", }; ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_3 = nazwy_modul.Np{ [1] = 10, }; ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_4 = nazwy_modul.Np{ nazwa = "Szablon", }; ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_5 = nazwy_modul.Np{ nazwa = "Template", }; ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_6 = nazwy_modul.Np{ nazwa = 10, }; </syntaxhighlight> Te trzy pary wywołania wyświetlają ten sam wynik tzn. o takiej samej wartości, bo parametr {{Code|nazwa}} wskazuje na tą samą przestrzeń nazw, tylko one są rożnie wskazane. Został ta użyty parametr: {{Code|1}} lub {{Code|nazwa}}, które oznaczają to samo, czyli przestrzeń nazw w postaci kanonicznej, niekanonicznej, czy numeru {{Code|id}}, czyli identyfikatora przestrzeni nazw. Jako wartość uzyskujemy tam nazwę kanoniczną przestrzenina polskiem {{NS|l=tak|p=ie}}. Przestrzeń nazw może zawierać dowolnej wielkości litery, z dowolną liczbą odstępów z dolnymi spacjami lub normalnymi, jeżeli w nim one występują,wtedy zawsze oznaczają one tą samą przestrzeń, niezależnie jak ją zapiszemy, przykłady poniżej. Równie dobrze dowolną nazwę niekanoniczną możemy napisać, co jest uwidocznione w parametrze {{Code|nazwa}}, na wyjściu otrzymujemy w pełni sformatowaną nazwę niekanoniczną, która odpowiada jej odpowiednikowi niesformatowanemu: <syntaxhighlight lang="lua"> local nazwy_modul = require("Module:Nazwy"); -- Zwraca wartość: "Szablon": local nazwa_przestrzeni_1 = nazwy_modul.Np{ nazwa = "SZABLON", }; -- Zwraca wartość: "Szablon": local nazwa_przestrzeni_2 = nazwy_modul.Np{ nazwa = "TEMPLATE", }; -- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_3 = nazwy_modul.Np{ nazwa = "DYSKUSJA ___ ___ _ SZABLONU", }; -- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_4 = nazwy_modul.Np{ nazwa = "TEMPLATE_________TALK", }; </syntaxhighlight> ====== Nazwy kanoniczne i niekanoniczna oraz zamiana z jednej na drugą ====== Aby uzyskać nazwę z dowolnej nazwy, nawet też kanonicznej, czynie, czy też z numeru {{Code|id}} (identyfikatora przestrzeni nazw), wtedy należy podać parametr przestrzeni nazw, z dodatkowym parametrem {{Code|kanoniczna}}, w takim razie: <syntaxhighlight lang="lua"> local nazwy_modul = require("Module:Nazwy"); -- Uzyskujemy wartość: "Template": local nazwa_kanoniczna_1 = nazwy_modul.Np{ nazwa = "Szablon", kanoniczna = "tak", }; -- Uzyskujemy wartość: "Template": local nazwa_kanoniczna_2 = nazwy_modul.Np{ nazwa = "Template", kanoniczna = "tak", }; -- Uzyskujemy wartość: "Template": local nazwa_kanoniczna_3 = nazwy_modul.Np{ nazwa = 10, kanoniczna = "tak", }; </syntaxhighlight> * Według powyższego przykładu, ona, czyli przestrzeń nazw, jest zamieniana na sformatowaną nazwę kanoniczną, jako parametr może być nazwa niekanoniczna, kanoniczna, czy identyfikator przestrzeni nazw. Dowolną nazwę kanoniczną, czy nie, można zamienić na niekanoniczną, niezależnie w jakiej formie podamy przestrzeń nazw, może być to przekształcenie tożsamościowe, może być to w postaci identyfikatora tej przestrzeni, niezależnie jaką ją mamy na myśli, więc: <syntaxhighlight lang="lua"> local nazwy_modul = require("Module:Nazwy"); -- Uzyskujemy wartość: "Szablon": local nazwa_niekanoniczna = nazwy_modul.Np{ nazwa = "Template", }; </syntaxhighlight> * Wystarczy wtedy użyć tylko jednego parametru, nie trzeba używać większej liczby innych parametrów. ====== Nazwy przedmiotowe i dyskusji oraz przejścia pomiędzy nimi ====== Można też przechodzić z tej samej przestrzeni nazw w nią samą, lub do niego skojarzoną, tzn. z przedmiotowej do dyskusji lub odwrotnie, przykłady poniżej. Do tego celu używamy parametru {{Code|przedmiotowa}}, czyli do tłumaczenia nazwy przestrzeni nazw na jej wersję przedmiotową, tzn. na przestrzeń nazw o identyfikatorze parzystym. Można też użyć parametru {{Code|dyskusja}}, robiąca tłumaczenia na wersje dyskusji, o identyfikatorze nazwy przestrzeni nazw nieparzystym. Nie wolno używać tych parametrów, tych dwóch w jednym wywołaniu, bo może dojść do błędu funkcji w postaci komunikatu {{Code|(błąd)}}. Tłumaczona nazwa może być zarówno niekanoniczna, jak i kanoniczna, lub być zawarta w postaci identyfikatora przestrzeni nazw. Tutaj bez użycia żadnego parametru dodatkowego, wtedy otrzymujemy na wyjściu nazwę niekanoniczną. <syntaxhighlight lang="lua"> local nazwy_modul = require("Module:Nazwy"); -- Gdy nazwą przestrzeni jest nazwa niekanoniczna: ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_przedmotowej_1 = nazwy_modul.Np{ nazwa = "Dyskusja szablonu", przedmiotowa = "tak", }; ---- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_dyskusji_1 = nazwy_modul.Np{ nazwa = "Szablon", dyskusja = "tak", }; -- Gdy nazwą przestrzeni jest nazwa kanoniczna: ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_przedmotowej_2 = nazwy_modul.Np{ nazwa = "Template talk", przedmiotowa = "tak", }; ---- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_dyskusji_2 = nazwy_modul.Np{ nazwa = "Template", dyskusja = "tak", }; -- Gdy prrzestrzeń nazw jest w postaci numeru id: ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_przedmotowej_3 = nazwy_modul.Np{ nazwa = 11, przedmiotowa = "tak", }; ---- Zwraca wartość: szablon "Dyskusja szablonu": local nazwa_przestrzeni_dyskusji_3 = nazwy_modul.Np{ nazwa = 10, dyskusja = "tak", }; </syntaxhighlight> Gdy użyjemy dodatkowo parametr {{Code|kanoniczna}}, zamieniający dowolne przestrzenie nazw, niezależnie, czy jest zapisana w postaci identyfikatora, czy nie, gdy nazwą przestrzeni jest nazwa niekanoniczna (lub kanoniczna), to uzyskana nazwa przedmiotowa, czy dyskusji, jest nazwą kanoniczną, jako w wyniku: <syntaxhighlight lang="lua"> local nazwy_modul = require("Module:Nazwy"); -- Gdy nazwą przestrzeni jest nazwa niekanoniczna: ---- Zwraca wartość: "Template": local nazwa_przestrzeni_przedmotowej_1 = nazwy_modul.Np{ nazwa = "Dyskusja szablonu", przedmiotowa = "tak", kanoniczna = "tak", }; ---- Zwraca wartość: "Template talk": local nazwa_przestrzeni_dyskusji_1 = nazwy_modul.Np{ nazwa = "Szablon", dyskusja = "tak", kanoniczna = "tak", }; -- Gdy nazwą przestrzeni jest nazwa kanoniczna: ---- Zwraca wartość: "Template": local nazwa_przestrzeni_przedmotowej_2 = nazwy_modul.Np{ nazwa = "Template talk", przedmiotowa = "tak", kanoniczna = "tak", }; ---- Zwraca wartość: "Template talk": local nazwa_przestrzeni_dyskusji_2 = nazwy_modul.Np{ nazwa = "Template", dyskusja = "tak", kanoniczna = "tak", }; -- Gdy przestrzeń nazw jest w postaci numeru id: ---- Zwraca wartość: "Template": local nazwa_przestrzeni_przedmotowej_3 = nazwy_modul.Np{ nazwa = 11, przedmiotowa = "tak", kanoniczna = "tak", }; ---- Zwraca wartość: "Template talk": local nazwa_przestrzeni_dyskusji_3 = nazwy_modul.Np{ nazwa = 10, dyskusja = "tak", kanoniczna = "tak", }; </syntaxhighlight> Przejście z tej samej przestrzeni na tą samą możemy uzyskać, gdy nazwę przedmiotową tłumaczymy na przedmiotową, dyskusji na dyskusji, wtedy tłumaczenie z przestrzeni do przestrzeni jest tożsamościowe, niezależnie w jakiej formie podamy nazwę przestrzeni nazw jako parametr, tłumaczymy nazwę polską na tą samą nazwę też polską, o tej samej wartości lub jej odpowiednik angielski w wersji kanonicznej na jej wersję niekanoniczną, czy z numeru identyfikatorana jej odpowiednik nazwowy, ale nadal takie przejście jest tożsamosciowe, bo chodzi o tą samą przestrzeń nazw, mimo że użyliśmy tych parametrów: <syntaxhighlight lang="lua"> local nazwy_modul = require("Module:Nazwy"); -- Gdy nazwą przestrzeni jest nazwa niekanoniczna: ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_przedmotowej_1 = nazwy_modul.Np{ nazwa = "Szablon", przedmiotowa = "tak", }; ---- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_dyskusji_1 = nazwy_modul.Np{ nazwa = "Dyskusja szablonu", dyskusja = "tak",}; -- Gdy nazwą przestrzeni jest nazwa kanoniczna: ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_przedmotowej_2 = nazwy_modul.Np{ nazwa = "Template", przedmiotowa = "tak", }; ---- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_dyskusji_2 = nazwy_modul.Np{ nazwa = "Template talk", dyskusja = "tak",}; -- Gdy przestrzeń nazw jest w postaci numeru id: ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_przedmotowej_3 = nazwy_modul.Np{ nazwa = 10, przedmiotowa = "tak", }; ---- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_dyskusji_3 = nazwy_modul.Np{ nazwa = 11, dyskusja = "tak",}; </syntaxhighlight> Gdy użyjemy dodatkowo parametr {{Code|kanoniczna}}, to uzyskana nazwa przedmiotowa, czy dyskusji, wtedy mamy tłumaczenie tozsamościowe, jeśli chodzi o przestrzeń nazw, co one oznaczają, jeśli ona jest niekanoniczna, to uzyskamy jej nazwę, ale po angielsku, a jeśli jednak jest kanoniczna, to otrzymamy ten sam wynik: <syntaxhighlight lang="lua"> local nazwy_modul = require("Module:Nazwy"); -- Gdy nazwą przestrzeni jest nazwa niekanoniczna: ---- Zwraca wartość: "Template": local nazwa_przestrzeni_przedmotowej_1 = nazwy_modul.Np{ nazwa = "Szablon", przedmiotowa = "tak", kanoniczna = "tak", }; ---- Zwraca wartość: "Template talk": local nazwa_przestrzeni_dyskusji_1 = nazwy_modul.Np{ nazwa = "Dyskusja szablonu", dyskusja = "tak", kanoniczna = "tak", }; -- Gdy nazwą przestrzeni jest nazwa kanoniczna: ---- Zwraca wartość: Template": local nazwa_przestrzeni_przedmotowej_2 = nazwy_modul.Np{ nazwa = "Template", przedmiotowa = "tak", kanoniczna = "tak", }; ---- Zwraca wartość: "Template talk": local nazwa_przestrzeni_dyskusji_2 = nazwy_modul.Np{ nazwa = "Template talk", dyskusja = "tak", kanoniczna = "tak", }; -- Gdy przestrzeń nazw jest w postaci numeru id: ---- Zwraca wartość: ""Template": local nazwa_przestrzeni_przedmotowej_3 = nazwy_modul.Np{ nazwa = 10, przedmiotowa = "tak", kanoniczna = "tak", }; ---- Zwraca wartość: "Template talk": local nazwa_przestrzeni_dyskusji_3 = nazwy_modul.Np{ nazwa = 11, dyskusja = "tak", kanoniczna = "tak", }; </syntaxhighlight> ====== Nazwy przestrzeni z myślnikami dolnymi ====== Gdy używamy przestrzeni nazw, czy to w postaci kanonicznej, czy niekanonicznej, ze spacjami, to spacje są w nim zamieniane na dolne myślniki. Jeżeli parametr zawiera spacje lub dolne myślniki na końcach nazwy, to ona jest trimowana, wewnątrz, wtedy powtórzone spacje, lub myślniki dolne, są zamieniane na jeden dolny myślnik, jeżeli zamieniamy nazwę niekanoniczną na niekanoniczną, kanoniczną na kanoniczną. Gdy tak nie jest, tzn. gdy zamieniamy kanoniczną na niekanoniczną, niekanoniczną na kanoniczną, to wtedy jest podobnie. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Dyskusja_szablonu": local nazwa_przestrzeni_1 = nazwy_modul.Np{ nazwa = "Dyskusja szablonu", ["z myślnikami dolnymi"] = "tak", }; ---- Zwraca wartość: "Dyskusja_szablonu": local nazwa_przestrzeni_2 = nazwy_modul.Np{ nazwa = "Template talk", ["z myślnikami dolnymi"] = "tak", }; ---- Zwraca wartość: "Template_talk";: local nazwa_przestrzeni_3 = nazwy_modul.Np{ nazwa = "Dyskusja szablonu", kanoniczna = "tak", ["z myślnikami dolnymi"] = "tak", }; ---- Zwraca wartość: "Template_talk": local nazwa_przestrzeni_4 = nazwy_modul.Np{ nazwa = "Template talk", kanoniczna = "tak", ["z myślnikami dolnymi"] = "tak", }; </syntaxhighlight> ====== Nazwy wyświetlane przestrzeni nazw ====== Gdy nazwą przestrzeni nazw jest nazwa o charakterze niepustym, to przy parametrze {{Code|wyświetlana {{=}} "tak"}}, jest zamieniana ona na tą samą nazwę, gdy ona jest pusta, to jest zamieniana na szereg: {{Code|(główna)}} bez parametru {{Code|kanoniczna}}, a z tym parametrem na {{Code|(main)}}. Przykłady jak jest, jest powiedziane: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_1 = nazwy_modul.Np{ nazwa = "Szablon", wyświetlana = "", }; ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_2 = nazwy_modul.Np{ nazwa = "Szablon", wyświetlana = "tak", }; ---- Zwraca wartość: "": local nazwa_przestrzeni_3 = nazwy_modul.Np{ nazwa = "", wyświetlana = "", }; ---- Zwraca wartość: "(główna)": local nazwa_przestrzeni_4 = nazwy_modul.Np{ nazwa = "", wyświetlana = "tak", }; ---- Zwraca wartość: "(main)": local nazwa_przestrzeni_5 = nazwy_modul.Np{ nazwa = "", kanoniczna = "tak", wyświetlana = " tak", }; </syntaxhighlight> Na podstawie ramki powyżej w przestrzeniach nazw wyświetlanych dowiadujemy się, że jedyna różnica, w nazwach wyświetlanych lub nie, jest dla przestrzeni głównej, czyli dla przestrzeni nazw, której nazwa przestrzeni jest ciągiem pustym. ====== Wersja funkcji z wyświetlaną nazwą przestrzeni nazw z linkiem opisującej tą przestrzeń ====== Nazwę przestrzeni nazw zamieniamy na link z opisem, co robi dana przestrzeń nazw, z nazwą wyświetlaną niekanoniczną, bez parametru {{Code|kanoniczna}}, lub z tym,wtedy nazwę wyświetlaną jest kanoniczna. Gdy przestrzeń nazw jest główna, to wtedy nazwą linku jest {{Code|(główna)}} ({{Code|(main)}} z parametrem {{Code|kanoniczna}}). <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local nazwa_przestrzeni_nazw_1 = nazwy_modul.Np{ nazwa = "Szablon", link = "tak", }; local nazwa_przestrzeni_nazw_2 = nazwy_modul.Np{ nazwa = "Szablon", link = "tak", kanoniczna = "tak", }; local nazwa_przestrzeni_nazw_3 = nazwy_modul.Np{ nazwa = "", link = "tak", }; local nazwa_przestrzeni_nazw_4 = nazwy_modul.Np{ nazwa = "", link = "tak", kanoniczna = "tak", }; </syntaxhighlight> Przykłady funkcji w wyniku są w przykładach szablonowych: # {{Code|{{s|Np|nazwa{{=}}Szablon|link{{=}}tak}}}} → {{Tt|{{Np|nazwa=Szablon|link=tak}}}} # {{Code|{{s|Np|nazwa{{=}}Szablon|link{{=}}tak|kanoniczna{{=}}tak}}}} → {{Tt|{{Np|nazwa=Szablon|link=tak|kanoniczna=tak}}}} # {{Code|{{s|Np|nazwa{{=}}|link{{=}}tak}}}} → {{Tt|{{Np|nazwa=|link=tak}}}} # {{Code|{{s|Np|nazwa{{=}}|link{{=}}tak|kanoniczna{{=}}tak}}}} → {{Tt|{{Np|nazwa=|link=tak|kanoniczna=tak}}}} ====== Uzyskiwanie numeru {{Code|id}} danej przestrzeni nazw ====== Gdy chcemy uzyskać numer identyfikatora przestrzeni nazw, czy to z użyciem parametru {{Code|kanoniczna}}, czy nie, wtedy ten parametr jest w tym przypadku ignorowany, przy parametrze {{Code|id {{=}} "tak"}} na jej odpowiednik w postaci numeru, który charakteryzuje przestrzenie przedmiotowe i dyskusji, inna jest dla tych dwóch typów przestrzeni. Dla przestrzeni przedmiotowej {{Code|id}} jest parzyste, a dla dyskusji nieparzyste. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Uzyskany numer id nazwy przestrzeni nazw jest 10: local id_1 = nazwy_modul.Np{ nazwa = "Szablon", id = "tak", }; ---- Uzyskany numer id nazwy przestrzeni nazw jest 10: local id_2 = nazwy_modul.Np{ nazwa = "Szablon", kanoniczna = "tak", id = "tak", }; ---- Uzyskany numer id nazwy przestrzeni nazw jest 11: local id_3 = nazwy_modul.Np{ nazwa = "Dyskusja szablonu", id = "tak", }; ---- Uzyskany numer id nazwy przestrzeni nazw jest 11: local id_4 = nazwy_modul.Np{ nazwa = "Dyskusja szablonu", kanoniczna = "tak", id = "tak", }; </syntaxhighlight> ====== Uzyskiwanie nazwy projektu nazwy przedmiotowej i jej dyskusji, z kanonicznej lub nie, przestrzeni nazw ====== Gdy używamy przestrzeni nazw {{Np|Wikibooks|link=tak}} lub {{Np|Wikibooks|link=tak|dyskusja=tak}}, to je można tłumaczyć na je wersje czysto kanoniczne, tzn.: {{Np|Wikibooks|link=tak}} tłumaczymy na {{Np|Wikibooks|link=tak|nazwij projektem=tak}}, a {{Np|Wikibooks|link=tak|dyskusja=tak}} na {{Np|Wikibooks|link=tak|dyskusja=tak|nazwij dyskusją projektu=tak}}, gdy translacja jest na nazwę polską niekanoniczną, a gdy użyjemy parametru {{Code|kanoniczna}}, wtedy sytuacja jest inna: {{Np|Wikibooks|link=tak|kanoniczna=tak}} tłumaczymy na {{Np|Wikibooks|link=tak|nazwij projektem=tak|kanoniczna=tak}}, a {{Np|Wikibooks|link=tak|dyskusja=tak|kanoniczna=tak}} na {{Np|Wikibooks|link=tak|dyskusja=tak|nazwij dyskusją projektu=tak|kanoniczna=tak}}. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Projekt": local nazwa_przestrzeni_nazw_1 = nazwy_modul.Np{ nazwa = "Wikibooks", ["nazwij projektem"] = "tak", }; ---- Zwraca wartość: "Project": local nazwa_przestrzeni_nazw_2 = nazwy_modul.Np{ nazwa = "Wikibooks", ["nazwij projektem"] = "tak", kanoniczna = "tak", }; ---- Zwraca wartość: "Dyskusja projektu": local nazwa_przestrzeni_nazw_3 = nazwy_modul.Np{ nazwa = "Wikibooks", ["nazwij dyskusją projektu"] = "tak", dyskusja = "tak", }; ---- Zwraca wartość: "Project talk": local nazwa_przestrzeni_nazw_4 = nazwy_modul.Np{ nazwa = "Wikibooks", ["nazwij dyskusją projektu"] = "tak", kanoniczna = "tak", }; </syntaxhighlight> ====== Sprawdzanie, czy dana przestrzeń jest poprawnie podane, czy istnieje ====== Gdy używamy przestrzeni nieistniejącej bez parametru {{Code|istnieje {{=}} "tak" }}, wtedy na wyjściu otrzymamy to samo, tylko w wersji sformatowanej, a gdy użyjemy, wtedy pojawia tam się napis {{Code|(błąd)}}. Gdy parametrem jest znana funkcji przestrzeń nazw, to nie uzyskujemy błędu, tylko przepisaną sformatowaną nazwę. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_nazw_1 = nazwy_modul.Np{ nazwa = "Szablon", istnieje = "tak", }; ---- Zwraca wartość: "Moja przestrzeń": local nazwa_przestrzeni_nazw_2 = nazwy_modul.Np{ nazwa = "Moja przestrzeń", istnieje = "", }; ---- Zwraca wartość: "(błąd)": local nazwa_przestrzeni_nazw_3 = nazwy_modul.Np{ nazwa = "Moja przestrzeń", istnieje = "tak", }; </syntaxhighlight> ====== Łatwe sprawdzanie istnienia danej przestrzeni nazw ====== Gdy oprócz parametru {{Code|istnieje {{=}} "tak"}}, użyjemy {{Code|["wynik błędu nietekstowy"] {{=}} "tak"}}, wtedy dla nieznanej przestrzeni uzyskujemy wartość w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, czyli: {{Code|nil}}, a w wikikodzie natomiast uzyskujemy wartość pustą, co pomaga w sprawdzeniu, czy dana przestrzeń istnieje, ale dodatkowo trzeba użyć parametru {{Code|["wyświetlana"] {{=}} "tak"}}, by nie pomylić parametru błędu z przestrzenią główną, wtedy ta przestrzeń ma nazwę niepustą przy tych parametrach, bo wtedy mamy nazwę niekanoniczną {{Code|(główna)}}, kanoniczną, przy specjalnym parametrze, czyli: {{Code|(main)}}, wtedy możemy użyć parsera {{Code|{{s|#if:coś|wtedy|przeciwnie}}}}. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_nazw_1 = nazwy_modul.Np{ nazwa = "Szablon", istnieje = "tak", ["wynik błędu nietekstowy"] = "tak", }; ---- Zwraca wartość: "Moja przestrzeń": local nazwa_przestrzeni_nazw_2 = nazwy_modul.Np{ nazwa = "Moja przestrzeń", istnieje = "", ["wynik błędu nietekstowy"] = "tak", }; ---- Zwraca wartość: nil: local nazwa_przestrzeni_nazw_3 = nazwy_modul.Np{ nazwa = "Moja przestrzeń", istnieje = "tak", ["wynik błędu nietekstowy"] = "tak", }; </syntaxhighlight> ====== Uzyskiwanie uchwytu danej przestrzeni nazw analogicznie do funkcji {{LzLua|mw.site.namespaces}} ====== Uchwyt niskopoziomowy do danej przestrzeni nazw można uzyskać przy pomocy kodu, uzyskujemy dla tej tablicy przestrzennej, która jest połączona z metatabelką, dzięki której możemy podawać przestrzenie nazw w wersji niezależnie jakimi literami, z dowolną kliczbą odstępów, nawet zapisana dolnymi myślnikami: <syntaxhighlight lang="lua"> local uchwyt_1 = mw.site.namespaces["Szablon"]; local uchwyt_2 = mw.site.namespaces["Template"]; local uchwyt_3 = mw.site.namespaces[10]; </syntaxhighlight> Funkcja powyżej ignoruje wielkość liter w przestrzeni nazw oraz powtórzone odstępy zrealizowane za pomocą spacji lub dolnych myślników. To samo, ale wysokopoziomowe, można utworzyć przy pomocy parametru: {{Code|uchwyt}}, wtedy szablon z rzuci odwołanie do tej tabeli, ale nie zawsze tak jest, czasami, gdy jakieś przestrzenie nie istnieją na polskim {{NS|w=tak|l=tak|pk=mj}}, wtedy odwołujemy się do jej wersji pseudo tej tabeli: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local uchwyt_1 = nazwy_modul.Np{ nazwa = "Szablon", uchwyt = "tak", }; local uchwyt_2 = nazwy_modul.Np{ nazwa = "Template", uchwyt = "tak", }; local uchwyt_3 = nazwy_modul.Np{ nazwa = 10, uchwyt = "tak", }; </syntaxhighlight> Funkcja {{Code|nazwy_modul.Np}} jest bardziej ogólniejsza niż {{LzLua|mw.site.namespaces}}, ponieważ uwzględnia większą liczbę nazw przestrzeni nazw, bo ona uwzględnia nieznane przestrzenie i znane o nieznanych nazwach, i dlatego należy stosować tę funkcję, a nie dedykowaną tabelę z połączoną z metatabelką za pomocą funkcji {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. === {{Code|m.NpDane}} === ==== Odpowiednik szablonowy ==== Odpowiednik szablonowy jest pod nazwą {{s|NpDane}}. Jego parametry są podobne do jego wersji bibliotecznej. Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce. * Szablon {{s|NpDane}} korzysta z funkcji bibliotecznej {{m|Nazwy|NpDane}}, więc parametry obu są wręcz takie same, a nawet podobne. Chociaż ta sama nazwa funkcji w ramce i kodzie {{lpg|Lua}}, to używanie ich nie jest dokładnie takie samo, funkcja biblioteczna nie potrzebuje parametru {{Parametr|wyspecjalizowana|tak}}, a ramka już tak, a szablon {{s|NpDane}}, który korzysta z tej ramki, to nieobecność, lub obecność z wartością pustą, tego parametru powoduje, że przyjmowane są parametry rodzica, a nie dziecka, które wymagają jego niepustość. ==== Funkcja biblioteczna ==== Szablon służy przede wszystkim do tłumaczenia angielskich nazw przestrzeni nazw na ich wersję w jakimś języku i operacji odwrotnej, a także numer przestrzeni nazw na jej nazwę w nim angielską lub w jakimś języku, lub odwrotnie, umożliwia też na przetłumaczenie nazwy przestrzeni nazw lub identyfikatora przestrzeni na jej nazwę polską, jeżeli istnieje. Funkcja {{m|Nazwy|NpDane}} przyjmuje te same parametry, co {{m|Nazwy|Np}}, oprócz wywołania ramkowego: {{Code|uchwyt}} (która w tej funkcji w sposób inny jest zdefiniowana, nie jak w funkcji: {{m|Nazwy|Np}}), jak oba, którego tutaj w nim nie ma, a jako zwykła funkcja biblioteczna może przyjmować ten parametr. Te zmienne działają podobnie w obu procedurach, z tą różnicą, że mamy inny zestaw nazw przestrzeni nazw (czasami bez numerów {{Code|id}} - identyfikatorów tych obsługiwanych przestrzeni nazw, a te podstawowe one je mają, jeżeli da się je powiązać z pierwszą funkcją w drugiej, jedynie w takim przypadku one występują) i można też użyć parametrów dodatkowych, które są niedostępne w pierwszej funkcji, a w drugiej już tak. Dodatkowo on przyjmuje argumenty: {{OpisParametrów | 1 = Adres kodowy projektu siostrzanego lub lokalnego polskiego {{Code|Wikibooks}}:|nagłówek1=tak | 2 = {{Code|klucz projektu}} | _2 = Kody języka i projektu podana w jednej zmiennej oddzielone od siebie dwukropkami, może być dowolna liczba tych kodów. | 3 = {{Code|kod projektu}} | _3 = Kod projektu danego wiki. | 4 = {{Code|kod języka}} | _4 = kod języka danego wiki. | 5 = {{Code|po polsku}} |_5 = Tłumaczy nazwę kanoniczną danej przestrzeni nazw na jej wersję polską, tzn. na język polski, a jeżeli jej wersja polska nie istnieje, to pisze jej wersję w języku angielskim, czyli w postaci nazwy kanonicznej. | 6 = {{Code|awaryjnie}} | _6 = Za pomocą projektu {{NS|l=tak|k=d}} tłumaczy daną nazwę przestrzeni nazw w jednym języku (jej nazwę kanoniczną jakieś przestrzeni nazw) na drugi, gdy wartość jest pusta, to tłumaczy na jej nazwę kanoniczną, jeżeli, przy tym parametrze lub bez, jej wersja w innym danym języku nie istnieje zdefiniowana w module {{m|Nazwy/przestrzenie}}. | 7 = Parametry: {{Code|nazwij projektem}} i {{Code|nazwij dyskusją projektu}} używa się tak samo jak dla funkcji {{m|Nazwy|Np}}, tylko z różnicą, że w funkcji {{m|Nazwy|NpDane}} musimy skorzystać koniecznie z parametru {{Code|kanoniczna}} z wartością niepustą, a wtedy wydrukowane wartości są w postaci wersji kanonicznej w języku angielskim, tak jak z ostatnim szablonem.|nagłówek7=tak }} ===== Używanie kluczy projektu, kodów projektu i kodów języka ===== Kody nazw piszemy, jak zwykle, z małej litery, co jest zalecane, ale można je pisać z liter o dowolnej wielkości. ====== Użycie różnych kodów i ich równoważność ====== Kody projektu i języka możemy pisać ze względu na dwa sposoby, w zależności jakich zmiennych używamy, możemy pisać tzw. grupę tych kodów w jednej zmiennej, wtedy się liczy ostateczny adres do danego projektu w jakieś wersji językowej, tylko jeden, a nie n-wersji danego języka i m-wersji danego projektu, czyli: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local wynik = nazwy_modul.NpDane{ ..., ["klucz projektu"] = "en:de:w:ru:en:q:pt", ... }; </syntaxhighlight> * Najważniejsze są kody projektu końcowe, podobnie ma się sprawa z kodami języków, tutaj kodami projektów są: {{Code|w}} ({{NS|l=tak|k=w}}) i {{Code|q}} ({{NS|l=tak|k=q}}), a kodami języków są: {{Code|en}} ({{lpg|{{#invoke:lang|hasło|en}}}}), {{Code|de}} ({{lpg|{{#invoke:lang|hasło|de}}}}), {{Code|ru}} ({{lpg|{{#invoke:lang|hasło|ru}}}}), {{Code|en}} ({{lpg|{{#invoke:lang|hasło|en}}}}) i {{Code|pt}} ({{lpg|{{#invoke:lang|hasło|pt}}}}), czy końcowy kod projektu jest: {{Code|q}} ({{NS|l=tak|k=q}}) i kod języka {{Code|pt}} ({{lpg|{{#invoke:lang|hasło|pt}}}}). W powyższym przykładzie napisaliśmy mnóstwo kodów w postaci jednej zmiennej, to jest równoważne zapisowi, czyli ostatecznej wersji wspomnianej powyższego zapisu, też zapisaną za pomocą tej samej zmiennej: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local wynik_1 = nazwy_modul.NpDane{ ..., ["klucz projektu"] = "pt:q", ... }; local wynik_2 = nazwy_modul.NpDane{ ..., ["klucz projektu"] = "q:pt", ... }; </syntaxhighlight> Powyższy wynik rozpisujemy na dwie zmienne, w których podajemy tylko pojedyncze kody, a nie grupy, więc widziemy, ża zamiast podawania jednego parametru z interwiki, to możemy to rozbić na dwa parametry kodu projektu i języka, a nie używać to w jednej zmiennej, należy pamiętać, że w tych kodach, może być jedno interwiki, specjalnie dla projektu lub języka, do którego dana zmienna jest przystosowana: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local wynik = nazwy_modul.NpDane{ ..., ["kod projektu"] = "q", ["kod języka"] = "pt", ... }; </syntaxhighlight> ====== Nazwy wyświetlane przy użyciu tych kodów dla przestrzeni głównej ====== Nazwy bez użycia zmiennej powodujące wyświetlanie nazwy przestrzeni nazw '''głównej''' na różnych projektach w postaci nieprzetłumaczonej na język polski, wtedy uzyskujemy niezależnie od projektu wartość pustą, bo takie jest przedstawienie wartości niewyświetlanej przestrzeni głównej na każdym projekcie obsługujący przestrzenie nazw, czyli: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość równą ciągowi pustemu: "": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "", ["klucz projektu"] = "commons", }; ---- Zwraca wartość równą ciągowi pustemu: "": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "", ["kod projektu"] = "commons", }; </syntaxhighlight> A przy użyciu identyfikatora przestrzeni nazw przestrzeni głównej, wtedy uzyskujemy na wyjściu to samo, co powyżej, czyli wartość pustą, bo wartość {{Code|0}} jest odpowiednikiem przestrzeni głównej, czyli poniższe przykłady są odpowiedniami tych powyższych, czyli te dwa przykład, tak można powiedzieć, że to samo robią: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość równą ciągowi pustemu: "": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = 0, ["klucz projektu"] = "commons", }; ---- Zwraca wartość równą ciągowi pustemu: "": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = 0, ["kod projektu"] = "commons", }; </syntaxhighlight> 0 Przy użyciu zmiennej generującej wyświetlanie w postaci znaków o charakterze niepustej, wtedy jeżeli nie ma wartości kanonicznej dla danego języka projektu, to wyswietlana jest wartość {{Np|(main)|link=tak|kanoniczna=tak}}, a dla polskigo projektu {{Np|(main)|link=tak}}, a dla innych języków jest nazwa charakterystyczna dla danego języka pod warunkiem, jeżeli doda się tego obsługę, więc tego przykłady przy użyciu zmiennej {{Code|["wyświetlana"] {{=}} "tak"}}, więc: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość nazwy przestrzeni głównej: "(main)": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "", ["klucz projektu"] = "commons", ["wyświetlana"] = "tak", }; ---- Zwraca wartość nazwy przestrzeni głównej: "(main)": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "", ["kod projektu"] = "commons", ["wyświetlana"] = "tak", }; </syntaxhighlight> Przy użyciu identyfikatora przestrzeni nazw przestrzeni głównej, w takim przypadku uzyskujemy to samo co powyżej, tylko jest inaczej, oznaczana jest wtedy przestrzeń główna, dla tego samego projektu siostrzanego, w wersji charakterystycznej dla danego języka, tutaj dla angielskiego: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość nazwy przestrzeni głównej: "(main)": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = 0, ["klucz projektu"] = "commons", ["wyświetlana"] = "tak", }; ---- Zwraca wartość nazwy przestrzeni głównej: "(main)": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = 0, ["kod projektu"] = "commons", ["wyświetlana"] = "tak", }; </syntaxhighlight> ====== Nazwy wyświetlane przy użyciu tych kodów przetłumaczone je na język polski dla przestrzeni głównej ====== Z wyświetlaniem na ekranie przestrzeni nazw charakteryzujące się ciągiem niepustym mamy podobne wyniki, jak powyżej bez parametry {{Code|["wyświetlana"] {{=}} "tak"}}, tylko nazwa wyświetlana przestrzeni nazw jest po polsku (odpowiednia nazwa w języku polskim), a nie po angielsku (w języku danego projektu): Przy użyciu zmiennej generującej wyświetlanie w postaci znaków o charakterze niepustej, nazw przestrzeni nazw mający nazwy puste, ale zamienione na nazwy wyświetlane, ale w postaci języka polskiego, używając parametru {{Code|["po polsku"] {{=}} "tak"}}: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość nazwy przestrzeni głównej: "(główna)": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "", ["klucz projektu"] = "commons", ["wyświetlana"] = "tak", ["po polsku"] = "tak", }; ---- Zwraca wartość nazwy przestrzeni głównej: "(główna)": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "", ["kod projektu"] = "commons", ["wyświetlana"] = "tak", ["po polsku"] = "tak", }; </syntaxhighlight> Przy użyciu identyfikatora przestrzeni nazw głównej, czyli dla tej samej przestrzeni nazw, co powyżej, tylko ona jest inaczej oznaczana, to możemy zrobić to samo, co powyżej, tylko nazwa główna przestrzeni nazw jest inaczej zapisana, w postaci numerycznej, wtedy otrzymamy wynik taki sam, jak w powyższym przykładzie, bo w obu używaliśmy takiej samej przestrzeni, tylko różnie przepisaną: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość nazwy przestrzeni głównej: "(główna)": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = 0, ["klucz projektu"] = "commons", ["wyświetlana"] = "tak", ["po polsku"] = "tak", }; ---- Zwraca wartość nazwy przestrzeni głównej: "(główna)": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = 0, ["kod projektu"] = "commons", ["wyświetlana"] = "tak", ["po polsku"] = "tak", }; </syntaxhighlight> ====== Nazwy wyświetlane przy użyciu tych kodów dla przestrzeni innej niż główna ====== Nazwy bez użycia zmiennej powodujące wyświetlanie nazwy przestrzeni nazw '''niegłównej''' na różnych projektach w postaci nieprzetłumaczonej na język polski, tylko w wersji charakterystucznej dla języka danego projektu używaną w odwołaniu: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość równą ciągowi niepustemu: "Template": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "Template", ["klucz projektu"] = "commons", }; ---- Zwraca wartość równą ciągowi niepustemu: "Template": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "Template", ["kod projektu"] = "commons", }; </syntaxhighlight> A przy zamianie tej przestrzeni nazw w powyższym przykładzie na numer - identyfikator nazw, czyli {{Code|id}}, to identyfikator przestrzeni nazw, innej niż główna, z jej wersji nazwowej, otrzymamy wynik w postaci nazwy niepustej, bo to nie jest przestrzeń główna, oznaczana zerowy tym identyfikatorem, czyli w postaci tej liczby: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość równą ciągowi niepustemu: "Template": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = 10, ["klucz projektu"] = "commons", }; ---- Zwraca wartość równą ciągowi niepustemu: "Template": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = 10, ["kod projektu"] = "commons", }; </syntaxhighlight> Przy użyciu zmiennej generującej wyświetlanie w postaci znaków, o charakterze niepustości, przy użyciu tego parametru, otrzymujemy wynik, jak powyżej, bo nazwa wyświetlana przestrzeni jest od razu niepusta, bo przestrzeni nazw mają wartość niepustą, więc nie trzeba ich uznawać, że są inne: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość równą nazwie przestrzeni niegłównej: "Template": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "Template", ["klucz projektu"] = "commons", ["wyświetlana"] = "tak", }; ---- Zwraca wartość równą nazwie przestrzeni niegłównej: "Template": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "Template", ["kod projektu"] = "commons", ["wyświetlana"] = "tak", }; </syntaxhighlight> A gdy parametr {{Code|nazwa}} przyjmuje wartość liczbową w postaci identyfikatora {{Code|id}}, innej niż dla przestrzeni głównej, ale zapisaną dla tych samych przestrzeni nazw, jak powyżej, co czyni, że tutaj jest też podobnie, otzrymamy te same wartości, tylko jest inna reprezentacja parametrów wchodzących do funkcji, jak powyżej: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość równą nazwie przestrzeni niegłównej: "Template": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = 10, ["klucz projektu"] = "commons", ["wyświetlana"] = "tak", }; ---- Zwraca wartość równą nazwie przestrzeni niegłównej: "Template": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = 10, ["kod projektu"] = "commons", ["wyświetlana"] = "tak", }; </syntaxhighlight> Widzimy, jedynie dla przestrzeni niepustej, że użycie tego parametru, według przykładów powyżej, jest opcjonalne, a nawet zbędne, bo ten parametr w tym przypadku nic nie zmienia, zmienia tylko dla przestrzeni głównej, którego ciąg charakteryzujący tą przestrzeń jest pusty, a jej wersja wyświetlana posiada za to ciąg niepusty, o jej wersji kanonicznej {{Code|{{Np|(main)|link=tak|kanoniczna=tak}}}}, a w wersji polskiej {{Code|{{Np|(main)|link=tak}}}}, te nazwy można pomiędzy sobą tłumaczyć za pomocą funkcji {{m|Nazwy|NpDane}} lub szablonu {{s|NpDane}}. ====== Nazwy wyświetlane przy użyciu tych kodów przetłumaczone je na język polski dla przestrzeni innej niż główna ====== Z wyświetlaniem na ekranie przestrzeni nazw charakteryzujące ciągiem niepustym mamy podobne wyniki jak powyżej bez parametru {{Code|["wyświetlana"] {{=}} "tak"}}: Przy użyciu zmiennej generującej wyświetlanie w postaci znaków o charakterze niepustej przetłumaczonej na język polski, używając parametrów w postaci pewnych nazw niepusstych, dla projektów innych niż wq języku polskim, ale te przestrzenie nazw tłumaczymyna ich odpowiedniki polskie, jakie istnieją, na projektach właśnie, że polskich: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość równą nazwie przestrzeni niegłównej: "Szablon": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "Template", ["klucz projektu"] = "commons", ["po polsku"] = "tak", }; ---- Zwraca wartość równą nazwie przestrzeni niegłównej: "Szablon": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "Template", ["kod projektu"] = "commons", ["po polsku"] = "tak", }; </syntaxhighlight> Albo przy użyciu numeru {{Code|id}} (identyfikatora przestrzeni nazw), wtedy właśnie robimy to samo, co powyżej, tylko jest inna reprezentacja parametrów, ale ta sama przestrzeń, więc uzyskujemy te same wyniki, czyli o tej samej wartości, mimo, że wizulanie,a by inne parametry: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość równą nazwie przestrzeni niegłównej: "Szablon": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = 10, ["klucz projektu"] = "commons", ["po polsku"] = "tak", }; ---- Zwraca wartość równą nazwie przestrzeni niegłównej: "Szablon": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = 10, ["kod projektu"] = "commons", ["po polsku"] = "tak", }; </syntaxhighlight> Przy użyciu zmiennej generującej wyświetlanie, użzywając parametru wspoianego powyżej, w postaci znaków o charakterze niepustej przy użyciu tego parametru, co sugeruje, że ten argiment nic nie zmienia, ale jedynie wyświetla się to samo, co bez tego parametru: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość równą nazwie przestrzeni niegłównej: "Szablon": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "Template", ["klucz projektu"] = "commons", ["wyświetlana"] = "tak", ["po polsku"] = "tak", }; ---- Zwraca wartość równą nazwie przestrzeni niegłównej: "Szablon": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "Template", ["kod projektu"] = "commons", ["wyświetlana"] = "tak", ["po polsku"] = "tak", }; </syntaxhighlight> A tutaj przy użyciu identyfikatora przestrzeni nazw przestrzeni nazw niegłównej, czyli przestrzeni nazw charakteryzującej się jej wersją niewyświetlaną niepustą, z tymi samymi parametrami, co powyżej, z tymi samymi wartościami, tylko jest inna reprezentacja przestrzeni nazw: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość równą nazwie przestrzeni niegłównej: "Szablon": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = 10, ["klucz projektu"] = "commons", ["wyświetlana"] = "tak", ["po polsku"] = "tak", }; ---- Zwraca wartość równą nazwie przestrzeni niegłównej: "Szablon": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = 10, ["kod projektu"] = "commons", ["wyświetlana"] = "tak", ["po polsku"] = "tak", }; </syntaxhighlight> Widzimy, jedynie dla tej przestrzeni, że użycie wspomnianego tego parametru jest opcjonalne, bo nic w tym przypadki nie zmienia, bo przestrzeń nazw nie jest pusta, lub nie jest reprezentowana inaczej, niż przez liczbę {{Code|0}}. ===== Tłumaczenie nazw przestrzeni nazw z jednego języka na drugi ===== ====== Tłumaczenie nazw obcojęzycznych nazw przestrzeni nazw na jej wersję polską, tzn. jej język polski, i na język angielski, tzn. jej wersje angielską w postaci nazwy kanonicznej, albo identyfikator przestrzeni nazw lub operację przeciwną ====== Tłumaczenie na nazwę kanoniczną w języku angielskim, z nazwy polskiej, czy nazwy w innym języku, tutaj w języku polskim, w jakim ona jest jedynie dostępna, przy użyciu parametru {{Code|kanoniczna {{=}} "tak"}}: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Template": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "Szablon", ["klucz projektu"] = "pl:w", kanoniczna = "tak", }; ---- Zwraca wartość: "Template": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "Szablon", ["kod projektu"] = "w", ["kod języka"] = "pl", kanoniczna = "tak", }; </syntaxhighlight> Tłumaczenie identyfikatora przestrzeni nazw na nazwę kanoniczną, ale przestrzeni nazw są te same, co powyżej, tylko zamiast przestrzeni nazw: "Szablon", mamy to jej idenntyfiator, którym jest liczba: {{Code|10}}, wtedy otrzymamy te same wyniki, co powyżej: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Template": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = 10, ["klucz projektu"] = "pl:w", kanoniczna = "tak", }; ---- Zwraca wartość: "Template": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = 10, ["kod projektu"] = "w", ["kod języka"] = "pl", kanoniczna = "tak", }; </syntaxhighlight> Przypadek odwrotny, do poprzednich, dla tego samego projektu, gdy nie używamy tego parametru, ale przestrzenie nazw są tym razem po angielsku, jako nazwy kanoniczne, które są zamieniane na jej wersją charakterystyczną dla danego projektu, tutaj polską: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "Template", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "Template", ["kod projektu"] = "w", ["kod języka"] = "pl", }; </syntaxhighlight> Identyfikator przestrzeni nazw tłumaczymy na jego nazwę polską - ewentualnie, na wersję języka projektu, i dlatego tutaj używamy języka polskiego, ponieważ mamy do czynienia z projektem polskojęzycznym, bo kod języka projektu wskazuje tutaj na ten język: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = 10, ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = 10, ["kod projektu"] = "w", ["kod języka"] = "pl", }; </syntaxhighlight> ====== Tłumaczenie nazw przestrzeni na jej wersję w innych języku w jakikolwiek projekcie ====== Do tłumaczenia używamy parametru {{Code|awaryjnie}}, której użycie w funkcji {{m|Nazwy|NpDane}}, powoduje skorzystanie z bazy danym projektów {{Code|MediaWiki}}, czyli {{Code|{{NS|l=tak|w=tak|k=en:d|jw=tak}}}} (po angielsku), a inaczej {{Code|{{NS|l=tak|w=tak|k=d}}}} (po polsku): * Przy użyciu nazw przestrzeni nazw w postaci, nie identyfikatorów, nazwanej łańcuchem znaków,możemy daną przestrzeń przetłomaczyć na dany język, nie używając przy tym żadnych stron: {{Code|.json}}, w podstronach modułu {{Code|{{m|Nazwy/}}}}: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "Kategorie", ["klucz projektu"] = "de:w", awaryjnie = "tak", kanoniczna = "tak", }; local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "Category", ["klucz projektu"] = "de:w", awaryjnie = "tak", }; local nazwa_przestrzeni_nazw_3 = nazwy_modul.NpDane{ nazwa = "Категория", ["klucz projektu"] = "ru:w", awaryjnie = "tak", kanoniczna = "tak", }; local nazwa_przestrzeni_nazw_4 = nazwy_modul.NpDane{ nazwa = "Category", ["klucz projektu"] = "ru:w", awaryjnie = "tak", }; </syntaxhighlight> * Jako z ich wersją numeryczną, czyli w postaci identyfikatorów, nazwanej w postaci pewnego numeru, ale przestrzenie nazw są te same, co powyżej, tylko inaczej zapisane, a inne parametry są takie same, czyli z czterech przykładów generują się jedynie dwa, ale wyniki są te same: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = 14, ["klucz projektu"] = "de:w", awaryjnie = "tak", }; local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa 14, ["klucz projektu"] = "ru:w", awaryjnie = "tak", }; </syntaxhighlight> Przykłady tłumaczenia z jednej wersji językowej w danym języku na angielski (wersję kanoniczną) i odwrotnie # {{Code|{{s|NpDane|Kategorie|klucz projektu{{=}}de:w|awaryjnie{{=}}tak|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|Kategorie|klucz projektu=de:w|awaryjnie=tak|kanoniczna=tak}}}} # {{Code|{{s|NpDane|Category|klucz projektu{{=}}de:w|awaryjnie{{=}}tak}}}} → {{Tt|{{NpDane|Category|klucz projektu=de:w|awaryjnie=tak}}}} # {{Code|{{s|NpDane|Категория|klucz projektu{{=}}ru:w|awaryjnie{{=}}tak|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|Категория|klucz projektu=ru:w|awaryjnie=tak|kanoniczna=tak}}}} # {{Code|{{s|NpDane|Category|klucz projektu{{=}}ru:w|awaryjnie{{=}}tak}}}} → {{Tt|{{NpDane|Category|klucz projektu=ru:w|awaryjnie=tak}}}} Przykłady przy użyciu identyfikatorów: # {{Code|{{s|NpDane|14|klucz projektu{{=}}de:w|awaryjnie{{=}}tak}}}} → {{Tt|{{NpDane|Category|klucz projektu=de:w|awaryjnie=tak}}}} # {{Code|{{s|NpDane|14|klucz projektu{{=}}ru:w|awaryjnie{{=}}tak}}}} → {{Tt|{{NpDane|Category|klucz projektu=ru:w|awaryjnie=tak}}}} ===== Użycie parametru {{Code|link}} oraz zależność od projektu i języka, wyświetlanie nazw przestrzeni nazw po polsku ===== Przykłady poniżej i niektóre wywołania funkcji {{m|Nazwy|NpDane}} piszemy przy pomocy parametru {{Code|link}}, który posiłkujemy z {{Code|klucz projektu}}, przykładowo z pomożeniem użycia zmiennej {{Code|po polsku}}, ewentualnie z użyciem argumentu {{Code|kanoniczna}}, co powoduje wyświetlanie się linku do pewnej strony naa tym samym projekcie lub innym,a jeśli mamy nazwę kanoniczną, to otrzymamy w linku nazwę linku właśnie że wyświetlaną, np. w postaci: {{Np|(main)|link=tak}}: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "Szablon", link = "tak", ["klucz projektu"] = "pl:w", }; local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "Szablon", link = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; local nazwa_przestrzeni_nazw_3 = nazwy_modul.NpDane{ nazwa = "Template", link = "tak", ["klucz projektu"] = "en:w", ["po polsku"] = "tak", }; ---- Tutaj nazwa przestrzeni zostanie wyświetlona, jako nazwa linku, po angielsku, czyli w wersji kanonicznej local nazwa_przestrzeni_nazw_4 = nazwy_modul.NpDane{ nazwa = "Template", link = "tak", kanoniczna = "tak", ["klucz projektu"] = "en:w", ["po polsku"] = "tak", }; local nazwa_przestrzeni_nazw_5 = nazwy_modul.NpDane{ nazwa = "", link = "tak", ["klucz projektu"] = "en:w", }; local nazwa_przestrzeni_nazw_6 = nazwy_modul.NpDane{ nazwa = "", link = "tak", kanoniczna = "tak", ["klucz projektu"] = "en:w", }; local nazwa_przestrzeni_nazw_7 = nazwy_modul.NpDane{ nazwa = "", link = "tak", ["klucz projektu"] = "en:w", ["po polsku"] = "tak", }; ---- Tutaj nazwa przestrzeni zostanie wyświetlona, jako nazwa linku, po angielsku, czyli w wersji kanonicznej local nazwa_przestrzeni_nazw_8 = nazwy_modul.NpDane{ nazwa = "", link = "tak", kanoniczna = "tak", ["klucz projektu"] = "en:w", ["po polsku"] = "tak", }; </syntaxhighlight> Teraz będziemy, to robili przy użyciu identyfikatorów przestrzeni nazw, który będziemy tłumaczyć na jego wersję charakterystyczną dla danego projektu, nazwę kanoniczną lub na jego odpowiednik polski, ale mamy te same przykłady, co powyżej, bo te same przestrzenie nazw, tylko z tą różnicą, że ona jest inaczej zapisana, więc otrzymamy te same wyniki, więc: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = 10, link = "tak", ["klucz projektu"] = "pl:w", }; local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = 10, link = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; local nazwa_przestrzeni_nazw_3 = nazwy_modul.NpDane{ nazwa = 10, link = "tak", ["klucz projektu"] = "en:w", ["po polsku"] = "tak", }; ---- Tutaj nazwa przestrzeni zostanie wyświetlona, jako nazwa linku, po angielsku, czyli w wersji kanonicznej local nazwa_przestrzeni_nazw_4 = nazwy_modul.NpDane{ nazwa = 10, link = "tak", kanoniczna = "tak", ["klucz projektu"] = "en:w", ["po polsku"] = "tak", }; local nazwa_przestrzeni_nazw_5 = nazwy_modul.NpDane{ nazwa = 0, link = "tak", ["klucz projektu"] = "en:w", }; local nazwa_przestrzeni_nazw_6 = nazwy_modul.NpDane{ nazwa = 0, link = "tak", kanoniczna = "tak", ["klucz projektu"] = "en:w", }; local nazwa_przestrzeni_nazw_7 = nazwy_modul.NpDane{ nazwa = 0, link = "tak", ["klucz projektu"] = "en:w", ["po polsku"] = "tak", }; ---- Tutaj nazwa przestrzeni zostanie wyświetlona, jako nazwa linku, po angielsku, czyli w wersji kanonicznej local nazwa_przestrzeni_nazw_8 = nazwy_modul.NpDane{ nazwa = 0, link = "tak", kanoniczna = "tak", ["klucz projektu"] = "en:w", ["po polsku"] = "tak", }; </syntaxhighlight> ---- Przykłady funkcji w wyniku są: # {{Code|{{s|NpDane|nazwa{{=}}Szablon|link{{=}}tak|klucz projektu{{=}}pl:w}}}} → {{Tt|{{NpDane|nazwa=Szablon|link=tak|klucz projektu=pl:w}}}} # {{Code|{{s|NpDane|nazwa{{=}}Szablon|link{{=}}tak|klucz projektu{{=}}pl:w|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=Szablon|link=tak|klucz projektu=pl:w|kanoniczna=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}|link{{=}}tak|klucz projektu{{=}}pl:w}}}} → {{Tt|{{NpDane|nazwa=|link=tak|klucz projektu=pl:w}}}} # {{Code|{{s|NpDane|nazwa{{=}}|link{{=}}tak|klucz projektu{{=}}pl:w|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=|link=tak|klucz projektu=pl:w|kanoniczna=tak}}}} Gdy parametr {{Code|nazwa}} jest liczbą, odpowiedniki tych samych przykładów, co powyżej, tylko przestrzeń nazw jest w postaci numerycznej: # {{Code|{{s|NpDane|nazwa{{=}}10|link{{=}}tak|klucz projektu{{=}}pl:w}}}} → {{Tt|{{NpDane|nazwa=10|link=tak|klucz projektu=pl:w}}}} # {{Code|{{s|NpDane|nazwa{{=}}10|link{{=}}tak|klucz projektu{{=}}pl:w|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=10|link=tak|klucz projektu=pl:w|kanoniczna=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}0|link{{=}}tak|klucz projektu{{=}}pl:w}}}} → {{Tt|{{NpDane|nazwa=0|link=tak|klucz projektu=pl:w}}}} # {{Code|{{s|NpDane|nazwa{{=}}0|link{{=}}tak|klucz projektu{{=}}pl:w|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=0|link=tak|klucz projektu=pl:w|kanoniczna=tak}}}} ---- ---- Inne przykłady, projektu niepolskiego, ale mającej jego wersje polską: # {{Code|{{s|NpDane|nazwa{{=}}Template|link{{=}}tak|klucz projektu{{=}}en:w|po polsku{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=Template|link=tak|klucz projektu=en:w|po polsku=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}Template|link{{=}}tak|klucz projektu{{=}}en:w|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=Template|link=tak|klucz projektu=en:w|kanoniczna=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}|link{{=}}tak|klucz projektu{{=}}en:w|po polsku{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=|link=tak|klucz projektu=en:w|po polsku=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}|link{{=}}tak|klucz projektu{{=}}en:w|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=|link=tak|klucz projektu=pl:w|kanoniczna=tak}}}} Gdy parametr {{Code|nazwa}} jest liczbą, odpowiedniki przykładów powyższych z innym przedstawieniem przestrzeni nazw: # {{Code|{{s|NpDane|nazwa{{=}}10|link{{=}}tak|klucz projektu{{=}}en:w|po polsku{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=10|link=tak|klucz projektu=en:w|po polsku=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}10|link{{=}}tak|klucz projektu{{=}}en:w|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=10|link=tak|klucz projektu=en:w|kanoniczna=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}0|link{{=}}tak|klucz projektu{{=}}en:w|po polsku{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=0|link=tak|klucz projektu=en:w|po polsku=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}0|link{{=}}tak|klucz projektu{{=}}en:w|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=0|link=tak|klucz projektu=pl:w|kanoniczna=tak}}}} ---- ---- A dla projektu niemającej wersji polskiej, np. tylko wersję angielską: # {{Code|{{s|NpDane|nazwa{{=}}Template|link{{=}}tak|klucz projektu{{=}}commons|po polsku{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=Template|link=tak|klucz projektu=commons|po polsku=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}Template|link{{=}}tak|klucz projektu{{=}}commons|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=Template|link=tak|klucz projektu=commons|kanoniczna=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}|link{{=}}tak|klucz projektu{{=}}commons|po polsku{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=|link=tak|klucz projektu=commons|po polsku=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}|link{{=}}tak|klucz projektu{{=}}commons|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=|link=tak|klucz projektu=commons|kanoniczna=tak}}}} Gdy parametr {{Code|nazwa}} jest liczbą, wtedy mamy te same przykłady, co powyżej, tylko ta sama przestrzeń nazw jest w innej postaci przedstawiona: # {{Code|{{s|NpDane|nazwa{{=}}10|link{{=}}tak|klucz projektu{{=}}commons|po polsku{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=10|link=tak|klucz projektu=commons|po polsku=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}10|link{{=}}tak|klucz projektu{{=}}commons|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=10|link=tak|klucz projektu=commons|kanoniczna=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}0|link{{=}}tak|klucz projektu{{=}}commons|po polsku{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=0|link=tak|klucz projektu=commons|po polsku=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}0|link{{=}}tak|klucz projektu{{=}}commons|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=0|link=tak|klucz projektu=commons|kanoniczna=tak}}}} ===== Zamiana przestrzeni nazw przedmiotowej na dyskusji lub przeciwnie, i transformacje tożsame ===== * Używać tu będziemy dodatkowo parametrów: {{Code|przedmiotowa}} - zamiany przestrzeni nazw na przedmiotową, czy: {{Code|dyskusja}} - na dyskusji. Można też przechodzić z tej samej przestrzeni nazw w nią samą, lub do niego skojarzonej, tzn. z przedmiotowej do dyskusji lub odwrotnie, wtedy w tym przypadku otrzymujemy nazwę po polsku, dla poskich projektów, dla projektów w danym języku, na nazwę w danym języku, przykłady: <syntaxhighlight lang="lua"> local nazwy_modul = require("Module:Nazwy"); -- Gdy nazwą przestrzeni jest nazwa niekanoniczna: ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_przedmotowej_1 = nazwy_modul.NpDane{ nazwa = "Dyskusja szablonu", przedmiotowa = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_dyskusji_1 = nazwy_modul.NpDane{ nazwa = "Szablon", dyskusja = "tak", ["klucz projektu"] = "pl:w", }; -- Gdy nazwą przestrzeni jest nazwa kanoniczna ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_przedmotowej_2 = nazwy_modul.NpDane{ nazwa = "Template talk", przedmiotowa = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_dyskusji_2 = nazwy_modul.NpDane{ nazwa = "Template", dyskusja = "tak", ["klucz projektu"] = "pl:w", }; -- Gdy prrzestrzeń nazw jest w postaci jej numeru id ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_przedmotowej_3 = nazwy_modul.NpDane{ nazwa = 11, przedmiotowa = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_dyskusji_3 = nazwy_modul.NpDane{ nazwa = 10, dyskusja = "tak", ["klucz projektu"] = "pl:w", }; </syntaxhighlight> Gdy użyjemy dodatkowo parametr {{Code|kanoniczna}}, wtedy otrzymujemy te nazwy w postaci nazwy w języku angielskim (kanoniczne) tych przestrzeni nazw, są te same przykłady, co powyżej, tylko jest inna wersja językowa w wyniku tej samej otrzymanej przestrzeni nazw: <syntaxhighlight lang="lua"> local nazwy_modul = require("Module:Nazwy"); -- Gdy nazwą przestrzeni jest nazwa niekanoniczna: ---- Zwraca wartość: "Template": local nazwa_przestrzeni_przedmotowej_1 = nazwy_modul.NpDane{ nazwa = "Dyskusja szablonu", przedmiotowa = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Template talk": local nazwa_przestrzeni_dyskusji_1 = nazwy_modul.NpDane{ nazwa = "Szablon", dyskusja = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", -- Gdy nazwą przestrzeni jest nazwa kanoniczna: ---- Zwraca wartość: Template": local nazwa_przestrzeni_przedmotowej_2 = nazwy_modul.NpDane{ nazwa = "Template talk", przedmiotowa = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Template talk": local nazwa_przestrzeni_dyskusji_2 = nazwy_modul.NpDane{ nazwa = "Template", dyskusja = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; -- Gdy przestrzeń nazw jest w postaci jej numeru id: ---- Zwraca wartość: ""Template": local nazwa_przestrzeni_przedmotowej_3 = nazwy_modul.NpDane{ nazwa = 11, przedmiotowa = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Template talk": local nazwa_przestrzeni_dyskusji_3 = nazwy_modul.NpDane{ nazwa = 10, dyskusja = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; </syntaxhighlight> Przejście z tej samej przestrzeni na tą samą możemy uzyskać to wtedy, tzw. przejście tożsamościowe, poprzez tłumaczenie nazw dyskusji na dysusji, i nazw przedmiotowych na przedmiotowe, dla róznych projektów, nie tylko polskich, a tutaj mamy dla języka polskiego, tylko repezentacja językowa może być inna, tutaj jest ta polska (w wersji niekanonicznej) i angielska (w wersji kanonicznej): <syntaxhighlight lang="lua"> local nazwy_modul = require("Module:Nazwy"); -- Gdy nazwą przestrzeni jest nazwa niekanoniczna, gdy w ty przypadku chcemy uzyskać nazwę charakterystyczną dla danego języka danego projektu: ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_przedmotowej_1 = nazwy_modul.NpDane{ nazwa = "Szablon", przedmiotowa = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_dyskusji_1 = nazwy_modul.NpDane{ nazwa = "Dyskusja szablonu", dyskusja = "tak", ["klucz projektu"] = "pl:w", }; -- Gdy nazwą przestrzeni jest nazwą kanoniczną: ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_przedmotowej_2 = nazwy_modul.NpDane{ nazwa = "Template", przedmiotowa = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_dyskusji_2 = nazwy_modul.NpDane{ nazwa = "Template talk", dyskusja = "tak", ["klucz projektu"] = "pl:w", }; -- Gdy przestrzeń nazw jest w postaci jej numeru id: ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_przedmotowej_3 = nazwy_modul.NpDane{ nazwa = 10, przedmiotowa = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_dyskusji_3 = nazwy_modul.NpDane{ nazwa = 11, dyskusja = "tak", ["klucz projektu"] = "pl:w", }; </syntaxhighlight> Gdy użyjemy dodatkowo parametr {{Code|kanoniczna}}, uzyskamy nazwę angielską danej przestrzeni nazw, nawet gdy to jest przestrzeń podana w języku polskim, dla polskiego projektu, lub w jezyku charakterystycznym dla danego projektu, jeżeli mamy to w bazie przestrzeni nazw w formie pliku {{Code|.json}}, podane w podstronach modułu {{m|Nazwy/}}, to te nazwy wtedy obsługuje: <syntaxhighlight lang="lua"> local nazwy_modul = require("Module:Nazwy"); -- Gdy nazwą przestrzeni jest nazwą niekanoniczną: ---- Zwraca wartość: "Template": local nazwa_przestrzeni_przedmotowej_1 = nazwy_modul.NpDane{ nazwa = "Szablon", przedmiotowa = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Template talk": local nazwa_przestrzeni_dyskusji_1 = nazwy_modul.NpDane{ nazwa = "Dyskusja szablonu", dyskusja = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; -- Gdy nazwą przestrzeni jest nazwą kanoniczną: ---- Zwraca wartość: Template": local nazwa_przestrzeni_przedmotowej_2 = nazwy_modul.NpDane{ nazwa = "Template", przedmiotowa = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Template talk": local nazwa_przestrzeni_dyskusji_2 = nazwy_modul.NpDane{ nazwa = "Template talk", dyskusja = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; -- Gdy przestrzeń nazw jest w postaci jej numeru id: ---- Zwraca wartość: "Template": local nazwa_przestrzeni_przedmotowej_3 = nazwy_modul.NpDane{ nazwa = 10, przedmiotowa = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", } ---- Zwraca wartość: "Template talk": local nazwa_przestrzeni_dyskusji_3 = nazwy_modul.NpDane{ nazwa = 11, dyskusja = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; </syntaxhighlight> ===== Nazwy przestrzeni z myślnikami dolnymi ===== Jeżeli nazwy danych przestrzeni, niezależnie, czy są w postaci niekanonicznej, czy nie, ale jeżeli w nazwie zawierają spację, to one jako w wyniku zamiast nich będą miały dolny myślnik zamiast spacji, gdy użyjemy parametru: {{Code|["z myślnikami dolnymi"] {{=}} "tak"}}, czyli: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Dyskusja_szablonu": local nazwa_przestrzeni_1 = nazwy_modul.NpDane{ nazwa = "Dyskusja szablonu", ["z myślnikami dolnymi"] = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Dyskusja_szablonu": local nazwa_przestrzeni_2 = nazwy_modul.NpDane{ nazwa = "Template talk", ["z myślnikami dolnymi"] = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Template_talk";: local nazwa_przestrzeni_3 = nazwy_modul.NpDane{ nazwa = "Dyskusja szablonu", kanoniczna = "tak", ["z myślnikami dolnymi"] = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Template_talk": local nazwa_przestrzeni_4 = nazwy_modul.NpDane{ nazwa = "Template talk", kanoniczna = "tak", ["z myślnikami dolnymi"] = "tak", ["klucz projektu"] = "pl:w", }; </syntaxhighlight> ===== Uzyskiwanie kanonicznej nazwy projektu, nazwy przedmiotowej i jej dyskusji, z jej odpowiednika nazwy przestrzeni nazw ===== Dla przestrzeni nazw: {{NpDane|Wikipedia|link=tak|klucz projektu=pl:w}}, jej nazwy projektowej: {{NpDane|Wikipedia|link=tak|kanoniczna=tak|nazwij projektem=tak|klucz projektu=pl:w}} możemy uzyskać, gdy dla funkcji {{m|Nazwy|NpDane}} podamy parametr: {{Code|["nazwij projektem"] {{=}} "tak"}}, dla przestrzeni przedmiotowej lub dyskusji: {{NpDane|Wikipedia talk|link=tak|klucz projektu=pl:w}}, jej nazwy projektowej: {{NpDane|Wikipedia talk|link=tak|kanoniczna=tak|nazwij dyskusją projektu=tak|klucz projektu=pl:w}}, gdy podamy parametr {{Code|["nazwij dyskusją projektu"] {{=}} "tak"}}, czyli: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Wikipedia": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "Wikipedia", ["nazwij projektem"] = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Project": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "Wikipedia", ["nazwij projektem"] = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Project": local nazwa_przestrzeni_nazw_3 = nazwy_modul.NpDane{ nazwa = "Dyskusja Wikipedii", ["nazwij projektem"] = "tak", przedmiotowa = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Dyskusja Wikipedii": local nazwa_przestrzeni_nazw_4 = nazwy_modul.NpDane{ nazwa = "Wikipedia", ["nazwij dyskusją projektu"] = "tak", dyskusja = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Project talk": local nazwa_przestrzeni_nazw_5 = nazwy_modul.NpDane{ nazwa = "Dyskusja Wikipedii", ["nazwij dyskusją projektu"] = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Project talk": local nazwa_przestrzeni_nazw_6 = nazwy_modul.NpDane{ nazwa = "Wikipedia", ["nazwij dyskusją projektu"] = "tak", dyskusja = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; </syntaxhighlight> ===== Różne wersje sprawdzania istnienia przestrzeni nazw ===== ====== Sprawdzanie, czy dana przestrzeń jest poprawnie podane, czy istnieje ====== Możemy sprawdzić, istnienie podanej przestrzeni nazw poprzez użycie parametru {{Code|istnieje}} z wartością niepustą, wtedy dla obu jej wartości uzyskujemy wyniki, wskazujać, czy istnieją przestrzenie nazw istniejące i które nie mają prawa istnieć z racji bytu, w pierwszym przypadku otrzymamy treściwy wynik, a w drugim komunikatro błędzie: <syntaxhighlight lang="lua">0 local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "Szablon", istnieje = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Moja przestrzeń": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "Moja przestrzeń", istnieje = "", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "(błąd)": local nazwa_przestrzeni_nazw_3 = nazwy_modul.NpDane{ nazwa = "Moja przestrzeń", istnieje = "tak", ["klucz projektu"] = "pl:w", }; </syntaxhighlight> Gdy dana przestrzeń nie istnieje przy użyciu wartości niepustej parametru {{Code|istnieje}}, wtedy otrzymujemy błąd funkcji w postaci tekstu {{Code|(błąd)}}, a gdy nie podamy tego parametru, to otrzymamy nazwę sformatowaną danej nieznanej przestrzeni nazw po usunięciu wszystkich spacji lub dolnych myślników na początku i końcu ciągu oraz zbędnych wewnątrz tego ciągu i zastąpieniu ich kolejnych jedną spacją. A gdy jednak przestrzeń nazw istnieje, to funkcja zachowuje się tak, jakby nie podano tego parametru. ====== Łatwe sprawdzanie istnienia danej przestrzeni nazw ====== Sprawdzamy tutaj istnienie podanej przestrzeni nazw w parserach wikikodu {{Code|MediaWiki}}, wtedy dla nieistniejącej przestrzeni nazw otrrzymamy wynik pusty, a dla istniejącej już nie, wyjątkiem jest przestrzeń główna, dla której wartość otrzymana jest pusta, co nie trudno jest odróżnić od stanu błędu funkcji, chyba, że użyjemy pewnego parametru opisywanego poniżej: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "Szablon", istnieje = "tak", ["wynik błędu nietekstowy"] = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Moja przestrzeń": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "Moja przestrzeń", istnieje = "", ["wynik błędu nietekstowy"] = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: nil: local nazwa_przestrzeni_nazw_3 = nazwy_modul.NpDane{ nazwa = "Moja przestrzeń", istnieje = "tak", ["wynik błędu nietekstowy"] = "tak", ["klucz projektu"] = "pl:w", }; </syntaxhighlight> W kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}} powyższe wywołanie przy nieznanych przestrzeniach przyjmuje wartość {{Code|nil}} (ostatni przykład), a wikikodzie w szablonach wartość pustą: "". A jeżeli chcemy sprawdzić, za pomocą funkcji parsera wikikodu: {{Code|{{s|#if:coś|wtedy|przeciwnie}}}}, używając odpowiednika szablonowego {{s|NpDane}}, wtedy musimy użyć parametru: {{Code|["wynik błędu nietekstowy"] {{=}} "tak"}}, używany z: {{Code|istnieje {{=}} "tak"}}, gdy dana przestrzeń nie istnieje, wtedy uzyskamy wartość pustą (bo wartość {{Code|nil}} jest tłumaczone na to), a żeby odróżnić ją od nazwy przestrzeni nazw głównej, to należy dodatkowo użyć: {{Code|["wyświetlana"] {{=}} "tak"}}, wtedy dla wartości pustej tej nazwy przestrzeni nazw, uzyskujemy w wyniku czego nie wartość pustą, czyli: {{Code|(główna)}} dla projektów polskich, lub po użyciu parametru {{Code|["po polsku"] {{=}} "tak"}} z wartością niepustą albo {{Code|(main)}} dla przestrzeni angielskich bądź innych, gdy nie ma obsługi w bazie przestrzeni nazw, tę nazwę można uzyskać też przy parametrze {{Code|kanoniczna {{=}} "tak"}} dla każdego obsługiwanego projektu {{Strong|wiki}}, więc przy takich realiach łatwo to odróżnić od komunikatu błędu tej funkcji. ===== Uzyskiwanie uchwytu danej przestrzeni nazw, analogicznie do funkcji {{Code|mw.site.namespaces}} (ale w sposób inny sformułowana), ale też z innym zestawem parametrów ===== Uchwyt niskopoziomowy do danej przestrzeni nazw nie można uzyskać przy pomocy kodu z: {{Code|mw.site.namespaces}}, ponieważ jest on dla przestrzeni na bieżącym projekcie, a tutaj mamy siostrzany. Funkcja uzyskująca uchwyt ignoruje wielkość liter w przestrzeni nazw oraz powtórzone odstępy zrealizowane za pomocą spacji lub dolnych myślników. To wysokopoziomowe uzyskanie uchwytu można utworzyć przy pomocy parametru: {{Code|uchwyt}}: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local uchwyt_1 = nazwy_modul.NpDane{ nazwa = "Szablon", uchwyt = "tak", ["klucz projektu"] = "pl:w", }; local uchwyt_2 = nazwy_modul.NpDane{ nazwa = "Template", uchwyt = "tak", ["klucz projektu"] = "pl:w", }; local uchwyt_3 = nazwy_modul.NpDane{ nazwa = 10, uchwyt = "tak", ["klucz projektu"] = "pl:w", }; </syntaxhighlight> Funkcja {{Code|nazwy_modul.NpDane}} jest bardziej ogólniejsza niż {{Code|mw.site.namespaces}} na projekcie bieżącym, ponieważ ona uwzględnia inne projekty niż polski {{NS|l=tak|w=tak}}, bo uwzględnia większą liczbę nazw przestrzeni nazw, czyli ona obejmuje wszystkie znane przestrzenie nazw, i dlatego należy stosować tę funkcję, a nie dedykowaną tabelę z połączoną z metatabelką za pomocą funkcji {{lpg|Lua}}. == Funkcje nazw serwisowych projektów siostrzanych polskiego {{NS|w=tak|l=tak|pk=d}} == === {{Code|m.NAZWASERWISU()}} === ==== Odpowiednik szablonowy ==== Odpowiednik szablonowy jest pod nazwą {{s|NAZWASERWISU}} (skrót: {{s|NS}}). Jego parametry są podobne do jego wersji bibliotecznej. Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce. ==== Funkcja biblioteczna ==== Szablon jest używany do uzyskania nazwy serwisu danej wiki, ewentualnie w postaci linku do strony głównej projektu danej wiki lub do artykułu o danej wiki na {{lpg|Wikipedia|Wikipedii}}, w jakieś podanej wersji językowej. {{OpisParametrów | 1 = Parametry podstawowe...| nagłówek1=tak | 2 = {{Parametr|wyspecjalizowana|tak}} | _2 = Tylko dla tej funkcji wywołanej w postaci ramki w wikikodzie w szablonach, gdy do niej wsadzamy bezpośrednio jako dzieci, a w przypadku z rodzica to ten parametr jest niepotrzebny lub powinien przyjmować wartość pustą, | 3 = Inne parametry...| nagłówek3=tak | 4 = Ta funkcja dalsze ma takie same parametry, co szablon w jego pełnej nazwie: {{s|NAZWASERWISU}}, lub skrótowej: {{s|NS}}.|nagłówek4=tak | 5 = Wszystkie powyższe zmienne są opcjonalne|nagłówek5=tak }} ===== Opis parametrów użytych razem z parametrem {{Code|link}} ===== Szablon przyjmuje parametr opcjonalny {{Code|link}} ({{s|NS|l{{=}}tak}}), dzięki któremu jest wyświetlany link, do strony głównej tego projektu, w postaci: {{Code|{{NS|l=tak}}}}, o nazwie linku, będącą jednocześnie nazwą serwisu projektu '''{{NS|l=tak}}'''. Gdy dodamy parametr {{Code|wikipedia{{=}}tak}} do wywołania {{Code|{{s|NS|l{{=}}tak|w{{=}}tak}}}}, wtedy uzyskamy wynik: {{Code|{{NS|l=tak|w=tak}}}}, w innym przypadku, gdy linkujemy do angielskiej {{NS|w=tak|l=tak|pk=mj|k=tak}}, wtedy dla wywołania {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|kj{{=}}en}}}} mamy: {{Code|{{NS|l=tak|w=tak|kj=en}}}}, a w przypadku angielskiego {{NS|w=tak|l=tak|pk=d}} dla wikikodu {{Code|{{s|NS|l{{=}}tak|kj{{=}}en}}}} mamy wynik w postaci: {{Code|{{NS|l=tak|kj=en}}}}, a jeśli użyjemy parametru {{Code|kod projektu}}, wtedy wywołanie {{Code|{{s|NS|link{{=}}tak|kp{{=}}s}}}}, to mamy: {{Code|{{NS|l=tak|kp=s}}}}, a gdy dodamy dodatkowo {{Code|wikipedia{{=}}tak}}, zatem {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|kp{{=}}s}}}} jest o wyniku: {{Code|{{NS|l=tak|w=tak|kp=s}}}}. {{OpisParametrów | 1 = Wyniki z parametrem: {{Parametr|link|tak}}, zostały obtoczone znacznikiem: {{Tag|code}}, dla odróżnienia rezultatu od reszty tekstu.|nagłówek1=tak }} ===== Wywołania szablonu z tekstem z małymi literami po linku (parametr: {{Code|po}}) i z dowolnym tekstem w nazwie linku (parametr: {{Code|za}}) ===== {{OpisParametrów | 1 = Parametr {{Parametr|link|tak}} w szablonie {{s|NAZWASERWISU}} mówi, że ma być podany link do strony głównej projektu lub artykułu na {{NS|l=tak|k=w}}. Można w nie podać parametr {{Parametr|po|<łańcuch tekstowy>}}, który jest za linkiem, podobnie {{Parametr|za|<łańcuch tekstowy>}}, który jest w nazwie linku, ale względem jej originalnej nazwy za nim.|nagłówek1=tak }} ====== Proste przykłady użycia, z linkiem do projektu bieżącego, przy użyciu parametru {{Code|link}} ====== Gdy chcemy wyświetlić link do polskiego projektu {{NS|w=tak|l=tak|pk=mj}} do jego strony głównej. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local link_1 = nazwy_modul.NAZWASERWISU{ link = "tak", po = "a", }; local link_2 = nazwy_modul.NAZWASERWISU{ link = "tak", za = "a", }; </syntaxhighlight> ; Analogiczne wywołanie szablonu{{Dk}} * {{Code|{{s|NS|l{{=}}tak|p{{=}}a}}}} → {{Tt|{{NS|l=tak|p=a}}}}, * {{Code|{{s|NS|l{{=}}tak|z{{=}}a}}}} → {{Tt|{{NS|l=tak|z=a}}}}. ; Kod wywołania tych szablonów: ;; Dla wywołania {{Code|{{s|NS|l{{=}}tak|p{{=}}a}}}}{{Dk}} {{PreNowiki|{{NS|l=tak|p=a}}}} ;; Dla wywołania {{Code|{{s|NS|l{{=}}tak|z{{=}}a}}}}{{Dk}} {{PreNowiki|{{NS|l=tak|z=a}}}} ====== Proste przykłady użycia, z linkiem do polskiej {{NS|w=tak|l=tak|k=w|pk=mj}}, przy użyciu parametru {{Code|link}} ====== Gdy chcemy wyświetlić link do artykułu o {{NS|w=tak|l=tak|k=b|pk=mj}} na polskiej {{NS|w=tak|l=tak|k=w|pk=mj}}. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local link_1 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", po = "a", }; local link_2 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", za = "a", }; </syntaxhighlight> ; Analogiczne wywołanie szablonu{{Dk}} * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|p{{=}}a}}}} → {{Tt|{{NS|l=tak|w=tak|p=a}}}}, * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|z{{=}}a}}}} → {{Tt|{{NS|l=tak|w=tak|z=a}}}}. ; Kod wywołania tych szablonów: ;; Dla wywołania {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|p{{=}}a}}}}{{Dk}} {{PreNowiki|{{NS|l=tak|w=tak|p=a}}}} ;; Dla wywołania {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|z{{=}}a}}}}{{Dk}} {{PreNowiki|{{NS|l=tak|w=tak|z=a}}}} ====== Przykłady użycia, z linkiem do obcojęzycznej {{NS|w=tak|l=tak|k=w|pk=mj}}, z polską podanego nazwą projektu, przy użyciu parametru {{Code|link}} ====== Gdy chcemy wyświetlić link do artykułu o {{NS|w=tak|l=tak|k=b|pk=mj}} na podanej obcojęzycznej {{NS|w=tak|l=tak|k=w|pk=mj}} podany za pomocą parametru {{Code|["klucz projektu"] {{=}} "en:s"}}. Jest to projekt: {{NS|l=tak|k=en:s}}, którego językiem jest: {{lpg|{{#invoke:lang|hasło|es}}}}. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local link_1 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", ["klucz projektu"] = "en:s", po = "a", }; local link_2 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", ["klucz projektu"] = "en:s", za = "a", }; </syntaxhighlight> ; Analogiczne wywołanie szablonu{{Dk}} * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|k{{=}}en:s|p{{=}}a}}}} → {{Tt|{{NS|l=tak|w=tak|k=en:s|p=a}}}}, * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|k{{=}}en:s|z{{=}}a}}}} → {{Tt|{{NS|l=tak|w=tak|k=en:s|z=a}}}}. ; Kod wywołania tych szablonów: ;; Dla wywołania {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|k{{=}}en:s|p{{=}}a}}}}{{Dk}} {{PreNowiki|{{NS|l=tak|w=tak|k=en:s|p=a}}}} ;; Dla wywołania {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|k{{=}}en:s|z{{=}}a}}}}{{Dk}} {{PreNowiki|{{NS|l=tak|w=tak|k=en:s|z=a}}}} ====== Przykłady użycia, z linkiem do obcojęzycznej {{NS|w=tak|l=tak|k=w|pk=mj}}, z niepolską podanego nazwą projektu, przy użyciu parametru {{Code|link}} ====== Gdy chcemy wyświetlić link do artykułu o {{NS|w=tak|l=tak|k=b|pk=mj}} do podanej obcojęzycznej {{NS|w=tak|l=tak|k=w|pk=mj}} podany za pomocą parametru {{Code|["klucz projektu"] {{=}} "en:s"}}. A nazwa linku ma być podana w języku tego projektu. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local link_1 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", ["klucz projektu"] = "en:s", ["w języku wiki"] = "tak", po = "a", }; local link_2 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", ["klucz projektu"] = "en:s", ["w języku wiki"] = "tak", za = "a", }; </syntaxhighlight> ; Analogiczne wywołanie szablonu{{Dk}} * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|k{{=}}en:s|jw{{=}}tak|p{{=}}a}}}} → {{Tt|{{NS|l=tak|w=tak|k=en:s|jw=tak|p=a}}}}, * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|k{{=}}en:s|jw{{=}}tak|z{{=}}a}}}} → {{Tt|{{NS|l=tak|w=tak|k=en:s|jw=tak|z=a}}}}. ; Kod wywołania tych szablonów: ;; Dla wywołania {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|k{{=}}en:s|jw{{=}}tak|p{{=}}a}}}}{{Dk}} {{PreNowiki|{{NS|l=tak|w=tak|k=en:s|jw=tak|p=a}}}} ;; Dla wywołania {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|k{{=}}en:s|jw{{=}}tak|z{{=}}a}}}}{{Dk}} {{PreNowiki|{{NS|l=tak|w=tak|k=en:s|jw=tak|za=a}}}} ===== Wywołania szablonu dotyczące, w {{NS|w=tak|l=tak|k=w|pk=mj}} iub nie, kodzie dla projektu {{NS|w=tak|l=tak|pk=m}} dla różnych wersji językowych ===== ====== Przykłady użycia funkcji {{Code|nazwy_modul.NAZWASERWISU()}} ====== Gdy chcemy podać nazwę projektu w postaci linku do artykułu strony głównej na {{NS|w=tak|l=tak|pk=mj}} lub artykułu na polskiej lub obcojęzycznej {{NS|w=tak|l=tak|k=w|pk=mj}}. Do jakiej {{NS|w=tak|l=tak|k=w|pk=mj}} ma być link, to wskazuje kod języka, np.: {{Code|["kod języka"] {{=}} "en"}}. Gdy nie podamy tego kodu, to linkujemy tylko do polskiego {{NS|w=tak|l=tak|pk=mj}} lub do polskiej {{NS|w=tak|l=tak|k=w|pk=mj}} (jeżeli podamy parametr {{Code|wikipedia {{=}} "tak"}}). A gdy podany jest ten kod, to możemy linkować nie tylko do polskich projektów siostrzanych polskiego {{NS|w=tak|l=tak|pk=mj}} (ale tylko różnych jego wersji językowych), ale też można linkować do obcojęzycznych projektów, którym jest Wikipedia do artykułu o tym projekcie. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local link_1 = nazwy_modul.NAZWASERWISSU{}; }; local link_2 = nazwy_modul.NAZWASERWISU{ link = "tak", }; local link_3 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", }; local link_4 = nazwy_modul.NAZWASERWISU{ link = "tak", ["kod języka"] = "pl", }; local link_5 = nazwy_modul.NAZWASERWISU{ link = "tak", ["kod języka"] = "en", }; local link_6 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", ["kod języka"] = "pl", }; local link_7 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", ["kod języka"] = "en", }; </syntaxhighlight> ====== Analogiczne wywołanie szablonu ====== * {{Code|{{s|NS}}}} → {{Tt|{{NS}}}}, * {{Code|{{s|NS|l{{=}}tak}}}} → {{Tt|{{NS|l=tak}}}}, * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak}}}} → {{Tt|{{NS|l=tak|w=tak}}}}, * {{Code|{{s|NS|l{{=}}tak|kj{{=}}pl}}}} → {{Tt|{{NS|l=tak|kj=pl}}}}, * {{Code|{{s|NS|l{{=}}tak|kj{{=}}en}}}} → {{Tt|{{NS|l=tak|kj=en}}}}, * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|kj{{=}}pl}}}} → {{Tt|{{NS|l=tak|w=tak|kj=pl}}}}, * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|kj{{=}}en}}}} → {{Tt|{{NS|l=tak|w=tak|kj=en}}}}. ===== Wywołanie szablonu dotyczące innego projektu niż ten ===== ====== Przykłady użycia funkcji {{Code|nazwy_modul.NAZWASERWISU()}} ====== Ale też możemy linkować do stron głównych innych projektów niż {{NS|w=tak|l=tak|pk=m}}. Robimy to za pomocą parametru: {{Code|["kod projektu"] {{=}} "s"}}, nie licąc parametru języka, ale też możemy linkować do artykułu o danym projekcie na {{NS|w=tak|l=tak|k=w|pk=mj}}. A jeżeli podamy kod języka {{Code|["kod języka"] {{=}} "en"}}, wtedy linkujemy do angielskich projektów, w tym również do {{NS|w=tak|l=tak|k=w|pk=mj}}. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Tutaj linkujemy do Wikiźródeł do jej strony głównej local linki_1 = nazwy_modul.NAZWASERWISU{ link = "tak", ["kod projektu"] = "s", }; --- Co powyżej, tylko do artykułu na Wikipedii o Wikiźródłach local linki_2 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", ["kod projektu"] = "s", }; -- Tutaj linkujemy do Wikibooksa do jej strony głównej w jakieś jej wersji językowej local linki_3 = nazwy_modul.NAZWASERWISU{ link = "tak", ["kod języka"] = "pl", ["kod projektu"] = "s", }; local linki_4 = nazwy_modul.NAZWASERWISU{ link = "tak", ["kod języka"] = "en", ["kod projektu"] = "s", }; -- Jak powyżej, tylko do artykułu Wikipedii w jakieś wersji językowej o Wikiźródłach local linki_5 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", ["kod języka"] = "pl", ["kod projektu"] = "s", }; local linki_6 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", ["kod języka"] = "en", ["kod projektu"] = "s", }; </syntaxhighlight> ====== Analogiczne wywołanie szablonu ====== * {{Code|{{s|NS|l{{=}}tak|kp{{=}}s}}}} → {{Tt|{{NS|l=tak|kp=s}}}}, * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|kp{{=}}s}}}} → {{Tt|{{NS|l=tak|w=tak|kp=s}}}}, * {{Code|{{s|NS|l{{=}}tak|kj{{=}}pl|kp{{=}}s}}}} → {{Tt|{{NS|l=tak|kj=pl|kp=s}}}}, * {{Code|{{s|NS|l{{=}}tak|kj{{=}}en|kp{{=}}s}}}} → {{Tt|{{NS|l=tak|kj=en|kp=s}}}}, * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|kj{{=}}pl|kp{{=}}s}}}} → {{Tt|{{NS|l=tak|w=tak|kj=pl|kp=s}}}}, * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|kj{{=}}en|kp{{=}}s}}}} → {{Tt|{{NS|l=tak|w=tak|kj=en|kp=s}}}}. ===== Wywołania szablonu z nazwą linku danej wiki ===== ====== Przykłady użycia funkcji {{Code|nazwy_modul.NAZWASERWISU()}} ====== Gdy chcemy podać nazwę linku przy pomocy parametru {{Code|["w języku wiki"] {{=}} "tak"}}, w języku danej wiki, którego podajemy przy parametrze {{Code|["kod języka"] {{=}} "en"}}, dla projektu podanego w zmiennej {{Code|["kod projektu"] {{=}} "s"}}. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local linki_1 = nazwy_modul.NAZWASERWISU{ link = "tak", ["kod projektu"] = "s", ["w języku wiki"] = "tak", }; local linki_2 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", ["kod projektu"] = "s",["w języku wiki"] = "tak", }; local linki_3 = nazwy_modul.NAZWASERWISU{ link = "tak", ["kod języka"] = "pl", ["kod projektu"] = "s", ["w języku wiki"] = "tak", }; local linki_4 = nazwy_modul.NAZWASERWISU{ link = "tak", ["kod języka"] = "en", ["kod projektu"] = "s", ["w języku wiki"] = "tak", }; local linki_5 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", ["kod języka"] = "pl", ["kod projektu"] = "s", ["w języku wiki"] = "tak", }; local linki_6 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", ["kod języka"] = "en", ["kod projektu"] = "s", ["w języku wiki"] = "tak", }; </syntaxhighlight> ====== Analogiczne wywołanie szablonu ====== * {{Code|{{s|NS|l{{=}}tak|kp{{=}}s|jw{{=}}tak}}}} → {{Tt|{{NS|l=tak|kp=s|jw=tak}}}}, * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|kp{{=}}s|jw{{=}}tak}}}} → {{Tt|{{NS|l=tak|w=tak|kp=s|jw=tak}}}}, * {{Code|{{s|NS|l{{=}}tak|kj{{=}}pl|kp{{=}}s|jw{{=}}tak}}}} → {{Tt|{{NS|l=tak|kj=pl|kp=s|jw=tak}}}}, * {{Code|{{s|NS|l{{=}}tak|kj{{=}}en|kp{{=}}s|jw{{=}}tak}}}} → {{Tt|{{NS|l=tak|kj=en|kp=s|jw=tak}}}}, * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|kj{{=}}pl|kp{{=}}s|jw{{=}}tak}}}} → {{Tt|{{NS|l=tak|w=tak|kj=pl|kp=s|jw=tak}}}}, * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|kj{{=}}en|kp{{=}}s|jw{{=}}tak}}}} → {{Tt|{{NS|l=tak|w=tak|kj=en|kp=s|jw=tak}}}}. ===== Wywołanie szablonu z podaną nazwą linku ===== ====== Przykłady użycia funkcji {{Code|nazwy_modul.NAZWASERWISU()}} ====== Jeżeli chcemy podać ściśle określony ciąg, który jest nazwą linku, do linkowania do strony głównej lub artykułu na {{NS|w=tak|l=tak|k=w|pk=mj}} o danym projekcie, np. inną niż nazwa projektu. Tutaj nazwą linku jest {{Code|[1] {{=}} "Biblioteka książek"}}. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local link_1 = nazwy_modul.NAZWASERWISU{ [1] = "Biblioteka książek", link = "tak", }; local link_2 = nazwy_modul.NAZWASERWISU{ [1] = "Biblioteka książek", link = "tak", wikipedia = "tak", }; local link_3 = nazwy_modul.NAZWASERWISU{ [1] = "Biblioteka książek", link = "tak", ["kod projektu"] = "s",["kod języka"] = "en", }; local link_4 = nazwy_modul.NAZWASERWISU{ [1] = "Biblioteka książek", link = "tak", wikipedia = "tak", ["kod projektu"] = "s",["kod języka"] = "en", }; </syntaxhighlight> ====== Analogiczne wywołanie szablonu ====== * {{Code|{{s|NS|Biblioteka książek|l{{=}}tak}}}} → {{Tt|{{NS|Biblioteka książek|l=tak}}}}, * {{Code|{{s|NS|Biblioteka książek|l{{=}}tak|w{{=}}tak}}}} → {{Tt|{{NS|Biblioteka książek|l=tak|w=tak}}}}, * {{Code|{{s|NS|Biblioteka wikiźródeł|l{{=}}tak|kp{{=}}s|kj{{=}}en}}}} → {{Tt|{{NS|Biblioteka wikiźródeł|l=tak|kp=s|kj=en}}}}, * {{Code|{{s|NS|Biblioteka wikiźródeł|l{{=}}tak|w{{=}}tak|kp{{=}}s|kj{{=}}en}}}} → {{Tt|{{NS|Biblioteka wikiźródeł|l=tak|w=tak|kp=s|kj=en}}}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> gokg5x0tu2wmrdgttqiq8wdtyn9exfy 555695 555694 2026-09-11T14:35:21Z Persino 2851 /* Wywołania szablonu z tekstem z małymi literami po linku (parametr: {{Code|po}}) i z dowolnym tekstem w nazwie linku (parametr: {{Code|za}}) */ 555695 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Nazwy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == Funkcje nazw nazwy przestrzeni nazw == Należy przeczytać wiadomości ze strony {{lru|Moduły/Nazwy}}, które są informacjami wstępnymi, by używać funkcji bibliotecznych: {{m|Nazwy|Np}} i {{m|Nazwy|NpDane}}, i z nimi skojarzonych szablonów, tzn.: {{s|Np}} i {{s|NpDane}}. Wiadomosci też stąd są bardzo potrzebne do dalszych modułów tomów tej publikacji, to znaczy do funkcji, czy szablonów, nazw. === {{Code|m.Np}} === ==== Odpowiednik szablonowy ==== Odpowiednik szablonowy jest pod nazwą {{s|Np}}, odpowiednik funkcji, w mechanizmie '''MediaWiki''', tzn.: {{Span|styl=color:blue;|<nowiki>{{ns:<nazwa przestrzeni kanoniczna lub nie, albo jej id>}}</nowiki>}}, format tego, bo to nie jest szablon, czy funkcja, tylko wywołanie parserowe, tego, w którym jej parametr, tylko przestrzeny w nim występuje, jej element jest podobny do jej wersji bibliotecznej, opisywanej funkcji. Format wersji bibliotecznej tej funkcji jest bardzo bodobny do jej wersji szablonowej, tylko jest inne uruchomienie, tam jest ramka, a tutaj wywołanie szablonowe. Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce. * Szablon {{s|Np}} korzysta z funkcji bibliotecznej {{m|Nazwy|Np}}, więc parametry obu są wręcz takie same, a nawet podobne. Chociaż ta sama nazwa funkcji w ramce i kodzie {{lpg|Lua}}, to używanie ich nie jest dokładnie takie samo, funkcja biblioteczna nie potrzebuje parametru {{Parametr|wyspecjalizowana|tak}}, a ramka już tak, a szablon {{s|Np}}, który korzysta z tej ramki, to nieobecność, lub obecność z wartością pustą, tego parametru powoduje, że przyjmowane są parametry rodzica, a nie dziecka, które wymagają jego niepustość. ==== Funkcja biblioteczna ==== Zestaw parametrów tej funkcji są to parametry nazwane podawane, w wersji tabelkowej,, w nawiasach klamerkowej, jak się to podaje w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. ; Paramery funkcji {{m|Nazwy|Np|...|wyspecjalizowana{{=}}tak}} lub funkcji bibliotecznej wykorzystującej opisywaną funkcję{{Dk}} {{OpisParametrów | 1 = Parametry podstawowe | nagłówek1=tak | 2 = {{Code|nazwa}} lub {{Code|1}} | _2 = Nazwa przestrzeni nazw, kanoniczna lub nie, lub {{Code|id}} danej przestrzeni. | 3 = {{Parametr|wyspecjalizowana|tak}} | _3 = Tylko dla tej funkcji wywołanej w postaci ramki w wikikodzie w szablonach, gdy do niej wsadzamy bezpośrednio jako dzieci, a w przypadku z rodzica to ten parametr jest niepotrzebny lub powinien przyjmować wartość pustą, | 4 = Zmienne puste lub nie, np. o wartości {{Code|tak}}, lub nie, podawane do tej funkcji są:| nagłówek4=tak | 5 = {{Code|przedmiotowa}} | _5 = Zamienia daną przestrzeń na jej nazwę przedmiotową, tzn. na przestrzenie o numerach {{Code|id}} parzyste. | 6 = {{Code|dyskusja}} | _6 = Zamienia daną przestrzeń na jej wersję dyskusji, tzn. na przestrzenie o numerach {{Code|id}} nieparzyste. | 7 = {{Code|kanoniczna}} | _7 = Zamienia nazwę przestrzeni lub {{Code|id}} danej przestrzeni na jej nazwę kanoniczną, tzn. na jej wersję angielską. | 8 = {{Code|z myślnikami dolnymi}} | _8 = Zamienia spację w nazwach przestrzenie nazw na dolne myślniki, | 9 = {{Code|wyświetlana}} | _9 = Ten parametr nie wpływa na sposób wyświetlania nazw przestrzeni, oprócz jednej przestrzeni nazw, której jest przestrzeń główna o nazwie kanonicznej {{Code|(main)}} lub niekanonicznej {{Code|(główna)}}, wtedy są wyświetlane zamiast ciągu pustego te nazwy w zależności od podanego parametru {{Code|kanoniczna}}, tj. czy ona jest pusta lub nie, lub niepodana. | 10 = {{Code|link}} | _10 = Drukuje link o nazwie referencji, którą jest nazwa wyświetlana danej przestrzeni nazw, lub jej {{Code|id}}, o adresie strony przekierowującej, której jest adres odniesienia podanej w tabeli powyżej dla tej funkcji lub szablonu {{s|Np}}. | 11 = {{Code|id}} | _11 = wyświetla id danej przestrzeni nazw. | 12 = {{Code|nazwij projektem}} | _12 = Powoduje, że wyświetlana jest nazwa projektu {{Code|Wikibooks}} w postaci rzeczywistej nazwy kanonicznej (używany wraz z parametrem {{Code|kanoniczna}}), tzn. w postaci nazwy {{Code|Project}}, lub bez tego parametru, w postaci nazwy nierzeczywistej niekanonicznej {{Code|Projekt}}. | 13 = {{Code|nazwij dyskusją projektu}} | _13 = Powoduje, że wyświetlana jest nazwa projektu {{Code|Dyskusja wikibooks}} w postaci rzeczywistej nazwy kanonicznej (używany wraz z parametrem {{Code|kanoniczna}}), tzn. w postaci nazwy {{Code|Project talk}}, lub bez tego parametru, w postaci nazwy nierzeczywistej niekanonicznej {{Code|Dyskusja projektu}}. | 14 = Inne zmienne niepuste:|nagłówek14=tak | 15 = {{Code|istnieje}} | _15 = Zwraca wartość tekstową {{Code|(bląd)}}, gdy przestrzeń jest nieprawidłowa lub nie istnieje, w innym przypadku zwraca normalną wartość. | 16 = {{Code|wynik błędu nietekstowy}} | _16 = Używany z {{Code|istnieje}}, zwraca wartość w języku {{lpg|Lua}} wartość {{Code|nil}}, gdy wartość nazwy przestrzeni nazw lub {{Code|id}} jest nieprawidłowa lub nieznana. | 17 = Zwracana zmienna w postaci tabeli ze składowymi z pewnymi podzmiennymi:|nagłówek17=tak | 18 = {{Code|uchwyt}} | _18 = Zwraca uchwyt przestrzeni nazw do danej przestrzeni nazw. }} ===== Przykłady używania ===== ====== Podstawowe wywołanie ====== Podstawowe przykłady podstawowego wywołania funkcji, czyli uzyskiwania nazwy niekanonicznej z dowolnej nazwy przestrzeni kanonicznej, czy jej numeru {{Code|id}} (kodu danej przestrzeni nazw, który reprezentuje daną przestrzeń nazw przedmiotową, czy dyskusji), a więc: <syntaxhighlight lang="lua"> local nazwy_modul = require("Module:Nazwy"); ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_1 = nazwy_modul.Np{ [1] = "Szablon", }; ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_2 = nazwy_modul.Np{ [1] = "Template", }; ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_3 = nazwy_modul.Np{ [1] = 10, }; ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_4 = nazwy_modul.Np{ nazwa = "Szablon", }; ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_5 = nazwy_modul.Np{ nazwa = "Template", }; ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_6 = nazwy_modul.Np{ nazwa = 10, }; </syntaxhighlight> Te trzy pary wywołania wyświetlają ten sam wynik tzn. o takiej samej wartości, bo parametr {{Code|nazwa}} wskazuje na tą samą przestrzeń nazw, tylko one są rożnie wskazane. Został ta użyty parametr: {{Code|1}} lub {{Code|nazwa}}, które oznaczają to samo, czyli przestrzeń nazw w postaci kanonicznej, niekanonicznej, czy numeru {{Code|id}}, czyli identyfikatora przestrzeni nazw. Jako wartość uzyskujemy tam nazwę kanoniczną przestrzenina polskiem {{NS|l=tak|p=ie}}. Przestrzeń nazw może zawierać dowolnej wielkości litery, z dowolną liczbą odstępów z dolnymi spacjami lub normalnymi, jeżeli w nim one występują,wtedy zawsze oznaczają one tą samą przestrzeń, niezależnie jak ją zapiszemy, przykłady poniżej. Równie dobrze dowolną nazwę niekanoniczną możemy napisać, co jest uwidocznione w parametrze {{Code|nazwa}}, na wyjściu otrzymujemy w pełni sformatowaną nazwę niekanoniczną, która odpowiada jej odpowiednikowi niesformatowanemu: <syntaxhighlight lang="lua"> local nazwy_modul = require("Module:Nazwy"); -- Zwraca wartość: "Szablon": local nazwa_przestrzeni_1 = nazwy_modul.Np{ nazwa = "SZABLON", }; -- Zwraca wartość: "Szablon": local nazwa_przestrzeni_2 = nazwy_modul.Np{ nazwa = "TEMPLATE", }; -- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_3 = nazwy_modul.Np{ nazwa = "DYSKUSJA ___ ___ _ SZABLONU", }; -- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_4 = nazwy_modul.Np{ nazwa = "TEMPLATE_________TALK", }; </syntaxhighlight> ====== Nazwy kanoniczne i niekanoniczna oraz zamiana z jednej na drugą ====== Aby uzyskać nazwę z dowolnej nazwy, nawet też kanonicznej, czynie, czy też z numeru {{Code|id}} (identyfikatora przestrzeni nazw), wtedy należy podać parametr przestrzeni nazw, z dodatkowym parametrem {{Code|kanoniczna}}, w takim razie: <syntaxhighlight lang="lua"> local nazwy_modul = require("Module:Nazwy"); -- Uzyskujemy wartość: "Template": local nazwa_kanoniczna_1 = nazwy_modul.Np{ nazwa = "Szablon", kanoniczna = "tak", }; -- Uzyskujemy wartość: "Template": local nazwa_kanoniczna_2 = nazwy_modul.Np{ nazwa = "Template", kanoniczna = "tak", }; -- Uzyskujemy wartość: "Template": local nazwa_kanoniczna_3 = nazwy_modul.Np{ nazwa = 10, kanoniczna = "tak", }; </syntaxhighlight> * Według powyższego przykładu, ona, czyli przestrzeń nazw, jest zamieniana na sformatowaną nazwę kanoniczną, jako parametr może być nazwa niekanoniczna, kanoniczna, czy identyfikator przestrzeni nazw. Dowolną nazwę kanoniczną, czy nie, można zamienić na niekanoniczną, niezależnie w jakiej formie podamy przestrzeń nazw, może być to przekształcenie tożsamościowe, może być to w postaci identyfikatora tej przestrzeni, niezależnie jaką ją mamy na myśli, więc: <syntaxhighlight lang="lua"> local nazwy_modul = require("Module:Nazwy"); -- Uzyskujemy wartość: "Szablon": local nazwa_niekanoniczna = nazwy_modul.Np{ nazwa = "Template", }; </syntaxhighlight> * Wystarczy wtedy użyć tylko jednego parametru, nie trzeba używać większej liczby innych parametrów. ====== Nazwy przedmiotowe i dyskusji oraz przejścia pomiędzy nimi ====== Można też przechodzić z tej samej przestrzeni nazw w nią samą, lub do niego skojarzoną, tzn. z przedmiotowej do dyskusji lub odwrotnie, przykłady poniżej. Do tego celu używamy parametru {{Code|przedmiotowa}}, czyli do tłumaczenia nazwy przestrzeni nazw na jej wersję przedmiotową, tzn. na przestrzeń nazw o identyfikatorze parzystym. Można też użyć parametru {{Code|dyskusja}}, robiąca tłumaczenia na wersje dyskusji, o identyfikatorze nazwy przestrzeni nazw nieparzystym. Nie wolno używać tych parametrów, tych dwóch w jednym wywołaniu, bo może dojść do błędu funkcji w postaci komunikatu {{Code|(błąd)}}. Tłumaczona nazwa może być zarówno niekanoniczna, jak i kanoniczna, lub być zawarta w postaci identyfikatora przestrzeni nazw. Tutaj bez użycia żadnego parametru dodatkowego, wtedy otrzymujemy na wyjściu nazwę niekanoniczną. <syntaxhighlight lang="lua"> local nazwy_modul = require("Module:Nazwy"); -- Gdy nazwą przestrzeni jest nazwa niekanoniczna: ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_przedmotowej_1 = nazwy_modul.Np{ nazwa = "Dyskusja szablonu", przedmiotowa = "tak", }; ---- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_dyskusji_1 = nazwy_modul.Np{ nazwa = "Szablon", dyskusja = "tak", }; -- Gdy nazwą przestrzeni jest nazwa kanoniczna: ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_przedmotowej_2 = nazwy_modul.Np{ nazwa = "Template talk", przedmiotowa = "tak", }; ---- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_dyskusji_2 = nazwy_modul.Np{ nazwa = "Template", dyskusja = "tak", }; -- Gdy prrzestrzeń nazw jest w postaci numeru id: ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_przedmotowej_3 = nazwy_modul.Np{ nazwa = 11, przedmiotowa = "tak", }; ---- Zwraca wartość: szablon "Dyskusja szablonu": local nazwa_przestrzeni_dyskusji_3 = nazwy_modul.Np{ nazwa = 10, dyskusja = "tak", }; </syntaxhighlight> Gdy użyjemy dodatkowo parametr {{Code|kanoniczna}}, zamieniający dowolne przestrzenie nazw, niezależnie, czy jest zapisana w postaci identyfikatora, czy nie, gdy nazwą przestrzeni jest nazwa niekanoniczna (lub kanoniczna), to uzyskana nazwa przedmiotowa, czy dyskusji, jest nazwą kanoniczną, jako w wyniku: <syntaxhighlight lang="lua"> local nazwy_modul = require("Module:Nazwy"); -- Gdy nazwą przestrzeni jest nazwa niekanoniczna: ---- Zwraca wartość: "Template": local nazwa_przestrzeni_przedmotowej_1 = nazwy_modul.Np{ nazwa = "Dyskusja szablonu", przedmiotowa = "tak", kanoniczna = "tak", }; ---- Zwraca wartość: "Template talk": local nazwa_przestrzeni_dyskusji_1 = nazwy_modul.Np{ nazwa = "Szablon", dyskusja = "tak", kanoniczna = "tak", }; -- Gdy nazwą przestrzeni jest nazwa kanoniczna: ---- Zwraca wartość: "Template": local nazwa_przestrzeni_przedmotowej_2 = nazwy_modul.Np{ nazwa = "Template talk", przedmiotowa = "tak", kanoniczna = "tak", }; ---- Zwraca wartość: "Template talk": local nazwa_przestrzeni_dyskusji_2 = nazwy_modul.Np{ nazwa = "Template", dyskusja = "tak", kanoniczna = "tak", }; -- Gdy przestrzeń nazw jest w postaci numeru id: ---- Zwraca wartość: "Template": local nazwa_przestrzeni_przedmotowej_3 = nazwy_modul.Np{ nazwa = 11, przedmiotowa = "tak", kanoniczna = "tak", }; ---- Zwraca wartość: "Template talk": local nazwa_przestrzeni_dyskusji_3 = nazwy_modul.Np{ nazwa = 10, dyskusja = "tak", kanoniczna = "tak", }; </syntaxhighlight> Przejście z tej samej przestrzeni na tą samą możemy uzyskać, gdy nazwę przedmiotową tłumaczymy na przedmiotową, dyskusji na dyskusji, wtedy tłumaczenie z przestrzeni do przestrzeni jest tożsamościowe, niezależnie w jakiej formie podamy nazwę przestrzeni nazw jako parametr, tłumaczymy nazwę polską na tą samą nazwę też polską, o tej samej wartości lub jej odpowiednik angielski w wersji kanonicznej na jej wersję niekanoniczną, czy z numeru identyfikatorana jej odpowiednik nazwowy, ale nadal takie przejście jest tożsamosciowe, bo chodzi o tą samą przestrzeń nazw, mimo że użyliśmy tych parametrów: <syntaxhighlight lang="lua"> local nazwy_modul = require("Module:Nazwy"); -- Gdy nazwą przestrzeni jest nazwa niekanoniczna: ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_przedmotowej_1 = nazwy_modul.Np{ nazwa = "Szablon", przedmiotowa = "tak", }; ---- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_dyskusji_1 = nazwy_modul.Np{ nazwa = "Dyskusja szablonu", dyskusja = "tak",}; -- Gdy nazwą przestrzeni jest nazwa kanoniczna: ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_przedmotowej_2 = nazwy_modul.Np{ nazwa = "Template", przedmiotowa = "tak", }; ---- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_dyskusji_2 = nazwy_modul.Np{ nazwa = "Template talk", dyskusja = "tak",}; -- Gdy przestrzeń nazw jest w postaci numeru id: ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_przedmotowej_3 = nazwy_modul.Np{ nazwa = 10, przedmiotowa = "tak", }; ---- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_dyskusji_3 = nazwy_modul.Np{ nazwa = 11, dyskusja = "tak",}; </syntaxhighlight> Gdy użyjemy dodatkowo parametr {{Code|kanoniczna}}, to uzyskana nazwa przedmiotowa, czy dyskusji, wtedy mamy tłumaczenie tozsamościowe, jeśli chodzi o przestrzeń nazw, co one oznaczają, jeśli ona jest niekanoniczna, to uzyskamy jej nazwę, ale po angielsku, a jeśli jednak jest kanoniczna, to otrzymamy ten sam wynik: <syntaxhighlight lang="lua"> local nazwy_modul = require("Module:Nazwy"); -- Gdy nazwą przestrzeni jest nazwa niekanoniczna: ---- Zwraca wartość: "Template": local nazwa_przestrzeni_przedmotowej_1 = nazwy_modul.Np{ nazwa = "Szablon", przedmiotowa = "tak", kanoniczna = "tak", }; ---- Zwraca wartość: "Template talk": local nazwa_przestrzeni_dyskusji_1 = nazwy_modul.Np{ nazwa = "Dyskusja szablonu", dyskusja = "tak", kanoniczna = "tak", }; -- Gdy nazwą przestrzeni jest nazwa kanoniczna: ---- Zwraca wartość: Template": local nazwa_przestrzeni_przedmotowej_2 = nazwy_modul.Np{ nazwa = "Template", przedmiotowa = "tak", kanoniczna = "tak", }; ---- Zwraca wartość: "Template talk": local nazwa_przestrzeni_dyskusji_2 = nazwy_modul.Np{ nazwa = "Template talk", dyskusja = "tak", kanoniczna = "tak", }; -- Gdy przestrzeń nazw jest w postaci numeru id: ---- Zwraca wartość: ""Template": local nazwa_przestrzeni_przedmotowej_3 = nazwy_modul.Np{ nazwa = 10, przedmiotowa = "tak", kanoniczna = "tak", }; ---- Zwraca wartość: "Template talk": local nazwa_przestrzeni_dyskusji_3 = nazwy_modul.Np{ nazwa = 11, dyskusja = "tak", kanoniczna = "tak", }; </syntaxhighlight> ====== Nazwy przestrzeni z myślnikami dolnymi ====== Gdy używamy przestrzeni nazw, czy to w postaci kanonicznej, czy niekanonicznej, ze spacjami, to spacje są w nim zamieniane na dolne myślniki. Jeżeli parametr zawiera spacje lub dolne myślniki na końcach nazwy, to ona jest trimowana, wewnątrz, wtedy powtórzone spacje, lub myślniki dolne, są zamieniane na jeden dolny myślnik, jeżeli zamieniamy nazwę niekanoniczną na niekanoniczną, kanoniczną na kanoniczną. Gdy tak nie jest, tzn. gdy zamieniamy kanoniczną na niekanoniczną, niekanoniczną na kanoniczną, to wtedy jest podobnie. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Dyskusja_szablonu": local nazwa_przestrzeni_1 = nazwy_modul.Np{ nazwa = "Dyskusja szablonu", ["z myślnikami dolnymi"] = "tak", }; ---- Zwraca wartość: "Dyskusja_szablonu": local nazwa_przestrzeni_2 = nazwy_modul.Np{ nazwa = "Template talk", ["z myślnikami dolnymi"] = "tak", }; ---- Zwraca wartość: "Template_talk";: local nazwa_przestrzeni_3 = nazwy_modul.Np{ nazwa = "Dyskusja szablonu", kanoniczna = "tak", ["z myślnikami dolnymi"] = "tak", }; ---- Zwraca wartość: "Template_talk": local nazwa_przestrzeni_4 = nazwy_modul.Np{ nazwa = "Template talk", kanoniczna = "tak", ["z myślnikami dolnymi"] = "tak", }; </syntaxhighlight> ====== Nazwy wyświetlane przestrzeni nazw ====== Gdy nazwą przestrzeni nazw jest nazwa o charakterze niepustym, to przy parametrze {{Code|wyświetlana {{=}} "tak"}}, jest zamieniana ona na tą samą nazwę, gdy ona jest pusta, to jest zamieniana na szereg: {{Code|(główna)}} bez parametru {{Code|kanoniczna}}, a z tym parametrem na {{Code|(main)}}. Przykłady jak jest, jest powiedziane: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_1 = nazwy_modul.Np{ nazwa = "Szablon", wyświetlana = "", }; ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_2 = nazwy_modul.Np{ nazwa = "Szablon", wyświetlana = "tak", }; ---- Zwraca wartość: "": local nazwa_przestrzeni_3 = nazwy_modul.Np{ nazwa = "", wyświetlana = "", }; ---- Zwraca wartość: "(główna)": local nazwa_przestrzeni_4 = nazwy_modul.Np{ nazwa = "", wyświetlana = "tak", }; ---- Zwraca wartość: "(main)": local nazwa_przestrzeni_5 = nazwy_modul.Np{ nazwa = "", kanoniczna = "tak", wyświetlana = " tak", }; </syntaxhighlight> Na podstawie ramki powyżej w przestrzeniach nazw wyświetlanych dowiadujemy się, że jedyna różnica, w nazwach wyświetlanych lub nie, jest dla przestrzeni głównej, czyli dla przestrzeni nazw, której nazwa przestrzeni jest ciągiem pustym. ====== Wersja funkcji z wyświetlaną nazwą przestrzeni nazw z linkiem opisującej tą przestrzeń ====== Nazwę przestrzeni nazw zamieniamy na link z opisem, co robi dana przestrzeń nazw, z nazwą wyświetlaną niekanoniczną, bez parametru {{Code|kanoniczna}}, lub z tym,wtedy nazwę wyświetlaną jest kanoniczna. Gdy przestrzeń nazw jest główna, to wtedy nazwą linku jest {{Code|(główna)}} ({{Code|(main)}} z parametrem {{Code|kanoniczna}}). <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local nazwa_przestrzeni_nazw_1 = nazwy_modul.Np{ nazwa = "Szablon", link = "tak", }; local nazwa_przestrzeni_nazw_2 = nazwy_modul.Np{ nazwa = "Szablon", link = "tak", kanoniczna = "tak", }; local nazwa_przestrzeni_nazw_3 = nazwy_modul.Np{ nazwa = "", link = "tak", }; local nazwa_przestrzeni_nazw_4 = nazwy_modul.Np{ nazwa = "", link = "tak", kanoniczna = "tak", }; </syntaxhighlight> Przykłady funkcji w wyniku są w przykładach szablonowych: # {{Code|{{s|Np|nazwa{{=}}Szablon|link{{=}}tak}}}} → {{Tt|{{Np|nazwa=Szablon|link=tak}}}} # {{Code|{{s|Np|nazwa{{=}}Szablon|link{{=}}tak|kanoniczna{{=}}tak}}}} → {{Tt|{{Np|nazwa=Szablon|link=tak|kanoniczna=tak}}}} # {{Code|{{s|Np|nazwa{{=}}|link{{=}}tak}}}} → {{Tt|{{Np|nazwa=|link=tak}}}} # {{Code|{{s|Np|nazwa{{=}}|link{{=}}tak|kanoniczna{{=}}tak}}}} → {{Tt|{{Np|nazwa=|link=tak|kanoniczna=tak}}}} ====== Uzyskiwanie numeru {{Code|id}} danej przestrzeni nazw ====== Gdy chcemy uzyskać numer identyfikatora przestrzeni nazw, czy to z użyciem parametru {{Code|kanoniczna}}, czy nie, wtedy ten parametr jest w tym przypadku ignorowany, przy parametrze {{Code|id {{=}} "tak"}} na jej odpowiednik w postaci numeru, który charakteryzuje przestrzenie przedmiotowe i dyskusji, inna jest dla tych dwóch typów przestrzeni. Dla przestrzeni przedmiotowej {{Code|id}} jest parzyste, a dla dyskusji nieparzyste. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Uzyskany numer id nazwy przestrzeni nazw jest 10: local id_1 = nazwy_modul.Np{ nazwa = "Szablon", id = "tak", }; ---- Uzyskany numer id nazwy przestrzeni nazw jest 10: local id_2 = nazwy_modul.Np{ nazwa = "Szablon", kanoniczna = "tak", id = "tak", }; ---- Uzyskany numer id nazwy przestrzeni nazw jest 11: local id_3 = nazwy_modul.Np{ nazwa = "Dyskusja szablonu", id = "tak", }; ---- Uzyskany numer id nazwy przestrzeni nazw jest 11: local id_4 = nazwy_modul.Np{ nazwa = "Dyskusja szablonu", kanoniczna = "tak", id = "tak", }; </syntaxhighlight> ====== Uzyskiwanie nazwy projektu nazwy przedmiotowej i jej dyskusji, z kanonicznej lub nie, przestrzeni nazw ====== Gdy używamy przestrzeni nazw {{Np|Wikibooks|link=tak}} lub {{Np|Wikibooks|link=tak|dyskusja=tak}}, to je można tłumaczyć na je wersje czysto kanoniczne, tzn.: {{Np|Wikibooks|link=tak}} tłumaczymy na {{Np|Wikibooks|link=tak|nazwij projektem=tak}}, a {{Np|Wikibooks|link=tak|dyskusja=tak}} na {{Np|Wikibooks|link=tak|dyskusja=tak|nazwij dyskusją projektu=tak}}, gdy translacja jest na nazwę polską niekanoniczną, a gdy użyjemy parametru {{Code|kanoniczna}}, wtedy sytuacja jest inna: {{Np|Wikibooks|link=tak|kanoniczna=tak}} tłumaczymy na {{Np|Wikibooks|link=tak|nazwij projektem=tak|kanoniczna=tak}}, a {{Np|Wikibooks|link=tak|dyskusja=tak|kanoniczna=tak}} na {{Np|Wikibooks|link=tak|dyskusja=tak|nazwij dyskusją projektu=tak|kanoniczna=tak}}. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Projekt": local nazwa_przestrzeni_nazw_1 = nazwy_modul.Np{ nazwa = "Wikibooks", ["nazwij projektem"] = "tak", }; ---- Zwraca wartość: "Project": local nazwa_przestrzeni_nazw_2 = nazwy_modul.Np{ nazwa = "Wikibooks", ["nazwij projektem"] = "tak", kanoniczna = "tak", }; ---- Zwraca wartość: "Dyskusja projektu": local nazwa_przestrzeni_nazw_3 = nazwy_modul.Np{ nazwa = "Wikibooks", ["nazwij dyskusją projektu"] = "tak", dyskusja = "tak", }; ---- Zwraca wartość: "Project talk": local nazwa_przestrzeni_nazw_4 = nazwy_modul.Np{ nazwa = "Wikibooks", ["nazwij dyskusją projektu"] = "tak", kanoniczna = "tak", }; </syntaxhighlight> ====== Sprawdzanie, czy dana przestrzeń jest poprawnie podane, czy istnieje ====== Gdy używamy przestrzeni nieistniejącej bez parametru {{Code|istnieje {{=}} "tak" }}, wtedy na wyjściu otrzymamy to samo, tylko w wersji sformatowanej, a gdy użyjemy, wtedy pojawia tam się napis {{Code|(błąd)}}. Gdy parametrem jest znana funkcji przestrzeń nazw, to nie uzyskujemy błędu, tylko przepisaną sformatowaną nazwę. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_nazw_1 = nazwy_modul.Np{ nazwa = "Szablon", istnieje = "tak", }; ---- Zwraca wartość: "Moja przestrzeń": local nazwa_przestrzeni_nazw_2 = nazwy_modul.Np{ nazwa = "Moja przestrzeń", istnieje = "", }; ---- Zwraca wartość: "(błąd)": local nazwa_przestrzeni_nazw_3 = nazwy_modul.Np{ nazwa = "Moja przestrzeń", istnieje = "tak", }; </syntaxhighlight> ====== Łatwe sprawdzanie istnienia danej przestrzeni nazw ====== Gdy oprócz parametru {{Code|istnieje {{=}} "tak"}}, użyjemy {{Code|["wynik błędu nietekstowy"] {{=}} "tak"}}, wtedy dla nieznanej przestrzeni uzyskujemy wartość w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, czyli: {{Code|nil}}, a w wikikodzie natomiast uzyskujemy wartość pustą, co pomaga w sprawdzeniu, czy dana przestrzeń istnieje, ale dodatkowo trzeba użyć parametru {{Code|["wyświetlana"] {{=}} "tak"}}, by nie pomylić parametru błędu z przestrzenią główną, wtedy ta przestrzeń ma nazwę niepustą przy tych parametrach, bo wtedy mamy nazwę niekanoniczną {{Code|(główna)}}, kanoniczną, przy specjalnym parametrze, czyli: {{Code|(main)}}, wtedy możemy użyć parsera {{Code|{{s|#if:coś|wtedy|przeciwnie}}}}. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_nazw_1 = nazwy_modul.Np{ nazwa = "Szablon", istnieje = "tak", ["wynik błędu nietekstowy"] = "tak", }; ---- Zwraca wartość: "Moja przestrzeń": local nazwa_przestrzeni_nazw_2 = nazwy_modul.Np{ nazwa = "Moja przestrzeń", istnieje = "", ["wynik błędu nietekstowy"] = "tak", }; ---- Zwraca wartość: nil: local nazwa_przestrzeni_nazw_3 = nazwy_modul.Np{ nazwa = "Moja przestrzeń", istnieje = "tak", ["wynik błędu nietekstowy"] = "tak", }; </syntaxhighlight> ====== Uzyskiwanie uchwytu danej przestrzeni nazw analogicznie do funkcji {{LzLua|mw.site.namespaces}} ====== Uchwyt niskopoziomowy do danej przestrzeni nazw można uzyskać przy pomocy kodu, uzyskujemy dla tej tablicy przestrzennej, która jest połączona z metatabelką, dzięki której możemy podawać przestrzenie nazw w wersji niezależnie jakimi literami, z dowolną kliczbą odstępów, nawet zapisana dolnymi myślnikami: <syntaxhighlight lang="lua"> local uchwyt_1 = mw.site.namespaces["Szablon"]; local uchwyt_2 = mw.site.namespaces["Template"]; local uchwyt_3 = mw.site.namespaces[10]; </syntaxhighlight> Funkcja powyżej ignoruje wielkość liter w przestrzeni nazw oraz powtórzone odstępy zrealizowane za pomocą spacji lub dolnych myślników. To samo, ale wysokopoziomowe, można utworzyć przy pomocy parametru: {{Code|uchwyt}}, wtedy szablon z rzuci odwołanie do tej tabeli, ale nie zawsze tak jest, czasami, gdy jakieś przestrzenie nie istnieją na polskim {{NS|w=tak|l=tak|pk=mj}}, wtedy odwołujemy się do jej wersji pseudo tej tabeli: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local uchwyt_1 = nazwy_modul.Np{ nazwa = "Szablon", uchwyt = "tak", }; local uchwyt_2 = nazwy_modul.Np{ nazwa = "Template", uchwyt = "tak", }; local uchwyt_3 = nazwy_modul.Np{ nazwa = 10, uchwyt = "tak", }; </syntaxhighlight> Funkcja {{Code|nazwy_modul.Np}} jest bardziej ogólniejsza niż {{LzLua|mw.site.namespaces}}, ponieważ uwzględnia większą liczbę nazw przestrzeni nazw, bo ona uwzględnia nieznane przestrzenie i znane o nieznanych nazwach, i dlatego należy stosować tę funkcję, a nie dedykowaną tabelę z połączoną z metatabelką za pomocą funkcji {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. === {{Code|m.NpDane}} === ==== Odpowiednik szablonowy ==== Odpowiednik szablonowy jest pod nazwą {{s|NpDane}}. Jego parametry są podobne do jego wersji bibliotecznej. Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce. * Szablon {{s|NpDane}} korzysta z funkcji bibliotecznej {{m|Nazwy|NpDane}}, więc parametry obu są wręcz takie same, a nawet podobne. Chociaż ta sama nazwa funkcji w ramce i kodzie {{lpg|Lua}}, to używanie ich nie jest dokładnie takie samo, funkcja biblioteczna nie potrzebuje parametru {{Parametr|wyspecjalizowana|tak}}, a ramka już tak, a szablon {{s|NpDane}}, który korzysta z tej ramki, to nieobecność, lub obecność z wartością pustą, tego parametru powoduje, że przyjmowane są parametry rodzica, a nie dziecka, które wymagają jego niepustość. ==== Funkcja biblioteczna ==== Szablon służy przede wszystkim do tłumaczenia angielskich nazw przestrzeni nazw na ich wersję w jakimś języku i operacji odwrotnej, a także numer przestrzeni nazw na jej nazwę w nim angielską lub w jakimś języku, lub odwrotnie, umożliwia też na przetłumaczenie nazwy przestrzeni nazw lub identyfikatora przestrzeni na jej nazwę polską, jeżeli istnieje. Funkcja {{m|Nazwy|NpDane}} przyjmuje te same parametry, co {{m|Nazwy|Np}}, oprócz wywołania ramkowego: {{Code|uchwyt}} (która w tej funkcji w sposób inny jest zdefiniowana, nie jak w funkcji: {{m|Nazwy|Np}}), jak oba, którego tutaj w nim nie ma, a jako zwykła funkcja biblioteczna może przyjmować ten parametr. Te zmienne działają podobnie w obu procedurach, z tą różnicą, że mamy inny zestaw nazw przestrzeni nazw (czasami bez numerów {{Code|id}} - identyfikatorów tych obsługiwanych przestrzeni nazw, a te podstawowe one je mają, jeżeli da się je powiązać z pierwszą funkcją w drugiej, jedynie w takim przypadku one występują) i można też użyć parametrów dodatkowych, które są niedostępne w pierwszej funkcji, a w drugiej już tak. Dodatkowo on przyjmuje argumenty: {{OpisParametrów | 1 = Adres kodowy projektu siostrzanego lub lokalnego polskiego {{Code|Wikibooks}}:|nagłówek1=tak | 2 = {{Code|klucz projektu}} | _2 = Kody języka i projektu podana w jednej zmiennej oddzielone od siebie dwukropkami, może być dowolna liczba tych kodów. | 3 = {{Code|kod projektu}} | _3 = Kod projektu danego wiki. | 4 = {{Code|kod języka}} | _4 = kod języka danego wiki. | 5 = {{Code|po polsku}} |_5 = Tłumaczy nazwę kanoniczną danej przestrzeni nazw na jej wersję polską, tzn. na język polski, a jeżeli jej wersja polska nie istnieje, to pisze jej wersję w języku angielskim, czyli w postaci nazwy kanonicznej. | 6 = {{Code|awaryjnie}} | _6 = Za pomocą projektu {{NS|l=tak|k=d}} tłumaczy daną nazwę przestrzeni nazw w jednym języku (jej nazwę kanoniczną jakieś przestrzeni nazw) na drugi, gdy wartość jest pusta, to tłumaczy na jej nazwę kanoniczną, jeżeli, przy tym parametrze lub bez, jej wersja w innym danym języku nie istnieje zdefiniowana w module {{m|Nazwy/przestrzenie}}. | 7 = Parametry: {{Code|nazwij projektem}} i {{Code|nazwij dyskusją projektu}} używa się tak samo jak dla funkcji {{m|Nazwy|Np}}, tylko z różnicą, że w funkcji {{m|Nazwy|NpDane}} musimy skorzystać koniecznie z parametru {{Code|kanoniczna}} z wartością niepustą, a wtedy wydrukowane wartości są w postaci wersji kanonicznej w języku angielskim, tak jak z ostatnim szablonem.|nagłówek7=tak }} ===== Używanie kluczy projektu, kodów projektu i kodów języka ===== Kody nazw piszemy, jak zwykle, z małej litery, co jest zalecane, ale można je pisać z liter o dowolnej wielkości. ====== Użycie różnych kodów i ich równoważność ====== Kody projektu i języka możemy pisać ze względu na dwa sposoby, w zależności jakich zmiennych używamy, możemy pisać tzw. grupę tych kodów w jednej zmiennej, wtedy się liczy ostateczny adres do danego projektu w jakieś wersji językowej, tylko jeden, a nie n-wersji danego języka i m-wersji danego projektu, czyli: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local wynik = nazwy_modul.NpDane{ ..., ["klucz projektu"] = "en:de:w:ru:en:q:pt", ... }; </syntaxhighlight> * Najważniejsze są kody projektu końcowe, podobnie ma się sprawa z kodami języków, tutaj kodami projektów są: {{Code|w}} ({{NS|l=tak|k=w}}) i {{Code|q}} ({{NS|l=tak|k=q}}), a kodami języków są: {{Code|en}} ({{lpg|{{#invoke:lang|hasło|en}}}}), {{Code|de}} ({{lpg|{{#invoke:lang|hasło|de}}}}), {{Code|ru}} ({{lpg|{{#invoke:lang|hasło|ru}}}}), {{Code|en}} ({{lpg|{{#invoke:lang|hasło|en}}}}) i {{Code|pt}} ({{lpg|{{#invoke:lang|hasło|pt}}}}), czy końcowy kod projektu jest: {{Code|q}} ({{NS|l=tak|k=q}}) i kod języka {{Code|pt}} ({{lpg|{{#invoke:lang|hasło|pt}}}}). W powyższym przykładzie napisaliśmy mnóstwo kodów w postaci jednej zmiennej, to jest równoważne zapisowi, czyli ostatecznej wersji wspomnianej powyższego zapisu, też zapisaną za pomocą tej samej zmiennej: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local wynik_1 = nazwy_modul.NpDane{ ..., ["klucz projektu"] = "pt:q", ... }; local wynik_2 = nazwy_modul.NpDane{ ..., ["klucz projektu"] = "q:pt", ... }; </syntaxhighlight> Powyższy wynik rozpisujemy na dwie zmienne, w których podajemy tylko pojedyncze kody, a nie grupy, więc widziemy, ża zamiast podawania jednego parametru z interwiki, to możemy to rozbić na dwa parametry kodu projektu i języka, a nie używać to w jednej zmiennej, należy pamiętać, że w tych kodach, może być jedno interwiki, specjalnie dla projektu lub języka, do którego dana zmienna jest przystosowana: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local wynik = nazwy_modul.NpDane{ ..., ["kod projektu"] = "q", ["kod języka"] = "pt", ... }; </syntaxhighlight> ====== Nazwy wyświetlane przy użyciu tych kodów dla przestrzeni głównej ====== Nazwy bez użycia zmiennej powodujące wyświetlanie nazwy przestrzeni nazw '''głównej''' na różnych projektach w postaci nieprzetłumaczonej na język polski, wtedy uzyskujemy niezależnie od projektu wartość pustą, bo takie jest przedstawienie wartości niewyświetlanej przestrzeni głównej na każdym projekcie obsługujący przestrzenie nazw, czyli: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość równą ciągowi pustemu: "": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "", ["klucz projektu"] = "commons", }; ---- Zwraca wartość równą ciągowi pustemu: "": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "", ["kod projektu"] = "commons", }; </syntaxhighlight> A przy użyciu identyfikatora przestrzeni nazw przestrzeni głównej, wtedy uzyskujemy na wyjściu to samo, co powyżej, czyli wartość pustą, bo wartość {{Code|0}} jest odpowiednikiem przestrzeni głównej, czyli poniższe przykłady są odpowiedniami tych powyższych, czyli te dwa przykład, tak można powiedzieć, że to samo robią: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość równą ciągowi pustemu: "": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = 0, ["klucz projektu"] = "commons", }; ---- Zwraca wartość równą ciągowi pustemu: "": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = 0, ["kod projektu"] = "commons", }; </syntaxhighlight> 0 Przy użyciu zmiennej generującej wyświetlanie w postaci znaków o charakterze niepustej, wtedy jeżeli nie ma wartości kanonicznej dla danego języka projektu, to wyswietlana jest wartość {{Np|(main)|link=tak|kanoniczna=tak}}, a dla polskigo projektu {{Np|(main)|link=tak}}, a dla innych języków jest nazwa charakterystyczna dla danego języka pod warunkiem, jeżeli doda się tego obsługę, więc tego przykłady przy użyciu zmiennej {{Code|["wyświetlana"] {{=}} "tak"}}, więc: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość nazwy przestrzeni głównej: "(main)": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "", ["klucz projektu"] = "commons", ["wyświetlana"] = "tak", }; ---- Zwraca wartość nazwy przestrzeni głównej: "(main)": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "", ["kod projektu"] = "commons", ["wyświetlana"] = "tak", }; </syntaxhighlight> Przy użyciu identyfikatora przestrzeni nazw przestrzeni głównej, w takim przypadku uzyskujemy to samo co powyżej, tylko jest inaczej, oznaczana jest wtedy przestrzeń główna, dla tego samego projektu siostrzanego, w wersji charakterystycznej dla danego języka, tutaj dla angielskiego: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość nazwy przestrzeni głównej: "(main)": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = 0, ["klucz projektu"] = "commons", ["wyświetlana"] = "tak", }; ---- Zwraca wartość nazwy przestrzeni głównej: "(main)": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = 0, ["kod projektu"] = "commons", ["wyświetlana"] = "tak", }; </syntaxhighlight> ====== Nazwy wyświetlane przy użyciu tych kodów przetłumaczone je na język polski dla przestrzeni głównej ====== Z wyświetlaniem na ekranie przestrzeni nazw charakteryzujące się ciągiem niepustym mamy podobne wyniki, jak powyżej bez parametry {{Code|["wyświetlana"] {{=}} "tak"}}, tylko nazwa wyświetlana przestrzeni nazw jest po polsku (odpowiednia nazwa w języku polskim), a nie po angielsku (w języku danego projektu): Przy użyciu zmiennej generującej wyświetlanie w postaci znaków o charakterze niepustej, nazw przestrzeni nazw mający nazwy puste, ale zamienione na nazwy wyświetlane, ale w postaci języka polskiego, używając parametru {{Code|["po polsku"] {{=}} "tak"}}: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość nazwy przestrzeni głównej: "(główna)": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "", ["klucz projektu"] = "commons", ["wyświetlana"] = "tak", ["po polsku"] = "tak", }; ---- Zwraca wartość nazwy przestrzeni głównej: "(główna)": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "", ["kod projektu"] = "commons", ["wyświetlana"] = "tak", ["po polsku"] = "tak", }; </syntaxhighlight> Przy użyciu identyfikatora przestrzeni nazw głównej, czyli dla tej samej przestrzeni nazw, co powyżej, tylko ona jest inaczej oznaczana, to możemy zrobić to samo, co powyżej, tylko nazwa główna przestrzeni nazw jest inaczej zapisana, w postaci numerycznej, wtedy otrzymamy wynik taki sam, jak w powyższym przykładzie, bo w obu używaliśmy takiej samej przestrzeni, tylko różnie przepisaną: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość nazwy przestrzeni głównej: "(główna)": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = 0, ["klucz projektu"] = "commons", ["wyświetlana"] = "tak", ["po polsku"] = "tak", }; ---- Zwraca wartość nazwy przestrzeni głównej: "(główna)": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = 0, ["kod projektu"] = "commons", ["wyświetlana"] = "tak", ["po polsku"] = "tak", }; </syntaxhighlight> ====== Nazwy wyświetlane przy użyciu tych kodów dla przestrzeni innej niż główna ====== Nazwy bez użycia zmiennej powodujące wyświetlanie nazwy przestrzeni nazw '''niegłównej''' na różnych projektach w postaci nieprzetłumaczonej na język polski, tylko w wersji charakterystucznej dla języka danego projektu używaną w odwołaniu: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość równą ciągowi niepustemu: "Template": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "Template", ["klucz projektu"] = "commons", }; ---- Zwraca wartość równą ciągowi niepustemu: "Template": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "Template", ["kod projektu"] = "commons", }; </syntaxhighlight> A przy zamianie tej przestrzeni nazw w powyższym przykładzie na numer - identyfikator nazw, czyli {{Code|id}}, to identyfikator przestrzeni nazw, innej niż główna, z jej wersji nazwowej, otrzymamy wynik w postaci nazwy niepustej, bo to nie jest przestrzeń główna, oznaczana zerowy tym identyfikatorem, czyli w postaci tej liczby: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość równą ciągowi niepustemu: "Template": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = 10, ["klucz projektu"] = "commons", }; ---- Zwraca wartość równą ciągowi niepustemu: "Template": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = 10, ["kod projektu"] = "commons", }; </syntaxhighlight> Przy użyciu zmiennej generującej wyświetlanie w postaci znaków, o charakterze niepustości, przy użyciu tego parametru, otrzymujemy wynik, jak powyżej, bo nazwa wyświetlana przestrzeni jest od razu niepusta, bo przestrzeni nazw mają wartość niepustą, więc nie trzeba ich uznawać, że są inne: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość równą nazwie przestrzeni niegłównej: "Template": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "Template", ["klucz projektu"] = "commons", ["wyświetlana"] = "tak", }; ---- Zwraca wartość równą nazwie przestrzeni niegłównej: "Template": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "Template", ["kod projektu"] = "commons", ["wyświetlana"] = "tak", }; </syntaxhighlight> A gdy parametr {{Code|nazwa}} przyjmuje wartość liczbową w postaci identyfikatora {{Code|id}}, innej niż dla przestrzeni głównej, ale zapisaną dla tych samych przestrzeni nazw, jak powyżej, co czyni, że tutaj jest też podobnie, otzrymamy te same wartości, tylko jest inna reprezentacja parametrów wchodzących do funkcji, jak powyżej: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość równą nazwie przestrzeni niegłównej: "Template": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = 10, ["klucz projektu"] = "commons", ["wyświetlana"] = "tak", }; ---- Zwraca wartość równą nazwie przestrzeni niegłównej: "Template": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = 10, ["kod projektu"] = "commons", ["wyświetlana"] = "tak", }; </syntaxhighlight> Widzimy, jedynie dla przestrzeni niepustej, że użycie tego parametru, według przykładów powyżej, jest opcjonalne, a nawet zbędne, bo ten parametr w tym przypadku nic nie zmienia, zmienia tylko dla przestrzeni głównej, którego ciąg charakteryzujący tą przestrzeń jest pusty, a jej wersja wyświetlana posiada za to ciąg niepusty, o jej wersji kanonicznej {{Code|{{Np|(main)|link=tak|kanoniczna=tak}}}}, a w wersji polskiej {{Code|{{Np|(main)|link=tak}}}}, te nazwy można pomiędzy sobą tłumaczyć za pomocą funkcji {{m|Nazwy|NpDane}} lub szablonu {{s|NpDane}}. ====== Nazwy wyświetlane przy użyciu tych kodów przetłumaczone je na język polski dla przestrzeni innej niż główna ====== Z wyświetlaniem na ekranie przestrzeni nazw charakteryzujące ciągiem niepustym mamy podobne wyniki jak powyżej bez parametru {{Code|["wyświetlana"] {{=}} "tak"}}: Przy użyciu zmiennej generującej wyświetlanie w postaci znaków o charakterze niepustej przetłumaczonej na język polski, używając parametrów w postaci pewnych nazw niepusstych, dla projektów innych niż wq języku polskim, ale te przestrzenie nazw tłumaczymyna ich odpowiedniki polskie, jakie istnieją, na projektach właśnie, że polskich: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość równą nazwie przestrzeni niegłównej: "Szablon": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "Template", ["klucz projektu"] = "commons", ["po polsku"] = "tak", }; ---- Zwraca wartość równą nazwie przestrzeni niegłównej: "Szablon": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "Template", ["kod projektu"] = "commons", ["po polsku"] = "tak", }; </syntaxhighlight> Albo przy użyciu numeru {{Code|id}} (identyfikatora przestrzeni nazw), wtedy właśnie robimy to samo, co powyżej, tylko jest inna reprezentacja parametrów, ale ta sama przestrzeń, więc uzyskujemy te same wyniki, czyli o tej samej wartości, mimo, że wizulanie,a by inne parametry: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość równą nazwie przestrzeni niegłównej: "Szablon": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = 10, ["klucz projektu"] = "commons", ["po polsku"] = "tak", }; ---- Zwraca wartość równą nazwie przestrzeni niegłównej: "Szablon": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = 10, ["kod projektu"] = "commons", ["po polsku"] = "tak", }; </syntaxhighlight> Przy użyciu zmiennej generującej wyświetlanie, użzywając parametru wspoianego powyżej, w postaci znaków o charakterze niepustej przy użyciu tego parametru, co sugeruje, że ten argiment nic nie zmienia, ale jedynie wyświetla się to samo, co bez tego parametru: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość równą nazwie przestrzeni niegłównej: "Szablon": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "Template", ["klucz projektu"] = "commons", ["wyświetlana"] = "tak", ["po polsku"] = "tak", }; ---- Zwraca wartość równą nazwie przestrzeni niegłównej: "Szablon": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "Template", ["kod projektu"] = "commons", ["wyświetlana"] = "tak", ["po polsku"] = "tak", }; </syntaxhighlight> A tutaj przy użyciu identyfikatora przestrzeni nazw przestrzeni nazw niegłównej, czyli przestrzeni nazw charakteryzującej się jej wersją niewyświetlaną niepustą, z tymi samymi parametrami, co powyżej, z tymi samymi wartościami, tylko jest inna reprezentacja przestrzeni nazw: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość równą nazwie przestrzeni niegłównej: "Szablon": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = 10, ["klucz projektu"] = "commons", ["wyświetlana"] = "tak", ["po polsku"] = "tak", }; ---- Zwraca wartość równą nazwie przestrzeni niegłównej: "Szablon": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = 10, ["kod projektu"] = "commons", ["wyświetlana"] = "tak", ["po polsku"] = "tak", }; </syntaxhighlight> Widzimy, jedynie dla tej przestrzeni, że użycie wspomnianego tego parametru jest opcjonalne, bo nic w tym przypadki nie zmienia, bo przestrzeń nazw nie jest pusta, lub nie jest reprezentowana inaczej, niż przez liczbę {{Code|0}}. ===== Tłumaczenie nazw przestrzeni nazw z jednego języka na drugi ===== ====== Tłumaczenie nazw obcojęzycznych nazw przestrzeni nazw na jej wersję polską, tzn. jej język polski, i na język angielski, tzn. jej wersje angielską w postaci nazwy kanonicznej, albo identyfikator przestrzeni nazw lub operację przeciwną ====== Tłumaczenie na nazwę kanoniczną w języku angielskim, z nazwy polskiej, czy nazwy w innym języku, tutaj w języku polskim, w jakim ona jest jedynie dostępna, przy użyciu parametru {{Code|kanoniczna {{=}} "tak"}}: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Template": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "Szablon", ["klucz projektu"] = "pl:w", kanoniczna = "tak", }; ---- Zwraca wartość: "Template": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "Szablon", ["kod projektu"] = "w", ["kod języka"] = "pl", kanoniczna = "tak", }; </syntaxhighlight> Tłumaczenie identyfikatora przestrzeni nazw na nazwę kanoniczną, ale przestrzeni nazw są te same, co powyżej, tylko zamiast przestrzeni nazw: "Szablon", mamy to jej idenntyfiator, którym jest liczba: {{Code|10}}, wtedy otrzymamy te same wyniki, co powyżej: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Template": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = 10, ["klucz projektu"] = "pl:w", kanoniczna = "tak", }; ---- Zwraca wartość: "Template": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = 10, ["kod projektu"] = "w", ["kod języka"] = "pl", kanoniczna = "tak", }; </syntaxhighlight> Przypadek odwrotny, do poprzednich, dla tego samego projektu, gdy nie używamy tego parametru, ale przestrzenie nazw są tym razem po angielsku, jako nazwy kanoniczne, które są zamieniane na jej wersją charakterystyczną dla danego projektu, tutaj polską: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "Template", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "Template", ["kod projektu"] = "w", ["kod języka"] = "pl", }; </syntaxhighlight> Identyfikator przestrzeni nazw tłumaczymy na jego nazwę polską - ewentualnie, na wersję języka projektu, i dlatego tutaj używamy języka polskiego, ponieważ mamy do czynienia z projektem polskojęzycznym, bo kod języka projektu wskazuje tutaj na ten język: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = 10, ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = 10, ["kod projektu"] = "w", ["kod języka"] = "pl", }; </syntaxhighlight> ====== Tłumaczenie nazw przestrzeni na jej wersję w innych języku w jakikolwiek projekcie ====== Do tłumaczenia używamy parametru {{Code|awaryjnie}}, której użycie w funkcji {{m|Nazwy|NpDane}}, powoduje skorzystanie z bazy danym projektów {{Code|MediaWiki}}, czyli {{Code|{{NS|l=tak|w=tak|k=en:d|jw=tak}}}} (po angielsku), a inaczej {{Code|{{NS|l=tak|w=tak|k=d}}}} (po polsku): * Przy użyciu nazw przestrzeni nazw w postaci, nie identyfikatorów, nazwanej łańcuchem znaków,możemy daną przestrzeń przetłomaczyć na dany język, nie używając przy tym żadnych stron: {{Code|.json}}, w podstronach modułu {{Code|{{m|Nazwy/}}}}: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "Kategorie", ["klucz projektu"] = "de:w", awaryjnie = "tak", kanoniczna = "tak", }; local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "Category", ["klucz projektu"] = "de:w", awaryjnie = "tak", }; local nazwa_przestrzeni_nazw_3 = nazwy_modul.NpDane{ nazwa = "Категория", ["klucz projektu"] = "ru:w", awaryjnie = "tak", kanoniczna = "tak", }; local nazwa_przestrzeni_nazw_4 = nazwy_modul.NpDane{ nazwa = "Category", ["klucz projektu"] = "ru:w", awaryjnie = "tak", }; </syntaxhighlight> * Jako z ich wersją numeryczną, czyli w postaci identyfikatorów, nazwanej w postaci pewnego numeru, ale przestrzenie nazw są te same, co powyżej, tylko inaczej zapisane, a inne parametry są takie same, czyli z czterech przykładów generują się jedynie dwa, ale wyniki są te same: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = 14, ["klucz projektu"] = "de:w", awaryjnie = "tak", }; local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa 14, ["klucz projektu"] = "ru:w", awaryjnie = "tak", }; </syntaxhighlight> Przykłady tłumaczenia z jednej wersji językowej w danym języku na angielski (wersję kanoniczną) i odwrotnie # {{Code|{{s|NpDane|Kategorie|klucz projektu{{=}}de:w|awaryjnie{{=}}tak|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|Kategorie|klucz projektu=de:w|awaryjnie=tak|kanoniczna=tak}}}} # {{Code|{{s|NpDane|Category|klucz projektu{{=}}de:w|awaryjnie{{=}}tak}}}} → {{Tt|{{NpDane|Category|klucz projektu=de:w|awaryjnie=tak}}}} # {{Code|{{s|NpDane|Категория|klucz projektu{{=}}ru:w|awaryjnie{{=}}tak|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|Категория|klucz projektu=ru:w|awaryjnie=tak|kanoniczna=tak}}}} # {{Code|{{s|NpDane|Category|klucz projektu{{=}}ru:w|awaryjnie{{=}}tak}}}} → {{Tt|{{NpDane|Category|klucz projektu=ru:w|awaryjnie=tak}}}} Przykłady przy użyciu identyfikatorów: # {{Code|{{s|NpDane|14|klucz projektu{{=}}de:w|awaryjnie{{=}}tak}}}} → {{Tt|{{NpDane|Category|klucz projektu=de:w|awaryjnie=tak}}}} # {{Code|{{s|NpDane|14|klucz projektu{{=}}ru:w|awaryjnie{{=}}tak}}}} → {{Tt|{{NpDane|Category|klucz projektu=ru:w|awaryjnie=tak}}}} ===== Użycie parametru {{Code|link}} oraz zależność od projektu i języka, wyświetlanie nazw przestrzeni nazw po polsku ===== Przykłady poniżej i niektóre wywołania funkcji {{m|Nazwy|NpDane}} piszemy przy pomocy parametru {{Code|link}}, który posiłkujemy z {{Code|klucz projektu}}, przykładowo z pomożeniem użycia zmiennej {{Code|po polsku}}, ewentualnie z użyciem argumentu {{Code|kanoniczna}}, co powoduje wyświetlanie się linku do pewnej strony naa tym samym projekcie lub innym,a jeśli mamy nazwę kanoniczną, to otrzymamy w linku nazwę linku właśnie że wyświetlaną, np. w postaci: {{Np|(main)|link=tak}}: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "Szablon", link = "tak", ["klucz projektu"] = "pl:w", }; local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "Szablon", link = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; local nazwa_przestrzeni_nazw_3 = nazwy_modul.NpDane{ nazwa = "Template", link = "tak", ["klucz projektu"] = "en:w", ["po polsku"] = "tak", }; ---- Tutaj nazwa przestrzeni zostanie wyświetlona, jako nazwa linku, po angielsku, czyli w wersji kanonicznej local nazwa_przestrzeni_nazw_4 = nazwy_modul.NpDane{ nazwa = "Template", link = "tak", kanoniczna = "tak", ["klucz projektu"] = "en:w", ["po polsku"] = "tak", }; local nazwa_przestrzeni_nazw_5 = nazwy_modul.NpDane{ nazwa = "", link = "tak", ["klucz projektu"] = "en:w", }; local nazwa_przestrzeni_nazw_6 = nazwy_modul.NpDane{ nazwa = "", link = "tak", kanoniczna = "tak", ["klucz projektu"] = "en:w", }; local nazwa_przestrzeni_nazw_7 = nazwy_modul.NpDane{ nazwa = "", link = "tak", ["klucz projektu"] = "en:w", ["po polsku"] = "tak", }; ---- Tutaj nazwa przestrzeni zostanie wyświetlona, jako nazwa linku, po angielsku, czyli w wersji kanonicznej local nazwa_przestrzeni_nazw_8 = nazwy_modul.NpDane{ nazwa = "", link = "tak", kanoniczna = "tak", ["klucz projektu"] = "en:w", ["po polsku"] = "tak", }; </syntaxhighlight> Teraz będziemy, to robili przy użyciu identyfikatorów przestrzeni nazw, który będziemy tłumaczyć na jego wersję charakterystyczną dla danego projektu, nazwę kanoniczną lub na jego odpowiednik polski, ale mamy te same przykłady, co powyżej, bo te same przestrzenie nazw, tylko z tą różnicą, że ona jest inaczej zapisana, więc otrzymamy te same wyniki, więc: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = 10, link = "tak", ["klucz projektu"] = "pl:w", }; local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = 10, link = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; local nazwa_przestrzeni_nazw_3 = nazwy_modul.NpDane{ nazwa = 10, link = "tak", ["klucz projektu"] = "en:w", ["po polsku"] = "tak", }; ---- Tutaj nazwa przestrzeni zostanie wyświetlona, jako nazwa linku, po angielsku, czyli w wersji kanonicznej local nazwa_przestrzeni_nazw_4 = nazwy_modul.NpDane{ nazwa = 10, link = "tak", kanoniczna = "tak", ["klucz projektu"] = "en:w", ["po polsku"] = "tak", }; local nazwa_przestrzeni_nazw_5 = nazwy_modul.NpDane{ nazwa = 0, link = "tak", ["klucz projektu"] = "en:w", }; local nazwa_przestrzeni_nazw_6 = nazwy_modul.NpDane{ nazwa = 0, link = "tak", kanoniczna = "tak", ["klucz projektu"] = "en:w", }; local nazwa_przestrzeni_nazw_7 = nazwy_modul.NpDane{ nazwa = 0, link = "tak", ["klucz projektu"] = "en:w", ["po polsku"] = "tak", }; ---- Tutaj nazwa przestrzeni zostanie wyświetlona, jako nazwa linku, po angielsku, czyli w wersji kanonicznej local nazwa_przestrzeni_nazw_8 = nazwy_modul.NpDane{ nazwa = 0, link = "tak", kanoniczna = "tak", ["klucz projektu"] = "en:w", ["po polsku"] = "tak", }; </syntaxhighlight> ---- Przykłady funkcji w wyniku są: # {{Code|{{s|NpDane|nazwa{{=}}Szablon|link{{=}}tak|klucz projektu{{=}}pl:w}}}} → {{Tt|{{NpDane|nazwa=Szablon|link=tak|klucz projektu=pl:w}}}} # {{Code|{{s|NpDane|nazwa{{=}}Szablon|link{{=}}tak|klucz projektu{{=}}pl:w|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=Szablon|link=tak|klucz projektu=pl:w|kanoniczna=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}|link{{=}}tak|klucz projektu{{=}}pl:w}}}} → {{Tt|{{NpDane|nazwa=|link=tak|klucz projektu=pl:w}}}} # {{Code|{{s|NpDane|nazwa{{=}}|link{{=}}tak|klucz projektu{{=}}pl:w|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=|link=tak|klucz projektu=pl:w|kanoniczna=tak}}}} Gdy parametr {{Code|nazwa}} jest liczbą, odpowiedniki tych samych przykładów, co powyżej, tylko przestrzeń nazw jest w postaci numerycznej: # {{Code|{{s|NpDane|nazwa{{=}}10|link{{=}}tak|klucz projektu{{=}}pl:w}}}} → {{Tt|{{NpDane|nazwa=10|link=tak|klucz projektu=pl:w}}}} # {{Code|{{s|NpDane|nazwa{{=}}10|link{{=}}tak|klucz projektu{{=}}pl:w|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=10|link=tak|klucz projektu=pl:w|kanoniczna=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}0|link{{=}}tak|klucz projektu{{=}}pl:w}}}} → {{Tt|{{NpDane|nazwa=0|link=tak|klucz projektu=pl:w}}}} # {{Code|{{s|NpDane|nazwa{{=}}0|link{{=}}tak|klucz projektu{{=}}pl:w|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=0|link=tak|klucz projektu=pl:w|kanoniczna=tak}}}} ---- ---- Inne przykłady, projektu niepolskiego, ale mającej jego wersje polską: # {{Code|{{s|NpDane|nazwa{{=}}Template|link{{=}}tak|klucz projektu{{=}}en:w|po polsku{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=Template|link=tak|klucz projektu=en:w|po polsku=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}Template|link{{=}}tak|klucz projektu{{=}}en:w|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=Template|link=tak|klucz projektu=en:w|kanoniczna=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}|link{{=}}tak|klucz projektu{{=}}en:w|po polsku{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=|link=tak|klucz projektu=en:w|po polsku=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}|link{{=}}tak|klucz projektu{{=}}en:w|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=|link=tak|klucz projektu=pl:w|kanoniczna=tak}}}} Gdy parametr {{Code|nazwa}} jest liczbą, odpowiedniki przykładów powyższych z innym przedstawieniem przestrzeni nazw: # {{Code|{{s|NpDane|nazwa{{=}}10|link{{=}}tak|klucz projektu{{=}}en:w|po polsku{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=10|link=tak|klucz projektu=en:w|po polsku=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}10|link{{=}}tak|klucz projektu{{=}}en:w|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=10|link=tak|klucz projektu=en:w|kanoniczna=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}0|link{{=}}tak|klucz projektu{{=}}en:w|po polsku{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=0|link=tak|klucz projektu=en:w|po polsku=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}0|link{{=}}tak|klucz projektu{{=}}en:w|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=0|link=tak|klucz projektu=pl:w|kanoniczna=tak}}}} ---- ---- A dla projektu niemającej wersji polskiej, np. tylko wersję angielską: # {{Code|{{s|NpDane|nazwa{{=}}Template|link{{=}}tak|klucz projektu{{=}}commons|po polsku{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=Template|link=tak|klucz projektu=commons|po polsku=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}Template|link{{=}}tak|klucz projektu{{=}}commons|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=Template|link=tak|klucz projektu=commons|kanoniczna=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}|link{{=}}tak|klucz projektu{{=}}commons|po polsku{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=|link=tak|klucz projektu=commons|po polsku=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}|link{{=}}tak|klucz projektu{{=}}commons|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=|link=tak|klucz projektu=commons|kanoniczna=tak}}}} Gdy parametr {{Code|nazwa}} jest liczbą, wtedy mamy te same przykłady, co powyżej, tylko ta sama przestrzeń nazw jest w innej postaci przedstawiona: # {{Code|{{s|NpDane|nazwa{{=}}10|link{{=}}tak|klucz projektu{{=}}commons|po polsku{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=10|link=tak|klucz projektu=commons|po polsku=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}10|link{{=}}tak|klucz projektu{{=}}commons|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=10|link=tak|klucz projektu=commons|kanoniczna=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}0|link{{=}}tak|klucz projektu{{=}}commons|po polsku{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=0|link=tak|klucz projektu=commons|po polsku=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}0|link{{=}}tak|klucz projektu{{=}}commons|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=0|link=tak|klucz projektu=commons|kanoniczna=tak}}}} ===== Zamiana przestrzeni nazw przedmiotowej na dyskusji lub przeciwnie, i transformacje tożsame ===== * Używać tu będziemy dodatkowo parametrów: {{Code|przedmiotowa}} - zamiany przestrzeni nazw na przedmiotową, czy: {{Code|dyskusja}} - na dyskusji. Można też przechodzić z tej samej przestrzeni nazw w nią samą, lub do niego skojarzonej, tzn. z przedmiotowej do dyskusji lub odwrotnie, wtedy w tym przypadku otrzymujemy nazwę po polsku, dla poskich projektów, dla projektów w danym języku, na nazwę w danym języku, przykłady: <syntaxhighlight lang="lua"> local nazwy_modul = require("Module:Nazwy"); -- Gdy nazwą przestrzeni jest nazwa niekanoniczna: ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_przedmotowej_1 = nazwy_modul.NpDane{ nazwa = "Dyskusja szablonu", przedmiotowa = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_dyskusji_1 = nazwy_modul.NpDane{ nazwa = "Szablon", dyskusja = "tak", ["klucz projektu"] = "pl:w", }; -- Gdy nazwą przestrzeni jest nazwa kanoniczna ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_przedmotowej_2 = nazwy_modul.NpDane{ nazwa = "Template talk", przedmiotowa = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_dyskusji_2 = nazwy_modul.NpDane{ nazwa = "Template", dyskusja = "tak", ["klucz projektu"] = "pl:w", }; -- Gdy prrzestrzeń nazw jest w postaci jej numeru id ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_przedmotowej_3 = nazwy_modul.NpDane{ nazwa = 11, przedmiotowa = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_dyskusji_3 = nazwy_modul.NpDane{ nazwa = 10, dyskusja = "tak", ["klucz projektu"] = "pl:w", }; </syntaxhighlight> Gdy użyjemy dodatkowo parametr {{Code|kanoniczna}}, wtedy otrzymujemy te nazwy w postaci nazwy w języku angielskim (kanoniczne) tych przestrzeni nazw, są te same przykłady, co powyżej, tylko jest inna wersja językowa w wyniku tej samej otrzymanej przestrzeni nazw: <syntaxhighlight lang="lua"> local nazwy_modul = require("Module:Nazwy"); -- Gdy nazwą przestrzeni jest nazwa niekanoniczna: ---- Zwraca wartość: "Template": local nazwa_przestrzeni_przedmotowej_1 = nazwy_modul.NpDane{ nazwa = "Dyskusja szablonu", przedmiotowa = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Template talk": local nazwa_przestrzeni_dyskusji_1 = nazwy_modul.NpDane{ nazwa = "Szablon", dyskusja = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", -- Gdy nazwą przestrzeni jest nazwa kanoniczna: ---- Zwraca wartość: Template": local nazwa_przestrzeni_przedmotowej_2 = nazwy_modul.NpDane{ nazwa = "Template talk", przedmiotowa = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Template talk": local nazwa_przestrzeni_dyskusji_2 = nazwy_modul.NpDane{ nazwa = "Template", dyskusja = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; -- Gdy przestrzeń nazw jest w postaci jej numeru id: ---- Zwraca wartość: ""Template": local nazwa_przestrzeni_przedmotowej_3 = nazwy_modul.NpDane{ nazwa = 11, przedmiotowa = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Template talk": local nazwa_przestrzeni_dyskusji_3 = nazwy_modul.NpDane{ nazwa = 10, dyskusja = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; </syntaxhighlight> Przejście z tej samej przestrzeni na tą samą możemy uzyskać to wtedy, tzw. przejście tożsamościowe, poprzez tłumaczenie nazw dyskusji na dysusji, i nazw przedmiotowych na przedmiotowe, dla róznych projektów, nie tylko polskich, a tutaj mamy dla języka polskiego, tylko repezentacja językowa może być inna, tutaj jest ta polska (w wersji niekanonicznej) i angielska (w wersji kanonicznej): <syntaxhighlight lang="lua"> local nazwy_modul = require("Module:Nazwy"); -- Gdy nazwą przestrzeni jest nazwa niekanoniczna, gdy w ty przypadku chcemy uzyskać nazwę charakterystyczną dla danego języka danego projektu: ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_przedmotowej_1 = nazwy_modul.NpDane{ nazwa = "Szablon", przedmiotowa = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_dyskusji_1 = nazwy_modul.NpDane{ nazwa = "Dyskusja szablonu", dyskusja = "tak", ["klucz projektu"] = "pl:w", }; -- Gdy nazwą przestrzeni jest nazwą kanoniczną: ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_przedmotowej_2 = nazwy_modul.NpDane{ nazwa = "Template", przedmiotowa = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_dyskusji_2 = nazwy_modul.NpDane{ nazwa = "Template talk", dyskusja = "tak", ["klucz projektu"] = "pl:w", }; -- Gdy przestrzeń nazw jest w postaci jej numeru id: ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_przedmotowej_3 = nazwy_modul.NpDane{ nazwa = 10, przedmiotowa = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_dyskusji_3 = nazwy_modul.NpDane{ nazwa = 11, dyskusja = "tak", ["klucz projektu"] = "pl:w", }; </syntaxhighlight> Gdy użyjemy dodatkowo parametr {{Code|kanoniczna}}, uzyskamy nazwę angielską danej przestrzeni nazw, nawet gdy to jest przestrzeń podana w języku polskim, dla polskiego projektu, lub w jezyku charakterystycznym dla danego projektu, jeżeli mamy to w bazie przestrzeni nazw w formie pliku {{Code|.json}}, podane w podstronach modułu {{m|Nazwy/}}, to te nazwy wtedy obsługuje: <syntaxhighlight lang="lua"> local nazwy_modul = require("Module:Nazwy"); -- Gdy nazwą przestrzeni jest nazwą niekanoniczną: ---- Zwraca wartość: "Template": local nazwa_przestrzeni_przedmotowej_1 = nazwy_modul.NpDane{ nazwa = "Szablon", przedmiotowa = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Template talk": local nazwa_przestrzeni_dyskusji_1 = nazwy_modul.NpDane{ nazwa = "Dyskusja szablonu", dyskusja = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; -- Gdy nazwą przestrzeni jest nazwą kanoniczną: ---- Zwraca wartość: Template": local nazwa_przestrzeni_przedmotowej_2 = nazwy_modul.NpDane{ nazwa = "Template", przedmiotowa = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Template talk": local nazwa_przestrzeni_dyskusji_2 = nazwy_modul.NpDane{ nazwa = "Template talk", dyskusja = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; -- Gdy przestrzeń nazw jest w postaci jej numeru id: ---- Zwraca wartość: "Template": local nazwa_przestrzeni_przedmotowej_3 = nazwy_modul.NpDane{ nazwa = 10, przedmiotowa = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", } ---- Zwraca wartość: "Template talk": local nazwa_przestrzeni_dyskusji_3 = nazwy_modul.NpDane{ nazwa = 11, dyskusja = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; </syntaxhighlight> ===== Nazwy przestrzeni z myślnikami dolnymi ===== Jeżeli nazwy danych przestrzeni, niezależnie, czy są w postaci niekanonicznej, czy nie, ale jeżeli w nazwie zawierają spację, to one jako w wyniku zamiast nich będą miały dolny myślnik zamiast spacji, gdy użyjemy parametru: {{Code|["z myślnikami dolnymi"] {{=}} "tak"}}, czyli: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Dyskusja_szablonu": local nazwa_przestrzeni_1 = nazwy_modul.NpDane{ nazwa = "Dyskusja szablonu", ["z myślnikami dolnymi"] = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Dyskusja_szablonu": local nazwa_przestrzeni_2 = nazwy_modul.NpDane{ nazwa = "Template talk", ["z myślnikami dolnymi"] = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Template_talk";: local nazwa_przestrzeni_3 = nazwy_modul.NpDane{ nazwa = "Dyskusja szablonu", kanoniczna = "tak", ["z myślnikami dolnymi"] = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Template_talk": local nazwa_przestrzeni_4 = nazwy_modul.NpDane{ nazwa = "Template talk", kanoniczna = "tak", ["z myślnikami dolnymi"] = "tak", ["klucz projektu"] = "pl:w", }; </syntaxhighlight> ===== Uzyskiwanie kanonicznej nazwy projektu, nazwy przedmiotowej i jej dyskusji, z jej odpowiednika nazwy przestrzeni nazw ===== Dla przestrzeni nazw: {{NpDane|Wikipedia|link=tak|klucz projektu=pl:w}}, jej nazwy projektowej: {{NpDane|Wikipedia|link=tak|kanoniczna=tak|nazwij projektem=tak|klucz projektu=pl:w}} możemy uzyskać, gdy dla funkcji {{m|Nazwy|NpDane}} podamy parametr: {{Code|["nazwij projektem"] {{=}} "tak"}}, dla przestrzeni przedmiotowej lub dyskusji: {{NpDane|Wikipedia talk|link=tak|klucz projektu=pl:w}}, jej nazwy projektowej: {{NpDane|Wikipedia talk|link=tak|kanoniczna=tak|nazwij dyskusją projektu=tak|klucz projektu=pl:w}}, gdy podamy parametr {{Code|["nazwij dyskusją projektu"] {{=}} "tak"}}, czyli: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Wikipedia": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "Wikipedia", ["nazwij projektem"] = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Project": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "Wikipedia", ["nazwij projektem"] = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Project": local nazwa_przestrzeni_nazw_3 = nazwy_modul.NpDane{ nazwa = "Dyskusja Wikipedii", ["nazwij projektem"] = "tak", przedmiotowa = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Dyskusja Wikipedii": local nazwa_przestrzeni_nazw_4 = nazwy_modul.NpDane{ nazwa = "Wikipedia", ["nazwij dyskusją projektu"] = "tak", dyskusja = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Project talk": local nazwa_przestrzeni_nazw_5 = nazwy_modul.NpDane{ nazwa = "Dyskusja Wikipedii", ["nazwij dyskusją projektu"] = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Project talk": local nazwa_przestrzeni_nazw_6 = nazwy_modul.NpDane{ nazwa = "Wikipedia", ["nazwij dyskusją projektu"] = "tak", dyskusja = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; </syntaxhighlight> ===== Różne wersje sprawdzania istnienia przestrzeni nazw ===== ====== Sprawdzanie, czy dana przestrzeń jest poprawnie podane, czy istnieje ====== Możemy sprawdzić, istnienie podanej przestrzeni nazw poprzez użycie parametru {{Code|istnieje}} z wartością niepustą, wtedy dla obu jej wartości uzyskujemy wyniki, wskazujać, czy istnieją przestrzenie nazw istniejące i które nie mają prawa istnieć z racji bytu, w pierwszym przypadku otrzymamy treściwy wynik, a w drugim komunikatro błędzie: <syntaxhighlight lang="lua">0 local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "Szablon", istnieje = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Moja przestrzeń": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "Moja przestrzeń", istnieje = "", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "(błąd)": local nazwa_przestrzeni_nazw_3 = nazwy_modul.NpDane{ nazwa = "Moja przestrzeń", istnieje = "tak", ["klucz projektu"] = "pl:w", }; </syntaxhighlight> Gdy dana przestrzeń nie istnieje przy użyciu wartości niepustej parametru {{Code|istnieje}}, wtedy otrzymujemy błąd funkcji w postaci tekstu {{Code|(błąd)}}, a gdy nie podamy tego parametru, to otrzymamy nazwę sformatowaną danej nieznanej przestrzeni nazw po usunięciu wszystkich spacji lub dolnych myślników na początku i końcu ciągu oraz zbędnych wewnątrz tego ciągu i zastąpieniu ich kolejnych jedną spacją. A gdy jednak przestrzeń nazw istnieje, to funkcja zachowuje się tak, jakby nie podano tego parametru. ====== Łatwe sprawdzanie istnienia danej przestrzeni nazw ====== Sprawdzamy tutaj istnienie podanej przestrzeni nazw w parserach wikikodu {{Code|MediaWiki}}, wtedy dla nieistniejącej przestrzeni nazw otrrzymamy wynik pusty, a dla istniejącej już nie, wyjątkiem jest przestrzeń główna, dla której wartość otrzymana jest pusta, co nie trudno jest odróżnić od stanu błędu funkcji, chyba, że użyjemy pewnego parametru opisywanego poniżej: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "Szablon", istnieje = "tak", ["wynik błędu nietekstowy"] = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Moja przestrzeń": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "Moja przestrzeń", istnieje = "", ["wynik błędu nietekstowy"] = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: nil: local nazwa_przestrzeni_nazw_3 = nazwy_modul.NpDane{ nazwa = "Moja przestrzeń", istnieje = "tak", ["wynik błędu nietekstowy"] = "tak", ["klucz projektu"] = "pl:w", }; </syntaxhighlight> W kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}} powyższe wywołanie przy nieznanych przestrzeniach przyjmuje wartość {{Code|nil}} (ostatni przykład), a wikikodzie w szablonach wartość pustą: "". A jeżeli chcemy sprawdzić, za pomocą funkcji parsera wikikodu: {{Code|{{s|#if:coś|wtedy|przeciwnie}}}}, używając odpowiednika szablonowego {{s|NpDane}}, wtedy musimy użyć parametru: {{Code|["wynik błędu nietekstowy"] {{=}} "tak"}}, używany z: {{Code|istnieje {{=}} "tak"}}, gdy dana przestrzeń nie istnieje, wtedy uzyskamy wartość pustą (bo wartość {{Code|nil}} jest tłumaczone na to), a żeby odróżnić ją od nazwy przestrzeni nazw głównej, to należy dodatkowo użyć: {{Code|["wyświetlana"] {{=}} "tak"}}, wtedy dla wartości pustej tej nazwy przestrzeni nazw, uzyskujemy w wyniku czego nie wartość pustą, czyli: {{Code|(główna)}} dla projektów polskich, lub po użyciu parametru {{Code|["po polsku"] {{=}} "tak"}} z wartością niepustą albo {{Code|(main)}} dla przestrzeni angielskich bądź innych, gdy nie ma obsługi w bazie przestrzeni nazw, tę nazwę można uzyskać też przy parametrze {{Code|kanoniczna {{=}} "tak"}} dla każdego obsługiwanego projektu {{Strong|wiki}}, więc przy takich realiach łatwo to odróżnić od komunikatu błędu tej funkcji. ===== Uzyskiwanie uchwytu danej przestrzeni nazw, analogicznie do funkcji {{Code|mw.site.namespaces}} (ale w sposób inny sformułowana), ale też z innym zestawem parametrów ===== Uchwyt niskopoziomowy do danej przestrzeni nazw nie można uzyskać przy pomocy kodu z: {{Code|mw.site.namespaces}}, ponieważ jest on dla przestrzeni na bieżącym projekcie, a tutaj mamy siostrzany. Funkcja uzyskująca uchwyt ignoruje wielkość liter w przestrzeni nazw oraz powtórzone odstępy zrealizowane za pomocą spacji lub dolnych myślników. To wysokopoziomowe uzyskanie uchwytu można utworzyć przy pomocy parametru: {{Code|uchwyt}}: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local uchwyt_1 = nazwy_modul.NpDane{ nazwa = "Szablon", uchwyt = "tak", ["klucz projektu"] = "pl:w", }; local uchwyt_2 = nazwy_modul.NpDane{ nazwa = "Template", uchwyt = "tak", ["klucz projektu"] = "pl:w", }; local uchwyt_3 = nazwy_modul.NpDane{ nazwa = 10, uchwyt = "tak", ["klucz projektu"] = "pl:w", }; </syntaxhighlight> Funkcja {{Code|nazwy_modul.NpDane}} jest bardziej ogólniejsza niż {{Code|mw.site.namespaces}} na projekcie bieżącym, ponieważ ona uwzględnia inne projekty niż polski {{NS|l=tak|w=tak}}, bo uwzględnia większą liczbę nazw przestrzeni nazw, czyli ona obejmuje wszystkie znane przestrzenie nazw, i dlatego należy stosować tę funkcję, a nie dedykowaną tabelę z połączoną z metatabelką za pomocą funkcji {{lpg|Lua}}. == Funkcje nazw serwisowych projektów siostrzanych polskiego {{NS|w=tak|l=tak|pk=d}} == === {{Code|m.NAZWASERWISU()}} === ==== Odpowiednik szablonowy ==== Odpowiednik szablonowy jest pod nazwą {{s|NAZWASERWISU}} (skrót: {{s|NS}}). Jego parametry są podobne do jego wersji bibliotecznej. Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce. ==== Funkcja biblioteczna ==== Szablon jest używany do uzyskania nazwy serwisu danej wiki, ewentualnie w postaci linku do strony głównej projektu danej wiki lub do artykułu o danej wiki na {{lpg|Wikipedia|Wikipedii}}, w jakieś podanej wersji językowej. {{OpisParametrów | 1 = Parametry podstawowe...| nagłówek1=tak | 2 = {{Parametr|wyspecjalizowana|tak}} | _2 = Tylko dla tej funkcji wywołanej w postaci ramki w wikikodzie w szablonach, gdy do niej wsadzamy bezpośrednio jako dzieci, a w przypadku z rodzica to ten parametr jest niepotrzebny lub powinien przyjmować wartość pustą, | 3 = Inne parametry...| nagłówek3=tak | 4 = Ta funkcja dalsze ma takie same parametry, co szablon w jego pełnej nazwie: {{s|NAZWASERWISU}}, lub skrótowej: {{s|NS}}.|nagłówek4=tak | 5 = Wszystkie powyższe zmienne są opcjonalne|nagłówek5=tak }} ===== Opis parametrów użytych razem z parametrem {{Code|link}} ===== Szablon przyjmuje parametr opcjonalny {{Code|link}} ({{s|NS|l{{=}}tak}}), dzięki któremu jest wyświetlany link, do strony głównej tego projektu, w postaci: {{Code|{{NS|l=tak}}}}, o nazwie linku, będącą jednocześnie nazwą serwisu projektu '''{{NS|l=tak}}'''. Gdy dodamy parametr {{Code|wikipedia{{=}}tak}} do wywołania {{Code|{{s|NS|l{{=}}tak|w{{=}}tak}}}}, wtedy uzyskamy wynik: {{Code|{{NS|l=tak|w=tak}}}}, w innym przypadku, gdy linkujemy do angielskiej {{NS|w=tak|l=tak|pk=mj|k=tak}}, wtedy dla wywołania {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|kj{{=}}en}}}} mamy: {{Code|{{NS|l=tak|w=tak|kj=en}}}}, a w przypadku angielskiego {{NS|w=tak|l=tak|pk=d}} dla wikikodu {{Code|{{s|NS|l{{=}}tak|kj{{=}}en}}}} mamy wynik w postaci: {{Code|{{NS|l=tak|kj=en}}}}, a jeśli użyjemy parametru {{Code|kod projektu}}, wtedy wywołanie {{Code|{{s|NS|link{{=}}tak|kp{{=}}s}}}}, to mamy: {{Code|{{NS|l=tak|kp=s}}}}, a gdy dodamy dodatkowo {{Code|wikipedia{{=}}tak}}, zatem {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|kp{{=}}s}}}} jest o wyniku: {{Code|{{NS|l=tak|w=tak|kp=s}}}}. {{OpisParametrów | 1 = Wyniki z parametrem: {{Parametr|link|tak}}, zostały obtoczone znacznikiem: {{Tag|code}}, dla odróżnienia rezultatu od reszty tekstu.|nagłówek1=tak }} ===== Wywołania szablonu z tekstem z małymi literami po linku (parametr: {{Code|po}}) i z dowolnym tekstem w nazwie linku (parametr: {{Code|za}}) ===== {{OpisParametrów | 1 = Parametr: {{Parametr|link|tak}}, w szablonie {{s|NAZWASERWISU}} mówi, że ma być podany link do strony głównej projektu lub artykułu na {{NS|l=tak|k=w}}. Można w nie podać parametr: {{Parametr|po|<łańcuch tekstowy>}}, który jest za linkiem, podobnie: {{Parametr|za|<łańcuch tekstowy>}}, który jest w nazwie linku, ale względem jej originalnej nazwy za nim.|nagłówek1=tak }} ====== Proste przykłady użycia, z linkiem do projektu bieżącego, przy użyciu parametru {{Code|link}} ====== Gdy chcemy wyświetlić link do polskiego projektu {{NS|w=tak|l=tak|pk=mj}} do jego strony głównej. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local link_1 = nazwy_modul.NAZWASERWISU{ link = "tak", po = "a", }; local link_2 = nazwy_modul.NAZWASERWISU{ link = "tak", za = "a", }; </syntaxhighlight> ; Analogiczne wywołanie szablonu{{Dk}} * {{Code|{{s|NS|l{{=}}tak|p{{=}}a}}}} → {{Tt|{{NS|l=tak|p=a}}}}, * {{Code|{{s|NS|l{{=}}tak|z{{=}}a}}}} → {{Tt|{{NS|l=tak|z=a}}}}. ; Kod wywołania tych szablonów: ;; Dla wywołania {{Code|{{s|NS|l{{=}}tak|p{{=}}a}}}}{{Dk}} {{PreNowiki|{{NS|l=tak|p=a}}}} ;; Dla wywołania {{Code|{{s|NS|l{{=}}tak|z{{=}}a}}}}{{Dk}} {{PreNowiki|{{NS|l=tak|z=a}}}} ====== Proste przykłady użycia, z linkiem do polskiej {{NS|w=tak|l=tak|k=w|pk=mj}}, przy użyciu parametru {{Code|link}} ====== Gdy chcemy wyświetlić link do artykułu o {{NS|w=tak|l=tak|k=b|pk=mj}} na polskiej {{NS|w=tak|l=tak|k=w|pk=mj}}. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local link_1 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", po = "a", }; local link_2 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", za = "a", }; </syntaxhighlight> ; Analogiczne wywołanie szablonu{{Dk}} * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|p{{=}}a}}}} → {{Tt|{{NS|l=tak|w=tak|p=a}}}}, * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|z{{=}}a}}}} → {{Tt|{{NS|l=tak|w=tak|z=a}}}}. ; Kod wywołania tych szablonów: ;; Dla wywołania {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|p{{=}}a}}}}{{Dk}} {{PreNowiki|{{NS|l=tak|w=tak|p=a}}}} ;; Dla wywołania {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|z{{=}}a}}}}{{Dk}} {{PreNowiki|{{NS|l=tak|w=tak|z=a}}}} ====== Przykłady użycia, z linkiem do obcojęzycznej {{NS|w=tak|l=tak|k=w|pk=mj}}, z polską podanego nazwą projektu, przy użyciu parametru {{Code|link}} ====== Gdy chcemy wyświetlić link do artykułu o {{NS|w=tak|l=tak|k=b|pk=mj}} na podanej obcojęzycznej {{NS|w=tak|l=tak|k=w|pk=mj}} podany za pomocą parametru {{Code|["klucz projektu"] {{=}} "en:s"}}. Jest to projekt: {{NS|l=tak|k=en:s}}, którego językiem jest: {{lpg|{{#invoke:lang|hasło|es}}}}. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local link_1 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", ["klucz projektu"] = "en:s", po = "a", }; local link_2 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", ["klucz projektu"] = "en:s", za = "a", }; </syntaxhighlight> ; Analogiczne wywołanie szablonu{{Dk}} * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|k{{=}}en:s|p{{=}}a}}}} → {{Tt|{{NS|l=tak|w=tak|k=en:s|p=a}}}}, * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|k{{=}}en:s|z{{=}}a}}}} → {{Tt|{{NS|l=tak|w=tak|k=en:s|z=a}}}}. ; Kod wywołania tych szablonów: ;; Dla wywołania {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|k{{=}}en:s|p{{=}}a}}}}{{Dk}} {{PreNowiki|{{NS|l=tak|w=tak|k=en:s|p=a}}}} ;; Dla wywołania {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|k{{=}}en:s|z{{=}}a}}}}{{Dk}} {{PreNowiki|{{NS|l=tak|w=tak|k=en:s|z=a}}}} ====== Przykłady użycia, z linkiem do obcojęzycznej {{NS|w=tak|l=tak|k=w|pk=mj}}, z niepolską podanego nazwą projektu, przy użyciu parametru {{Code|link}} ====== Gdy chcemy wyświetlić link do artykułu o {{NS|w=tak|l=tak|k=b|pk=mj}} do podanej obcojęzycznej {{NS|w=tak|l=tak|k=w|pk=mj}} podany za pomocą parametru {{Code|["klucz projektu"] {{=}} "en:s"}}. A nazwa linku ma być podana w języku tego projektu. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local link_1 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", ["klucz projektu"] = "en:s", ["w języku wiki"] = "tak", po = "a", }; local link_2 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", ["klucz projektu"] = "en:s", ["w języku wiki"] = "tak", za = "a", }; </syntaxhighlight> ; Analogiczne wywołanie szablonu{{Dk}} * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|k{{=}}en:s|jw{{=}}tak|p{{=}}a}}}} → {{Tt|{{NS|l=tak|w=tak|k=en:s|jw=tak|p=a}}}}, * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|k{{=}}en:s|jw{{=}}tak|z{{=}}a}}}} → {{Tt|{{NS|l=tak|w=tak|k=en:s|jw=tak|z=a}}}}. ; Kod wywołania tych szablonów: ;; Dla wywołania {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|k{{=}}en:s|jw{{=}}tak|p{{=}}a}}}}{{Dk}} {{PreNowiki|{{NS|l=tak|w=tak|k=en:s|jw=tak|p=a}}}} ;; Dla wywołania {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|k{{=}}en:s|jw{{=}}tak|z{{=}}a}}}}{{Dk}} {{PreNowiki|{{NS|l=tak|w=tak|k=en:s|jw=tak|za=a}}}} ===== Wywołania szablonu dotyczące, w {{NS|w=tak|l=tak|k=w|pk=mj}} iub nie, kodzie dla projektu {{NS|w=tak|l=tak|pk=m}} dla różnych wersji językowych ===== ====== Przykłady użycia funkcji {{Code|nazwy_modul.NAZWASERWISU()}} ====== Gdy chcemy podać nazwę projektu w postaci linku do artykułu strony głównej na {{NS|w=tak|l=tak|pk=mj}} lub artykułu na polskiej lub obcojęzycznej {{NS|w=tak|l=tak|k=w|pk=mj}}. Do jakiej {{NS|w=tak|l=tak|k=w|pk=mj}} ma być link, to wskazuje kod języka, np.: {{Code|["kod języka"] {{=}} "en"}}. Gdy nie podamy tego kodu, to linkujemy tylko do polskiego {{NS|w=tak|l=tak|pk=mj}} lub do polskiej {{NS|w=tak|l=tak|k=w|pk=mj}} (jeżeli podamy parametr {{Code|wikipedia {{=}} "tak"}}). A gdy podany jest ten kod, to możemy linkować nie tylko do polskich projektów siostrzanych polskiego {{NS|w=tak|l=tak|pk=mj}} (ale tylko różnych jego wersji językowych), ale też można linkować do obcojęzycznych projektów, którym jest Wikipedia do artykułu o tym projekcie. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local link_1 = nazwy_modul.NAZWASERWISSU{}; }; local link_2 = nazwy_modul.NAZWASERWISU{ link = "tak", }; local link_3 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", }; local link_4 = nazwy_modul.NAZWASERWISU{ link = "tak", ["kod języka"] = "pl", }; local link_5 = nazwy_modul.NAZWASERWISU{ link = "tak", ["kod języka"] = "en", }; local link_6 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", ["kod języka"] = "pl", }; local link_7 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", ["kod języka"] = "en", }; </syntaxhighlight> ====== Analogiczne wywołanie szablonu ====== * {{Code|{{s|NS}}}} → {{Tt|{{NS}}}}, * {{Code|{{s|NS|l{{=}}tak}}}} → {{Tt|{{NS|l=tak}}}}, * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak}}}} → {{Tt|{{NS|l=tak|w=tak}}}}, * {{Code|{{s|NS|l{{=}}tak|kj{{=}}pl}}}} → {{Tt|{{NS|l=tak|kj=pl}}}}, * {{Code|{{s|NS|l{{=}}tak|kj{{=}}en}}}} → {{Tt|{{NS|l=tak|kj=en}}}}, * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|kj{{=}}pl}}}} → {{Tt|{{NS|l=tak|w=tak|kj=pl}}}}, * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|kj{{=}}en}}}} → {{Tt|{{NS|l=tak|w=tak|kj=en}}}}. ===== Wywołanie szablonu dotyczące innego projektu niż ten ===== ====== Przykłady użycia funkcji {{Code|nazwy_modul.NAZWASERWISU()}} ====== Ale też możemy linkować do stron głównych innych projektów niż {{NS|w=tak|l=tak|pk=m}}. Robimy to za pomocą parametru: {{Code|["kod projektu"] {{=}} "s"}}, nie licąc parametru języka, ale też możemy linkować do artykułu o danym projekcie na {{NS|w=tak|l=tak|k=w|pk=mj}}. A jeżeli podamy kod języka {{Code|["kod języka"] {{=}} "en"}}, wtedy linkujemy do angielskich projektów, w tym również do {{NS|w=tak|l=tak|k=w|pk=mj}}. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Tutaj linkujemy do Wikiźródeł do jej strony głównej local linki_1 = nazwy_modul.NAZWASERWISU{ link = "tak", ["kod projektu"] = "s", }; --- Co powyżej, tylko do artykułu na Wikipedii o Wikiźródłach local linki_2 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", ["kod projektu"] = "s", }; -- Tutaj linkujemy do Wikibooksa do jej strony głównej w jakieś jej wersji językowej local linki_3 = nazwy_modul.NAZWASERWISU{ link = "tak", ["kod języka"] = "pl", ["kod projektu"] = "s", }; local linki_4 = nazwy_modul.NAZWASERWISU{ link = "tak", ["kod języka"] = "en", ["kod projektu"] = "s", }; -- Jak powyżej, tylko do artykułu Wikipedii w jakieś wersji językowej o Wikiźródłach local linki_5 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", ["kod języka"] = "pl", ["kod projektu"] = "s", }; local linki_6 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", ["kod języka"] = "en", ["kod projektu"] = "s", }; </syntaxhighlight> ====== Analogiczne wywołanie szablonu ====== * {{Code|{{s|NS|l{{=}}tak|kp{{=}}s}}}} → {{Tt|{{NS|l=tak|kp=s}}}}, * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|kp{{=}}s}}}} → {{Tt|{{NS|l=tak|w=tak|kp=s}}}}, * {{Code|{{s|NS|l{{=}}tak|kj{{=}}pl|kp{{=}}s}}}} → {{Tt|{{NS|l=tak|kj=pl|kp=s}}}}, * {{Code|{{s|NS|l{{=}}tak|kj{{=}}en|kp{{=}}s}}}} → {{Tt|{{NS|l=tak|kj=en|kp=s}}}}, * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|kj{{=}}pl|kp{{=}}s}}}} → {{Tt|{{NS|l=tak|w=tak|kj=pl|kp=s}}}}, * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|kj{{=}}en|kp{{=}}s}}}} → {{Tt|{{NS|l=tak|w=tak|kj=en|kp=s}}}}. ===== Wywołania szablonu z nazwą linku danej wiki ===== ====== Przykłady użycia funkcji {{Code|nazwy_modul.NAZWASERWISU()}} ====== Gdy chcemy podać nazwę linku przy pomocy parametru {{Code|["w języku wiki"] {{=}} "tak"}}, w języku danej wiki, którego podajemy przy parametrze {{Code|["kod języka"] {{=}} "en"}}, dla projektu podanego w zmiennej {{Code|["kod projektu"] {{=}} "s"}}. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local linki_1 = nazwy_modul.NAZWASERWISU{ link = "tak", ["kod projektu"] = "s", ["w języku wiki"] = "tak", }; local linki_2 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", ["kod projektu"] = "s",["w języku wiki"] = "tak", }; local linki_3 = nazwy_modul.NAZWASERWISU{ link = "tak", ["kod języka"] = "pl", ["kod projektu"] = "s", ["w języku wiki"] = "tak", }; local linki_4 = nazwy_modul.NAZWASERWISU{ link = "tak", ["kod języka"] = "en", ["kod projektu"] = "s", ["w języku wiki"] = "tak", }; local linki_5 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", ["kod języka"] = "pl", ["kod projektu"] = "s", ["w języku wiki"] = "tak", }; local linki_6 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", ["kod języka"] = "en", ["kod projektu"] = "s", ["w języku wiki"] = "tak", }; </syntaxhighlight> ====== Analogiczne wywołanie szablonu ====== * {{Code|{{s|NS|l{{=}}tak|kp{{=}}s|jw{{=}}tak}}}} → {{Tt|{{NS|l=tak|kp=s|jw=tak}}}}, * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|kp{{=}}s|jw{{=}}tak}}}} → {{Tt|{{NS|l=tak|w=tak|kp=s|jw=tak}}}}, * {{Code|{{s|NS|l{{=}}tak|kj{{=}}pl|kp{{=}}s|jw{{=}}tak}}}} → {{Tt|{{NS|l=tak|kj=pl|kp=s|jw=tak}}}}, * {{Code|{{s|NS|l{{=}}tak|kj{{=}}en|kp{{=}}s|jw{{=}}tak}}}} → {{Tt|{{NS|l=tak|kj=en|kp=s|jw=tak}}}}, * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|kj{{=}}pl|kp{{=}}s|jw{{=}}tak}}}} → {{Tt|{{NS|l=tak|w=tak|kj=pl|kp=s|jw=tak}}}}, * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|kj{{=}}en|kp{{=}}s|jw{{=}}tak}}}} → {{Tt|{{NS|l=tak|w=tak|kj=en|kp=s|jw=tak}}}}. ===== Wywołanie szablonu z podaną nazwą linku ===== ====== Przykłady użycia funkcji {{Code|nazwy_modul.NAZWASERWISU()}} ====== Jeżeli chcemy podać ściśle określony ciąg, który jest nazwą linku, do linkowania do strony głównej lub artykułu na {{NS|w=tak|l=tak|k=w|pk=mj}} o danym projekcie, np. inną niż nazwa projektu. Tutaj nazwą linku jest {{Code|[1] {{=}} "Biblioteka książek"}}. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local link_1 = nazwy_modul.NAZWASERWISU{ [1] = "Biblioteka książek", link = "tak", }; local link_2 = nazwy_modul.NAZWASERWISU{ [1] = "Biblioteka książek", link = "tak", wikipedia = "tak", }; local link_3 = nazwy_modul.NAZWASERWISU{ [1] = "Biblioteka książek", link = "tak", ["kod projektu"] = "s",["kod języka"] = "en", }; local link_4 = nazwy_modul.NAZWASERWISU{ [1] = "Biblioteka książek", link = "tak", wikipedia = "tak", ["kod projektu"] = "s",["kod języka"] = "en", }; </syntaxhighlight> ====== Analogiczne wywołanie szablonu ====== * {{Code|{{s|NS|Biblioteka książek|l{{=}}tak}}}} → {{Tt|{{NS|Biblioteka książek|l=tak}}}}, * {{Code|{{s|NS|Biblioteka książek|l{{=}}tak|w{{=}}tak}}}} → {{Tt|{{NS|Biblioteka książek|l=tak|w=tak}}}}, * {{Code|{{s|NS|Biblioteka wikiźródeł|l{{=}}tak|kp{{=}}s|kj{{=}}en}}}} → {{Tt|{{NS|Biblioteka wikiźródeł|l=tak|kp=s|kj=en}}}}, * {{Code|{{s|NS|Biblioteka wikiźródeł|l{{=}}tak|w{{=}}tak|kp{{=}}s|kj{{=}}en}}}} → {{Tt|{{NS|Biblioteka wikiźródeł|l=tak|w=tak|kp=s|kj=en}}}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> qy44hhoif5u9fmlpkrhzvqte67a94uo 555696 555695 2026-09-11T14:35:56Z Persino 2851 /* Wywołania szablonu z tekstem z małymi literami po linku (parametr: {{Code|po}}) i z dowolnym tekstem w nazwie linku (parametr: {{Code|za}}) */ 555696 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Nazwy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == Funkcje nazw nazwy przestrzeni nazw == Należy przeczytać wiadomości ze strony {{lru|Moduły/Nazwy}}, które są informacjami wstępnymi, by używać funkcji bibliotecznych: {{m|Nazwy|Np}} i {{m|Nazwy|NpDane}}, i z nimi skojarzonych szablonów, tzn.: {{s|Np}} i {{s|NpDane}}. Wiadomosci też stąd są bardzo potrzebne do dalszych modułów tomów tej publikacji, to znaczy do funkcji, czy szablonów, nazw. === {{Code|m.Np}} === ==== Odpowiednik szablonowy ==== Odpowiednik szablonowy jest pod nazwą {{s|Np}}, odpowiednik funkcji, w mechanizmie '''MediaWiki''', tzn.: {{Span|styl=color:blue;|<nowiki>{{ns:<nazwa przestrzeni kanoniczna lub nie, albo jej id>}}</nowiki>}}, format tego, bo to nie jest szablon, czy funkcja, tylko wywołanie parserowe, tego, w którym jej parametr, tylko przestrzeny w nim występuje, jej element jest podobny do jej wersji bibliotecznej, opisywanej funkcji. Format wersji bibliotecznej tej funkcji jest bardzo bodobny do jej wersji szablonowej, tylko jest inne uruchomienie, tam jest ramka, a tutaj wywołanie szablonowe. Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce. * Szablon {{s|Np}} korzysta z funkcji bibliotecznej {{m|Nazwy|Np}}, więc parametry obu są wręcz takie same, a nawet podobne. Chociaż ta sama nazwa funkcji w ramce i kodzie {{lpg|Lua}}, to używanie ich nie jest dokładnie takie samo, funkcja biblioteczna nie potrzebuje parametru {{Parametr|wyspecjalizowana|tak}}, a ramka już tak, a szablon {{s|Np}}, który korzysta z tej ramki, to nieobecność, lub obecność z wartością pustą, tego parametru powoduje, że przyjmowane są parametry rodzica, a nie dziecka, które wymagają jego niepustość. ==== Funkcja biblioteczna ==== Zestaw parametrów tej funkcji są to parametry nazwane podawane, w wersji tabelkowej,, w nawiasach klamerkowej, jak się to podaje w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. ; Paramery funkcji {{m|Nazwy|Np|...|wyspecjalizowana{{=}}tak}} lub funkcji bibliotecznej wykorzystującej opisywaną funkcję{{Dk}} {{OpisParametrów | 1 = Parametry podstawowe | nagłówek1=tak | 2 = {{Code|nazwa}} lub {{Code|1}} | _2 = Nazwa przestrzeni nazw, kanoniczna lub nie, lub {{Code|id}} danej przestrzeni. | 3 = {{Parametr|wyspecjalizowana|tak}} | _3 = Tylko dla tej funkcji wywołanej w postaci ramki w wikikodzie w szablonach, gdy do niej wsadzamy bezpośrednio jako dzieci, a w przypadku z rodzica to ten parametr jest niepotrzebny lub powinien przyjmować wartość pustą, | 4 = Zmienne puste lub nie, np. o wartości {{Code|tak}}, lub nie, podawane do tej funkcji są:| nagłówek4=tak | 5 = {{Code|przedmiotowa}} | _5 = Zamienia daną przestrzeń na jej nazwę przedmiotową, tzn. na przestrzenie o numerach {{Code|id}} parzyste. | 6 = {{Code|dyskusja}} | _6 = Zamienia daną przestrzeń na jej wersję dyskusji, tzn. na przestrzenie o numerach {{Code|id}} nieparzyste. | 7 = {{Code|kanoniczna}} | _7 = Zamienia nazwę przestrzeni lub {{Code|id}} danej przestrzeni na jej nazwę kanoniczną, tzn. na jej wersję angielską. | 8 = {{Code|z myślnikami dolnymi}} | _8 = Zamienia spację w nazwach przestrzenie nazw na dolne myślniki, | 9 = {{Code|wyświetlana}} | _9 = Ten parametr nie wpływa na sposób wyświetlania nazw przestrzeni, oprócz jednej przestrzeni nazw, której jest przestrzeń główna o nazwie kanonicznej {{Code|(main)}} lub niekanonicznej {{Code|(główna)}}, wtedy są wyświetlane zamiast ciągu pustego te nazwy w zależności od podanego parametru {{Code|kanoniczna}}, tj. czy ona jest pusta lub nie, lub niepodana. | 10 = {{Code|link}} | _10 = Drukuje link o nazwie referencji, którą jest nazwa wyświetlana danej przestrzeni nazw, lub jej {{Code|id}}, o adresie strony przekierowującej, której jest adres odniesienia podanej w tabeli powyżej dla tej funkcji lub szablonu {{s|Np}}. | 11 = {{Code|id}} | _11 = wyświetla id danej przestrzeni nazw. | 12 = {{Code|nazwij projektem}} | _12 = Powoduje, że wyświetlana jest nazwa projektu {{Code|Wikibooks}} w postaci rzeczywistej nazwy kanonicznej (używany wraz z parametrem {{Code|kanoniczna}}), tzn. w postaci nazwy {{Code|Project}}, lub bez tego parametru, w postaci nazwy nierzeczywistej niekanonicznej {{Code|Projekt}}. | 13 = {{Code|nazwij dyskusją projektu}} | _13 = Powoduje, że wyświetlana jest nazwa projektu {{Code|Dyskusja wikibooks}} w postaci rzeczywistej nazwy kanonicznej (używany wraz z parametrem {{Code|kanoniczna}}), tzn. w postaci nazwy {{Code|Project talk}}, lub bez tego parametru, w postaci nazwy nierzeczywistej niekanonicznej {{Code|Dyskusja projektu}}. | 14 = Inne zmienne niepuste:|nagłówek14=tak | 15 = {{Code|istnieje}} | _15 = Zwraca wartość tekstową {{Code|(bląd)}}, gdy przestrzeń jest nieprawidłowa lub nie istnieje, w innym przypadku zwraca normalną wartość. | 16 = {{Code|wynik błędu nietekstowy}} | _16 = Używany z {{Code|istnieje}}, zwraca wartość w języku {{lpg|Lua}} wartość {{Code|nil}}, gdy wartość nazwy przestrzeni nazw lub {{Code|id}} jest nieprawidłowa lub nieznana. | 17 = Zwracana zmienna w postaci tabeli ze składowymi z pewnymi podzmiennymi:|nagłówek17=tak | 18 = {{Code|uchwyt}} | _18 = Zwraca uchwyt przestrzeni nazw do danej przestrzeni nazw. }} ===== Przykłady używania ===== ====== Podstawowe wywołanie ====== Podstawowe przykłady podstawowego wywołania funkcji, czyli uzyskiwania nazwy niekanonicznej z dowolnej nazwy przestrzeni kanonicznej, czy jej numeru {{Code|id}} (kodu danej przestrzeni nazw, który reprezentuje daną przestrzeń nazw przedmiotową, czy dyskusji), a więc: <syntaxhighlight lang="lua"> local nazwy_modul = require("Module:Nazwy"); ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_1 = nazwy_modul.Np{ [1] = "Szablon", }; ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_2 = nazwy_modul.Np{ [1] = "Template", }; ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_3 = nazwy_modul.Np{ [1] = 10, }; ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_4 = nazwy_modul.Np{ nazwa = "Szablon", }; ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_5 = nazwy_modul.Np{ nazwa = "Template", }; ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_6 = nazwy_modul.Np{ nazwa = 10, }; </syntaxhighlight> Te trzy pary wywołania wyświetlają ten sam wynik tzn. o takiej samej wartości, bo parametr {{Code|nazwa}} wskazuje na tą samą przestrzeń nazw, tylko one są rożnie wskazane. Został ta użyty parametr: {{Code|1}} lub {{Code|nazwa}}, które oznaczają to samo, czyli przestrzeń nazw w postaci kanonicznej, niekanonicznej, czy numeru {{Code|id}}, czyli identyfikatora przestrzeni nazw. Jako wartość uzyskujemy tam nazwę kanoniczną przestrzenina polskiem {{NS|l=tak|p=ie}}. Przestrzeń nazw może zawierać dowolnej wielkości litery, z dowolną liczbą odstępów z dolnymi spacjami lub normalnymi, jeżeli w nim one występują,wtedy zawsze oznaczają one tą samą przestrzeń, niezależnie jak ją zapiszemy, przykłady poniżej. Równie dobrze dowolną nazwę niekanoniczną możemy napisać, co jest uwidocznione w parametrze {{Code|nazwa}}, na wyjściu otrzymujemy w pełni sformatowaną nazwę niekanoniczną, która odpowiada jej odpowiednikowi niesformatowanemu: <syntaxhighlight lang="lua"> local nazwy_modul = require("Module:Nazwy"); -- Zwraca wartość: "Szablon": local nazwa_przestrzeni_1 = nazwy_modul.Np{ nazwa = "SZABLON", }; -- Zwraca wartość: "Szablon": local nazwa_przestrzeni_2 = nazwy_modul.Np{ nazwa = "TEMPLATE", }; -- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_3 = nazwy_modul.Np{ nazwa = "DYSKUSJA ___ ___ _ SZABLONU", }; -- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_4 = nazwy_modul.Np{ nazwa = "TEMPLATE_________TALK", }; </syntaxhighlight> ====== Nazwy kanoniczne i niekanoniczna oraz zamiana z jednej na drugą ====== Aby uzyskać nazwę z dowolnej nazwy, nawet też kanonicznej, czynie, czy też z numeru {{Code|id}} (identyfikatora przestrzeni nazw), wtedy należy podać parametr przestrzeni nazw, z dodatkowym parametrem {{Code|kanoniczna}}, w takim razie: <syntaxhighlight lang="lua"> local nazwy_modul = require("Module:Nazwy"); -- Uzyskujemy wartość: "Template": local nazwa_kanoniczna_1 = nazwy_modul.Np{ nazwa = "Szablon", kanoniczna = "tak", }; -- Uzyskujemy wartość: "Template": local nazwa_kanoniczna_2 = nazwy_modul.Np{ nazwa = "Template", kanoniczna = "tak", }; -- Uzyskujemy wartość: "Template": local nazwa_kanoniczna_3 = nazwy_modul.Np{ nazwa = 10, kanoniczna = "tak", }; </syntaxhighlight> * Według powyższego przykładu, ona, czyli przestrzeń nazw, jest zamieniana na sformatowaną nazwę kanoniczną, jako parametr może być nazwa niekanoniczna, kanoniczna, czy identyfikator przestrzeni nazw. Dowolną nazwę kanoniczną, czy nie, można zamienić na niekanoniczną, niezależnie w jakiej formie podamy przestrzeń nazw, może być to przekształcenie tożsamościowe, może być to w postaci identyfikatora tej przestrzeni, niezależnie jaką ją mamy na myśli, więc: <syntaxhighlight lang="lua"> local nazwy_modul = require("Module:Nazwy"); -- Uzyskujemy wartość: "Szablon": local nazwa_niekanoniczna = nazwy_modul.Np{ nazwa = "Template", }; </syntaxhighlight> * Wystarczy wtedy użyć tylko jednego parametru, nie trzeba używać większej liczby innych parametrów. ====== Nazwy przedmiotowe i dyskusji oraz przejścia pomiędzy nimi ====== Można też przechodzić z tej samej przestrzeni nazw w nią samą, lub do niego skojarzoną, tzn. z przedmiotowej do dyskusji lub odwrotnie, przykłady poniżej. Do tego celu używamy parametru {{Code|przedmiotowa}}, czyli do tłumaczenia nazwy przestrzeni nazw na jej wersję przedmiotową, tzn. na przestrzeń nazw o identyfikatorze parzystym. Można też użyć parametru {{Code|dyskusja}}, robiąca tłumaczenia na wersje dyskusji, o identyfikatorze nazwy przestrzeni nazw nieparzystym. Nie wolno używać tych parametrów, tych dwóch w jednym wywołaniu, bo może dojść do błędu funkcji w postaci komunikatu {{Code|(błąd)}}. Tłumaczona nazwa może być zarówno niekanoniczna, jak i kanoniczna, lub być zawarta w postaci identyfikatora przestrzeni nazw. Tutaj bez użycia żadnego parametru dodatkowego, wtedy otrzymujemy na wyjściu nazwę niekanoniczną. <syntaxhighlight lang="lua"> local nazwy_modul = require("Module:Nazwy"); -- Gdy nazwą przestrzeni jest nazwa niekanoniczna: ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_przedmotowej_1 = nazwy_modul.Np{ nazwa = "Dyskusja szablonu", przedmiotowa = "tak", }; ---- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_dyskusji_1 = nazwy_modul.Np{ nazwa = "Szablon", dyskusja = "tak", }; -- Gdy nazwą przestrzeni jest nazwa kanoniczna: ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_przedmotowej_2 = nazwy_modul.Np{ nazwa = "Template talk", przedmiotowa = "tak", }; ---- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_dyskusji_2 = nazwy_modul.Np{ nazwa = "Template", dyskusja = "tak", }; -- Gdy prrzestrzeń nazw jest w postaci numeru id: ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_przedmotowej_3 = nazwy_modul.Np{ nazwa = 11, przedmiotowa = "tak", }; ---- Zwraca wartość: szablon "Dyskusja szablonu": local nazwa_przestrzeni_dyskusji_3 = nazwy_modul.Np{ nazwa = 10, dyskusja = "tak", }; </syntaxhighlight> Gdy użyjemy dodatkowo parametr {{Code|kanoniczna}}, zamieniający dowolne przestrzenie nazw, niezależnie, czy jest zapisana w postaci identyfikatora, czy nie, gdy nazwą przestrzeni jest nazwa niekanoniczna (lub kanoniczna), to uzyskana nazwa przedmiotowa, czy dyskusji, jest nazwą kanoniczną, jako w wyniku: <syntaxhighlight lang="lua"> local nazwy_modul = require("Module:Nazwy"); -- Gdy nazwą przestrzeni jest nazwa niekanoniczna: ---- Zwraca wartość: "Template": local nazwa_przestrzeni_przedmotowej_1 = nazwy_modul.Np{ nazwa = "Dyskusja szablonu", przedmiotowa = "tak", kanoniczna = "tak", }; ---- Zwraca wartość: "Template talk": local nazwa_przestrzeni_dyskusji_1 = nazwy_modul.Np{ nazwa = "Szablon", dyskusja = "tak", kanoniczna = "tak", }; -- Gdy nazwą przestrzeni jest nazwa kanoniczna: ---- Zwraca wartość: "Template": local nazwa_przestrzeni_przedmotowej_2 = nazwy_modul.Np{ nazwa = "Template talk", przedmiotowa = "tak", kanoniczna = "tak", }; ---- Zwraca wartość: "Template talk": local nazwa_przestrzeni_dyskusji_2 = nazwy_modul.Np{ nazwa = "Template", dyskusja = "tak", kanoniczna = "tak", }; -- Gdy przestrzeń nazw jest w postaci numeru id: ---- Zwraca wartość: "Template": local nazwa_przestrzeni_przedmotowej_3 = nazwy_modul.Np{ nazwa = 11, przedmiotowa = "tak", kanoniczna = "tak", }; ---- Zwraca wartość: "Template talk": local nazwa_przestrzeni_dyskusji_3 = nazwy_modul.Np{ nazwa = 10, dyskusja = "tak", kanoniczna = "tak", }; </syntaxhighlight> Przejście z tej samej przestrzeni na tą samą możemy uzyskać, gdy nazwę przedmiotową tłumaczymy na przedmiotową, dyskusji na dyskusji, wtedy tłumaczenie z przestrzeni do przestrzeni jest tożsamościowe, niezależnie w jakiej formie podamy nazwę przestrzeni nazw jako parametr, tłumaczymy nazwę polską na tą samą nazwę też polską, o tej samej wartości lub jej odpowiednik angielski w wersji kanonicznej na jej wersję niekanoniczną, czy z numeru identyfikatorana jej odpowiednik nazwowy, ale nadal takie przejście jest tożsamosciowe, bo chodzi o tą samą przestrzeń nazw, mimo że użyliśmy tych parametrów: <syntaxhighlight lang="lua"> local nazwy_modul = require("Module:Nazwy"); -- Gdy nazwą przestrzeni jest nazwa niekanoniczna: ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_przedmotowej_1 = nazwy_modul.Np{ nazwa = "Szablon", przedmiotowa = "tak", }; ---- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_dyskusji_1 = nazwy_modul.Np{ nazwa = "Dyskusja szablonu", dyskusja = "tak",}; -- Gdy nazwą przestrzeni jest nazwa kanoniczna: ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_przedmotowej_2 = nazwy_modul.Np{ nazwa = "Template", przedmiotowa = "tak", }; ---- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_dyskusji_2 = nazwy_modul.Np{ nazwa = "Template talk", dyskusja = "tak",}; -- Gdy przestrzeń nazw jest w postaci numeru id: ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_przedmotowej_3 = nazwy_modul.Np{ nazwa = 10, przedmiotowa = "tak", }; ---- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_dyskusji_3 = nazwy_modul.Np{ nazwa = 11, dyskusja = "tak",}; </syntaxhighlight> Gdy użyjemy dodatkowo parametr {{Code|kanoniczna}}, to uzyskana nazwa przedmiotowa, czy dyskusji, wtedy mamy tłumaczenie tozsamościowe, jeśli chodzi o przestrzeń nazw, co one oznaczają, jeśli ona jest niekanoniczna, to uzyskamy jej nazwę, ale po angielsku, a jeśli jednak jest kanoniczna, to otrzymamy ten sam wynik: <syntaxhighlight lang="lua"> local nazwy_modul = require("Module:Nazwy"); -- Gdy nazwą przestrzeni jest nazwa niekanoniczna: ---- Zwraca wartość: "Template": local nazwa_przestrzeni_przedmotowej_1 = nazwy_modul.Np{ nazwa = "Szablon", przedmiotowa = "tak", kanoniczna = "tak", }; ---- Zwraca wartość: "Template talk": local nazwa_przestrzeni_dyskusji_1 = nazwy_modul.Np{ nazwa = "Dyskusja szablonu", dyskusja = "tak", kanoniczna = "tak", }; -- Gdy nazwą przestrzeni jest nazwa kanoniczna: ---- Zwraca wartość: Template": local nazwa_przestrzeni_przedmotowej_2 = nazwy_modul.Np{ nazwa = "Template", przedmiotowa = "tak", kanoniczna = "tak", }; ---- Zwraca wartość: "Template talk": local nazwa_przestrzeni_dyskusji_2 = nazwy_modul.Np{ nazwa = "Template talk", dyskusja = "tak", kanoniczna = "tak", }; -- Gdy przestrzeń nazw jest w postaci numeru id: ---- Zwraca wartość: ""Template": local nazwa_przestrzeni_przedmotowej_3 = nazwy_modul.Np{ nazwa = 10, przedmiotowa = "tak", kanoniczna = "tak", }; ---- Zwraca wartość: "Template talk": local nazwa_przestrzeni_dyskusji_3 = nazwy_modul.Np{ nazwa = 11, dyskusja = "tak", kanoniczna = "tak", }; </syntaxhighlight> ====== Nazwy przestrzeni z myślnikami dolnymi ====== Gdy używamy przestrzeni nazw, czy to w postaci kanonicznej, czy niekanonicznej, ze spacjami, to spacje są w nim zamieniane na dolne myślniki. Jeżeli parametr zawiera spacje lub dolne myślniki na końcach nazwy, to ona jest trimowana, wewnątrz, wtedy powtórzone spacje, lub myślniki dolne, są zamieniane na jeden dolny myślnik, jeżeli zamieniamy nazwę niekanoniczną na niekanoniczną, kanoniczną na kanoniczną. Gdy tak nie jest, tzn. gdy zamieniamy kanoniczną na niekanoniczną, niekanoniczną na kanoniczną, to wtedy jest podobnie. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Dyskusja_szablonu": local nazwa_przestrzeni_1 = nazwy_modul.Np{ nazwa = "Dyskusja szablonu", ["z myślnikami dolnymi"] = "tak", }; ---- Zwraca wartość: "Dyskusja_szablonu": local nazwa_przestrzeni_2 = nazwy_modul.Np{ nazwa = "Template talk", ["z myślnikami dolnymi"] = "tak", }; ---- Zwraca wartość: "Template_talk";: local nazwa_przestrzeni_3 = nazwy_modul.Np{ nazwa = "Dyskusja szablonu", kanoniczna = "tak", ["z myślnikami dolnymi"] = "tak", }; ---- Zwraca wartość: "Template_talk": local nazwa_przestrzeni_4 = nazwy_modul.Np{ nazwa = "Template talk", kanoniczna = "tak", ["z myślnikami dolnymi"] = "tak", }; </syntaxhighlight> ====== Nazwy wyświetlane przestrzeni nazw ====== Gdy nazwą przestrzeni nazw jest nazwa o charakterze niepustym, to przy parametrze {{Code|wyświetlana {{=}} "tak"}}, jest zamieniana ona na tą samą nazwę, gdy ona jest pusta, to jest zamieniana na szereg: {{Code|(główna)}} bez parametru {{Code|kanoniczna}}, a z tym parametrem na {{Code|(main)}}. Przykłady jak jest, jest powiedziane: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_1 = nazwy_modul.Np{ nazwa = "Szablon", wyświetlana = "", }; ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_2 = nazwy_modul.Np{ nazwa = "Szablon", wyświetlana = "tak", }; ---- Zwraca wartość: "": local nazwa_przestrzeni_3 = nazwy_modul.Np{ nazwa = "", wyświetlana = "", }; ---- Zwraca wartość: "(główna)": local nazwa_przestrzeni_4 = nazwy_modul.Np{ nazwa = "", wyświetlana = "tak", }; ---- Zwraca wartość: "(main)": local nazwa_przestrzeni_5 = nazwy_modul.Np{ nazwa = "", kanoniczna = "tak", wyświetlana = " tak", }; </syntaxhighlight> Na podstawie ramki powyżej w przestrzeniach nazw wyświetlanych dowiadujemy się, że jedyna różnica, w nazwach wyświetlanych lub nie, jest dla przestrzeni głównej, czyli dla przestrzeni nazw, której nazwa przestrzeni jest ciągiem pustym. ====== Wersja funkcji z wyświetlaną nazwą przestrzeni nazw z linkiem opisującej tą przestrzeń ====== Nazwę przestrzeni nazw zamieniamy na link z opisem, co robi dana przestrzeń nazw, z nazwą wyświetlaną niekanoniczną, bez parametru {{Code|kanoniczna}}, lub z tym,wtedy nazwę wyświetlaną jest kanoniczna. Gdy przestrzeń nazw jest główna, to wtedy nazwą linku jest {{Code|(główna)}} ({{Code|(main)}} z parametrem {{Code|kanoniczna}}). <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local nazwa_przestrzeni_nazw_1 = nazwy_modul.Np{ nazwa = "Szablon", link = "tak", }; local nazwa_przestrzeni_nazw_2 = nazwy_modul.Np{ nazwa = "Szablon", link = "tak", kanoniczna = "tak", }; local nazwa_przestrzeni_nazw_3 = nazwy_modul.Np{ nazwa = "", link = "tak", }; local nazwa_przestrzeni_nazw_4 = nazwy_modul.Np{ nazwa = "", link = "tak", kanoniczna = "tak", }; </syntaxhighlight> Przykłady funkcji w wyniku są w przykładach szablonowych: # {{Code|{{s|Np|nazwa{{=}}Szablon|link{{=}}tak}}}} → {{Tt|{{Np|nazwa=Szablon|link=tak}}}} # {{Code|{{s|Np|nazwa{{=}}Szablon|link{{=}}tak|kanoniczna{{=}}tak}}}} → {{Tt|{{Np|nazwa=Szablon|link=tak|kanoniczna=tak}}}} # {{Code|{{s|Np|nazwa{{=}}|link{{=}}tak}}}} → {{Tt|{{Np|nazwa=|link=tak}}}} # {{Code|{{s|Np|nazwa{{=}}|link{{=}}tak|kanoniczna{{=}}tak}}}} → {{Tt|{{Np|nazwa=|link=tak|kanoniczna=tak}}}} ====== Uzyskiwanie numeru {{Code|id}} danej przestrzeni nazw ====== Gdy chcemy uzyskać numer identyfikatora przestrzeni nazw, czy to z użyciem parametru {{Code|kanoniczna}}, czy nie, wtedy ten parametr jest w tym przypadku ignorowany, przy parametrze {{Code|id {{=}} "tak"}} na jej odpowiednik w postaci numeru, który charakteryzuje przestrzenie przedmiotowe i dyskusji, inna jest dla tych dwóch typów przestrzeni. Dla przestrzeni przedmiotowej {{Code|id}} jest parzyste, a dla dyskusji nieparzyste. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Uzyskany numer id nazwy przestrzeni nazw jest 10: local id_1 = nazwy_modul.Np{ nazwa = "Szablon", id = "tak", }; ---- Uzyskany numer id nazwy przestrzeni nazw jest 10: local id_2 = nazwy_modul.Np{ nazwa = "Szablon", kanoniczna = "tak", id = "tak", }; ---- Uzyskany numer id nazwy przestrzeni nazw jest 11: local id_3 = nazwy_modul.Np{ nazwa = "Dyskusja szablonu", id = "tak", }; ---- Uzyskany numer id nazwy przestrzeni nazw jest 11: local id_4 = nazwy_modul.Np{ nazwa = "Dyskusja szablonu", kanoniczna = "tak", id = "tak", }; </syntaxhighlight> ====== Uzyskiwanie nazwy projektu nazwy przedmiotowej i jej dyskusji, z kanonicznej lub nie, przestrzeni nazw ====== Gdy używamy przestrzeni nazw {{Np|Wikibooks|link=tak}} lub {{Np|Wikibooks|link=tak|dyskusja=tak}}, to je można tłumaczyć na je wersje czysto kanoniczne, tzn.: {{Np|Wikibooks|link=tak}} tłumaczymy na {{Np|Wikibooks|link=tak|nazwij projektem=tak}}, a {{Np|Wikibooks|link=tak|dyskusja=tak}} na {{Np|Wikibooks|link=tak|dyskusja=tak|nazwij dyskusją projektu=tak}}, gdy translacja jest na nazwę polską niekanoniczną, a gdy użyjemy parametru {{Code|kanoniczna}}, wtedy sytuacja jest inna: {{Np|Wikibooks|link=tak|kanoniczna=tak}} tłumaczymy na {{Np|Wikibooks|link=tak|nazwij projektem=tak|kanoniczna=tak}}, a {{Np|Wikibooks|link=tak|dyskusja=tak|kanoniczna=tak}} na {{Np|Wikibooks|link=tak|dyskusja=tak|nazwij dyskusją projektu=tak|kanoniczna=tak}}. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Projekt": local nazwa_przestrzeni_nazw_1 = nazwy_modul.Np{ nazwa = "Wikibooks", ["nazwij projektem"] = "tak", }; ---- Zwraca wartość: "Project": local nazwa_przestrzeni_nazw_2 = nazwy_modul.Np{ nazwa = "Wikibooks", ["nazwij projektem"] = "tak", kanoniczna = "tak", }; ---- Zwraca wartość: "Dyskusja projektu": local nazwa_przestrzeni_nazw_3 = nazwy_modul.Np{ nazwa = "Wikibooks", ["nazwij dyskusją projektu"] = "tak", dyskusja = "tak", }; ---- Zwraca wartość: "Project talk": local nazwa_przestrzeni_nazw_4 = nazwy_modul.Np{ nazwa = "Wikibooks", ["nazwij dyskusją projektu"] = "tak", kanoniczna = "tak", }; </syntaxhighlight> ====== Sprawdzanie, czy dana przestrzeń jest poprawnie podane, czy istnieje ====== Gdy używamy przestrzeni nieistniejącej bez parametru {{Code|istnieje {{=}} "tak" }}, wtedy na wyjściu otrzymamy to samo, tylko w wersji sformatowanej, a gdy użyjemy, wtedy pojawia tam się napis {{Code|(błąd)}}. Gdy parametrem jest znana funkcji przestrzeń nazw, to nie uzyskujemy błędu, tylko przepisaną sformatowaną nazwę. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_nazw_1 = nazwy_modul.Np{ nazwa = "Szablon", istnieje = "tak", }; ---- Zwraca wartość: "Moja przestrzeń": local nazwa_przestrzeni_nazw_2 = nazwy_modul.Np{ nazwa = "Moja przestrzeń", istnieje = "", }; ---- Zwraca wartość: "(błąd)": local nazwa_przestrzeni_nazw_3 = nazwy_modul.Np{ nazwa = "Moja przestrzeń", istnieje = "tak", }; </syntaxhighlight> ====== Łatwe sprawdzanie istnienia danej przestrzeni nazw ====== Gdy oprócz parametru {{Code|istnieje {{=}} "tak"}}, użyjemy {{Code|["wynik błędu nietekstowy"] {{=}} "tak"}}, wtedy dla nieznanej przestrzeni uzyskujemy wartość w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, czyli: {{Code|nil}}, a w wikikodzie natomiast uzyskujemy wartość pustą, co pomaga w sprawdzeniu, czy dana przestrzeń istnieje, ale dodatkowo trzeba użyć parametru {{Code|["wyświetlana"] {{=}} "tak"}}, by nie pomylić parametru błędu z przestrzenią główną, wtedy ta przestrzeń ma nazwę niepustą przy tych parametrach, bo wtedy mamy nazwę niekanoniczną {{Code|(główna)}}, kanoniczną, przy specjalnym parametrze, czyli: {{Code|(main)}}, wtedy możemy użyć parsera {{Code|{{s|#if:coś|wtedy|przeciwnie}}}}. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_nazw_1 = nazwy_modul.Np{ nazwa = "Szablon", istnieje = "tak", ["wynik błędu nietekstowy"] = "tak", }; ---- Zwraca wartość: "Moja przestrzeń": local nazwa_przestrzeni_nazw_2 = nazwy_modul.Np{ nazwa = "Moja przestrzeń", istnieje = "", ["wynik błędu nietekstowy"] = "tak", }; ---- Zwraca wartość: nil: local nazwa_przestrzeni_nazw_3 = nazwy_modul.Np{ nazwa = "Moja przestrzeń", istnieje = "tak", ["wynik błędu nietekstowy"] = "tak", }; </syntaxhighlight> ====== Uzyskiwanie uchwytu danej przestrzeni nazw analogicznie do funkcji {{LzLua|mw.site.namespaces}} ====== Uchwyt niskopoziomowy do danej przestrzeni nazw można uzyskać przy pomocy kodu, uzyskujemy dla tej tablicy przestrzennej, która jest połączona z metatabelką, dzięki której możemy podawać przestrzenie nazw w wersji niezależnie jakimi literami, z dowolną kliczbą odstępów, nawet zapisana dolnymi myślnikami: <syntaxhighlight lang="lua"> local uchwyt_1 = mw.site.namespaces["Szablon"]; local uchwyt_2 = mw.site.namespaces["Template"]; local uchwyt_3 = mw.site.namespaces[10]; </syntaxhighlight> Funkcja powyżej ignoruje wielkość liter w przestrzeni nazw oraz powtórzone odstępy zrealizowane za pomocą spacji lub dolnych myślników. To samo, ale wysokopoziomowe, można utworzyć przy pomocy parametru: {{Code|uchwyt}}, wtedy szablon z rzuci odwołanie do tej tabeli, ale nie zawsze tak jest, czasami, gdy jakieś przestrzenie nie istnieją na polskim {{NS|w=tak|l=tak|pk=mj}}, wtedy odwołujemy się do jej wersji pseudo tej tabeli: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local uchwyt_1 = nazwy_modul.Np{ nazwa = "Szablon", uchwyt = "tak", }; local uchwyt_2 = nazwy_modul.Np{ nazwa = "Template", uchwyt = "tak", }; local uchwyt_3 = nazwy_modul.Np{ nazwa = 10, uchwyt = "tak", }; </syntaxhighlight> Funkcja {{Code|nazwy_modul.Np}} jest bardziej ogólniejsza niż {{LzLua|mw.site.namespaces}}, ponieważ uwzględnia większą liczbę nazw przestrzeni nazw, bo ona uwzględnia nieznane przestrzenie i znane o nieznanych nazwach, i dlatego należy stosować tę funkcję, a nie dedykowaną tabelę z połączoną z metatabelką za pomocą funkcji {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. === {{Code|m.NpDane}} === ==== Odpowiednik szablonowy ==== Odpowiednik szablonowy jest pod nazwą {{s|NpDane}}. Jego parametry są podobne do jego wersji bibliotecznej. Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce. * Szablon {{s|NpDane}} korzysta z funkcji bibliotecznej {{m|Nazwy|NpDane}}, więc parametry obu są wręcz takie same, a nawet podobne. Chociaż ta sama nazwa funkcji w ramce i kodzie {{lpg|Lua}}, to używanie ich nie jest dokładnie takie samo, funkcja biblioteczna nie potrzebuje parametru {{Parametr|wyspecjalizowana|tak}}, a ramka już tak, a szablon {{s|NpDane}}, który korzysta z tej ramki, to nieobecność, lub obecność z wartością pustą, tego parametru powoduje, że przyjmowane są parametry rodzica, a nie dziecka, które wymagają jego niepustość. ==== Funkcja biblioteczna ==== Szablon służy przede wszystkim do tłumaczenia angielskich nazw przestrzeni nazw na ich wersję w jakimś języku i operacji odwrotnej, a także numer przestrzeni nazw na jej nazwę w nim angielską lub w jakimś języku, lub odwrotnie, umożliwia też na przetłumaczenie nazwy przestrzeni nazw lub identyfikatora przestrzeni na jej nazwę polską, jeżeli istnieje. Funkcja {{m|Nazwy|NpDane}} przyjmuje te same parametry, co {{m|Nazwy|Np}}, oprócz wywołania ramkowego: {{Code|uchwyt}} (która w tej funkcji w sposób inny jest zdefiniowana, nie jak w funkcji: {{m|Nazwy|Np}}), jak oba, którego tutaj w nim nie ma, a jako zwykła funkcja biblioteczna może przyjmować ten parametr. Te zmienne działają podobnie w obu procedurach, z tą różnicą, że mamy inny zestaw nazw przestrzeni nazw (czasami bez numerów {{Code|id}} - identyfikatorów tych obsługiwanych przestrzeni nazw, a te podstawowe one je mają, jeżeli da się je powiązać z pierwszą funkcją w drugiej, jedynie w takim przypadku one występują) i można też użyć parametrów dodatkowych, które są niedostępne w pierwszej funkcji, a w drugiej już tak. Dodatkowo on przyjmuje argumenty: {{OpisParametrów | 1 = Adres kodowy projektu siostrzanego lub lokalnego polskiego {{Code|Wikibooks}}:|nagłówek1=tak | 2 = {{Code|klucz projektu}} | _2 = Kody języka i projektu podana w jednej zmiennej oddzielone od siebie dwukropkami, może być dowolna liczba tych kodów. | 3 = {{Code|kod projektu}} | _3 = Kod projektu danego wiki. | 4 = {{Code|kod języka}} | _4 = kod języka danego wiki. | 5 = {{Code|po polsku}} |_5 = Tłumaczy nazwę kanoniczną danej przestrzeni nazw na jej wersję polską, tzn. na język polski, a jeżeli jej wersja polska nie istnieje, to pisze jej wersję w języku angielskim, czyli w postaci nazwy kanonicznej. | 6 = {{Code|awaryjnie}} | _6 = Za pomocą projektu {{NS|l=tak|k=d}} tłumaczy daną nazwę przestrzeni nazw w jednym języku (jej nazwę kanoniczną jakieś przestrzeni nazw) na drugi, gdy wartość jest pusta, to tłumaczy na jej nazwę kanoniczną, jeżeli, przy tym parametrze lub bez, jej wersja w innym danym języku nie istnieje zdefiniowana w module {{m|Nazwy/przestrzenie}}. | 7 = Parametry: {{Code|nazwij projektem}} i {{Code|nazwij dyskusją projektu}} używa się tak samo jak dla funkcji {{m|Nazwy|Np}}, tylko z różnicą, że w funkcji {{m|Nazwy|NpDane}} musimy skorzystać koniecznie z parametru {{Code|kanoniczna}} z wartością niepustą, a wtedy wydrukowane wartości są w postaci wersji kanonicznej w języku angielskim, tak jak z ostatnim szablonem.|nagłówek7=tak }} ===== Używanie kluczy projektu, kodów projektu i kodów języka ===== Kody nazw piszemy, jak zwykle, z małej litery, co jest zalecane, ale można je pisać z liter o dowolnej wielkości. ====== Użycie różnych kodów i ich równoważność ====== Kody projektu i języka możemy pisać ze względu na dwa sposoby, w zależności jakich zmiennych używamy, możemy pisać tzw. grupę tych kodów w jednej zmiennej, wtedy się liczy ostateczny adres do danego projektu w jakieś wersji językowej, tylko jeden, a nie n-wersji danego języka i m-wersji danego projektu, czyli: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local wynik = nazwy_modul.NpDane{ ..., ["klucz projektu"] = "en:de:w:ru:en:q:pt", ... }; </syntaxhighlight> * Najważniejsze są kody projektu końcowe, podobnie ma się sprawa z kodami języków, tutaj kodami projektów są: {{Code|w}} ({{NS|l=tak|k=w}}) i {{Code|q}} ({{NS|l=tak|k=q}}), a kodami języków są: {{Code|en}} ({{lpg|{{#invoke:lang|hasło|en}}}}), {{Code|de}} ({{lpg|{{#invoke:lang|hasło|de}}}}), {{Code|ru}} ({{lpg|{{#invoke:lang|hasło|ru}}}}), {{Code|en}} ({{lpg|{{#invoke:lang|hasło|en}}}}) i {{Code|pt}} ({{lpg|{{#invoke:lang|hasło|pt}}}}), czy końcowy kod projektu jest: {{Code|q}} ({{NS|l=tak|k=q}}) i kod języka {{Code|pt}} ({{lpg|{{#invoke:lang|hasło|pt}}}}). W powyższym przykładzie napisaliśmy mnóstwo kodów w postaci jednej zmiennej, to jest równoważne zapisowi, czyli ostatecznej wersji wspomnianej powyższego zapisu, też zapisaną za pomocą tej samej zmiennej: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local wynik_1 = nazwy_modul.NpDane{ ..., ["klucz projektu"] = "pt:q", ... }; local wynik_2 = nazwy_modul.NpDane{ ..., ["klucz projektu"] = "q:pt", ... }; </syntaxhighlight> Powyższy wynik rozpisujemy na dwie zmienne, w których podajemy tylko pojedyncze kody, a nie grupy, więc widziemy, ża zamiast podawania jednego parametru z interwiki, to możemy to rozbić na dwa parametry kodu projektu i języka, a nie używać to w jednej zmiennej, należy pamiętać, że w tych kodach, może być jedno interwiki, specjalnie dla projektu lub języka, do którego dana zmienna jest przystosowana: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local wynik = nazwy_modul.NpDane{ ..., ["kod projektu"] = "q", ["kod języka"] = "pt", ... }; </syntaxhighlight> ====== Nazwy wyświetlane przy użyciu tych kodów dla przestrzeni głównej ====== Nazwy bez użycia zmiennej powodujące wyświetlanie nazwy przestrzeni nazw '''głównej''' na różnych projektach w postaci nieprzetłumaczonej na język polski, wtedy uzyskujemy niezależnie od projektu wartość pustą, bo takie jest przedstawienie wartości niewyświetlanej przestrzeni głównej na każdym projekcie obsługujący przestrzenie nazw, czyli: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość równą ciągowi pustemu: "": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "", ["klucz projektu"] = "commons", }; ---- Zwraca wartość równą ciągowi pustemu: "": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "", ["kod projektu"] = "commons", }; </syntaxhighlight> A przy użyciu identyfikatora przestrzeni nazw przestrzeni głównej, wtedy uzyskujemy na wyjściu to samo, co powyżej, czyli wartość pustą, bo wartość {{Code|0}} jest odpowiednikiem przestrzeni głównej, czyli poniższe przykłady są odpowiedniami tych powyższych, czyli te dwa przykład, tak można powiedzieć, że to samo robią: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość równą ciągowi pustemu: "": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = 0, ["klucz projektu"] = "commons", }; ---- Zwraca wartość równą ciągowi pustemu: "": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = 0, ["kod projektu"] = "commons", }; </syntaxhighlight> 0 Przy użyciu zmiennej generującej wyświetlanie w postaci znaków o charakterze niepustej, wtedy jeżeli nie ma wartości kanonicznej dla danego języka projektu, to wyswietlana jest wartość {{Np|(main)|link=tak|kanoniczna=tak}}, a dla polskigo projektu {{Np|(main)|link=tak}}, a dla innych języków jest nazwa charakterystyczna dla danego języka pod warunkiem, jeżeli doda się tego obsługę, więc tego przykłady przy użyciu zmiennej {{Code|["wyświetlana"] {{=}} "tak"}}, więc: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość nazwy przestrzeni głównej: "(main)": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "", ["klucz projektu"] = "commons", ["wyświetlana"] = "tak", }; ---- Zwraca wartość nazwy przestrzeni głównej: "(main)": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "", ["kod projektu"] = "commons", ["wyświetlana"] = "tak", }; </syntaxhighlight> Przy użyciu identyfikatora przestrzeni nazw przestrzeni głównej, w takim przypadku uzyskujemy to samo co powyżej, tylko jest inaczej, oznaczana jest wtedy przestrzeń główna, dla tego samego projektu siostrzanego, w wersji charakterystycznej dla danego języka, tutaj dla angielskiego: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość nazwy przestrzeni głównej: "(main)": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = 0, ["klucz projektu"] = "commons", ["wyświetlana"] = "tak", }; ---- Zwraca wartość nazwy przestrzeni głównej: "(main)": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = 0, ["kod projektu"] = "commons", ["wyświetlana"] = "tak", }; </syntaxhighlight> ====== Nazwy wyświetlane przy użyciu tych kodów przetłumaczone je na język polski dla przestrzeni głównej ====== Z wyświetlaniem na ekranie przestrzeni nazw charakteryzujące się ciągiem niepustym mamy podobne wyniki, jak powyżej bez parametry {{Code|["wyświetlana"] {{=}} "tak"}}, tylko nazwa wyświetlana przestrzeni nazw jest po polsku (odpowiednia nazwa w języku polskim), a nie po angielsku (w języku danego projektu): Przy użyciu zmiennej generującej wyświetlanie w postaci znaków o charakterze niepustej, nazw przestrzeni nazw mający nazwy puste, ale zamienione na nazwy wyświetlane, ale w postaci języka polskiego, używając parametru {{Code|["po polsku"] {{=}} "tak"}}: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość nazwy przestrzeni głównej: "(główna)": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "", ["klucz projektu"] = "commons", ["wyświetlana"] = "tak", ["po polsku"] = "tak", }; ---- Zwraca wartość nazwy przestrzeni głównej: "(główna)": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "", ["kod projektu"] = "commons", ["wyświetlana"] = "tak", ["po polsku"] = "tak", }; </syntaxhighlight> Przy użyciu identyfikatora przestrzeni nazw głównej, czyli dla tej samej przestrzeni nazw, co powyżej, tylko ona jest inaczej oznaczana, to możemy zrobić to samo, co powyżej, tylko nazwa główna przestrzeni nazw jest inaczej zapisana, w postaci numerycznej, wtedy otrzymamy wynik taki sam, jak w powyższym przykładzie, bo w obu używaliśmy takiej samej przestrzeni, tylko różnie przepisaną: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość nazwy przestrzeni głównej: "(główna)": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = 0, ["klucz projektu"] = "commons", ["wyświetlana"] = "tak", ["po polsku"] = "tak", }; ---- Zwraca wartość nazwy przestrzeni głównej: "(główna)": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = 0, ["kod projektu"] = "commons", ["wyświetlana"] = "tak", ["po polsku"] = "tak", }; </syntaxhighlight> ====== Nazwy wyświetlane przy użyciu tych kodów dla przestrzeni innej niż główna ====== Nazwy bez użycia zmiennej powodujące wyświetlanie nazwy przestrzeni nazw '''niegłównej''' na różnych projektach w postaci nieprzetłumaczonej na język polski, tylko w wersji charakterystucznej dla języka danego projektu używaną w odwołaniu: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość równą ciągowi niepustemu: "Template": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "Template", ["klucz projektu"] = "commons", }; ---- Zwraca wartość równą ciągowi niepustemu: "Template": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "Template", ["kod projektu"] = "commons", }; </syntaxhighlight> A przy zamianie tej przestrzeni nazw w powyższym przykładzie na numer - identyfikator nazw, czyli {{Code|id}}, to identyfikator przestrzeni nazw, innej niż główna, z jej wersji nazwowej, otrzymamy wynik w postaci nazwy niepustej, bo to nie jest przestrzeń główna, oznaczana zerowy tym identyfikatorem, czyli w postaci tej liczby: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość równą ciągowi niepustemu: "Template": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = 10, ["klucz projektu"] = "commons", }; ---- Zwraca wartość równą ciągowi niepustemu: "Template": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = 10, ["kod projektu"] = "commons", }; </syntaxhighlight> Przy użyciu zmiennej generującej wyświetlanie w postaci znaków, o charakterze niepustości, przy użyciu tego parametru, otrzymujemy wynik, jak powyżej, bo nazwa wyświetlana przestrzeni jest od razu niepusta, bo przestrzeni nazw mają wartość niepustą, więc nie trzeba ich uznawać, że są inne: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość równą nazwie przestrzeni niegłównej: "Template": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "Template", ["klucz projektu"] = "commons", ["wyświetlana"] = "tak", }; ---- Zwraca wartość równą nazwie przestrzeni niegłównej: "Template": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "Template", ["kod projektu"] = "commons", ["wyświetlana"] = "tak", }; </syntaxhighlight> A gdy parametr {{Code|nazwa}} przyjmuje wartość liczbową w postaci identyfikatora {{Code|id}}, innej niż dla przestrzeni głównej, ale zapisaną dla tych samych przestrzeni nazw, jak powyżej, co czyni, że tutaj jest też podobnie, otzrymamy te same wartości, tylko jest inna reprezentacja parametrów wchodzących do funkcji, jak powyżej: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość równą nazwie przestrzeni niegłównej: "Template": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = 10, ["klucz projektu"] = "commons", ["wyświetlana"] = "tak", }; ---- Zwraca wartość równą nazwie przestrzeni niegłównej: "Template": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = 10, ["kod projektu"] = "commons", ["wyświetlana"] = "tak", }; </syntaxhighlight> Widzimy, jedynie dla przestrzeni niepustej, że użycie tego parametru, według przykładów powyżej, jest opcjonalne, a nawet zbędne, bo ten parametr w tym przypadku nic nie zmienia, zmienia tylko dla przestrzeni głównej, którego ciąg charakteryzujący tą przestrzeń jest pusty, a jej wersja wyświetlana posiada za to ciąg niepusty, o jej wersji kanonicznej {{Code|{{Np|(main)|link=tak|kanoniczna=tak}}}}, a w wersji polskiej {{Code|{{Np|(main)|link=tak}}}}, te nazwy można pomiędzy sobą tłumaczyć za pomocą funkcji {{m|Nazwy|NpDane}} lub szablonu {{s|NpDane}}. ====== Nazwy wyświetlane przy użyciu tych kodów przetłumaczone je na język polski dla przestrzeni innej niż główna ====== Z wyświetlaniem na ekranie przestrzeni nazw charakteryzujące ciągiem niepustym mamy podobne wyniki jak powyżej bez parametru {{Code|["wyświetlana"] {{=}} "tak"}}: Przy użyciu zmiennej generującej wyświetlanie w postaci znaków o charakterze niepustej przetłumaczonej na język polski, używając parametrów w postaci pewnych nazw niepusstych, dla projektów innych niż wq języku polskim, ale te przestrzenie nazw tłumaczymyna ich odpowiedniki polskie, jakie istnieją, na projektach właśnie, że polskich: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość równą nazwie przestrzeni niegłównej: "Szablon": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "Template", ["klucz projektu"] = "commons", ["po polsku"] = "tak", }; ---- Zwraca wartość równą nazwie przestrzeni niegłównej: "Szablon": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "Template", ["kod projektu"] = "commons", ["po polsku"] = "tak", }; </syntaxhighlight> Albo przy użyciu numeru {{Code|id}} (identyfikatora przestrzeni nazw), wtedy właśnie robimy to samo, co powyżej, tylko jest inna reprezentacja parametrów, ale ta sama przestrzeń, więc uzyskujemy te same wyniki, czyli o tej samej wartości, mimo, że wizulanie,a by inne parametry: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość równą nazwie przestrzeni niegłównej: "Szablon": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = 10, ["klucz projektu"] = "commons", ["po polsku"] = "tak", }; ---- Zwraca wartość równą nazwie przestrzeni niegłównej: "Szablon": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = 10, ["kod projektu"] = "commons", ["po polsku"] = "tak", }; </syntaxhighlight> Przy użyciu zmiennej generującej wyświetlanie, użzywając parametru wspoianego powyżej, w postaci znaków o charakterze niepustej przy użyciu tego parametru, co sugeruje, że ten argiment nic nie zmienia, ale jedynie wyświetla się to samo, co bez tego parametru: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość równą nazwie przestrzeni niegłównej: "Szablon": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "Template", ["klucz projektu"] = "commons", ["wyświetlana"] = "tak", ["po polsku"] = "tak", }; ---- Zwraca wartość równą nazwie przestrzeni niegłównej: "Szablon": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "Template", ["kod projektu"] = "commons", ["wyświetlana"] = "tak", ["po polsku"] = "tak", }; </syntaxhighlight> A tutaj przy użyciu identyfikatora przestrzeni nazw przestrzeni nazw niegłównej, czyli przestrzeni nazw charakteryzującej się jej wersją niewyświetlaną niepustą, z tymi samymi parametrami, co powyżej, z tymi samymi wartościami, tylko jest inna reprezentacja przestrzeni nazw: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość równą nazwie przestrzeni niegłównej: "Szablon": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = 10, ["klucz projektu"] = "commons", ["wyświetlana"] = "tak", ["po polsku"] = "tak", }; ---- Zwraca wartość równą nazwie przestrzeni niegłównej: "Szablon": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = 10, ["kod projektu"] = "commons", ["wyświetlana"] = "tak", ["po polsku"] = "tak", }; </syntaxhighlight> Widzimy, jedynie dla tej przestrzeni, że użycie wspomnianego tego parametru jest opcjonalne, bo nic w tym przypadki nie zmienia, bo przestrzeń nazw nie jest pusta, lub nie jest reprezentowana inaczej, niż przez liczbę {{Code|0}}. ===== Tłumaczenie nazw przestrzeni nazw z jednego języka na drugi ===== ====== Tłumaczenie nazw obcojęzycznych nazw przestrzeni nazw na jej wersję polską, tzn. jej język polski, i na język angielski, tzn. jej wersje angielską w postaci nazwy kanonicznej, albo identyfikator przestrzeni nazw lub operację przeciwną ====== Tłumaczenie na nazwę kanoniczną w języku angielskim, z nazwy polskiej, czy nazwy w innym języku, tutaj w języku polskim, w jakim ona jest jedynie dostępna, przy użyciu parametru {{Code|kanoniczna {{=}} "tak"}}: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Template": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "Szablon", ["klucz projektu"] = "pl:w", kanoniczna = "tak", }; ---- Zwraca wartość: "Template": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "Szablon", ["kod projektu"] = "w", ["kod języka"] = "pl", kanoniczna = "tak", }; </syntaxhighlight> Tłumaczenie identyfikatora przestrzeni nazw na nazwę kanoniczną, ale przestrzeni nazw są te same, co powyżej, tylko zamiast przestrzeni nazw: "Szablon", mamy to jej idenntyfiator, którym jest liczba: {{Code|10}}, wtedy otrzymamy te same wyniki, co powyżej: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Template": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = 10, ["klucz projektu"] = "pl:w", kanoniczna = "tak", }; ---- Zwraca wartość: "Template": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = 10, ["kod projektu"] = "w", ["kod języka"] = "pl", kanoniczna = "tak", }; </syntaxhighlight> Przypadek odwrotny, do poprzednich, dla tego samego projektu, gdy nie używamy tego parametru, ale przestrzenie nazw są tym razem po angielsku, jako nazwy kanoniczne, które są zamieniane na jej wersją charakterystyczną dla danego projektu, tutaj polską: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "Template", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "Template", ["kod projektu"] = "w", ["kod języka"] = "pl", }; </syntaxhighlight> Identyfikator przestrzeni nazw tłumaczymy na jego nazwę polską - ewentualnie, na wersję języka projektu, i dlatego tutaj używamy języka polskiego, ponieważ mamy do czynienia z projektem polskojęzycznym, bo kod języka projektu wskazuje tutaj na ten język: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = 10, ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = 10, ["kod projektu"] = "w", ["kod języka"] = "pl", }; </syntaxhighlight> ====== Tłumaczenie nazw przestrzeni na jej wersję w innych języku w jakikolwiek projekcie ====== Do tłumaczenia używamy parametru {{Code|awaryjnie}}, której użycie w funkcji {{m|Nazwy|NpDane}}, powoduje skorzystanie z bazy danym projektów {{Code|MediaWiki}}, czyli {{Code|{{NS|l=tak|w=tak|k=en:d|jw=tak}}}} (po angielsku), a inaczej {{Code|{{NS|l=tak|w=tak|k=d}}}} (po polsku): * Przy użyciu nazw przestrzeni nazw w postaci, nie identyfikatorów, nazwanej łańcuchem znaków,możemy daną przestrzeń przetłomaczyć na dany język, nie używając przy tym żadnych stron: {{Code|.json}}, w podstronach modułu {{Code|{{m|Nazwy/}}}}: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "Kategorie", ["klucz projektu"] = "de:w", awaryjnie = "tak", kanoniczna = "tak", }; local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "Category", ["klucz projektu"] = "de:w", awaryjnie = "tak", }; local nazwa_przestrzeni_nazw_3 = nazwy_modul.NpDane{ nazwa = "Категория", ["klucz projektu"] = "ru:w", awaryjnie = "tak", kanoniczna = "tak", }; local nazwa_przestrzeni_nazw_4 = nazwy_modul.NpDane{ nazwa = "Category", ["klucz projektu"] = "ru:w", awaryjnie = "tak", }; </syntaxhighlight> * Jako z ich wersją numeryczną, czyli w postaci identyfikatorów, nazwanej w postaci pewnego numeru, ale przestrzenie nazw są te same, co powyżej, tylko inaczej zapisane, a inne parametry są takie same, czyli z czterech przykładów generują się jedynie dwa, ale wyniki są te same: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = 14, ["klucz projektu"] = "de:w", awaryjnie = "tak", }; local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa 14, ["klucz projektu"] = "ru:w", awaryjnie = "tak", }; </syntaxhighlight> Przykłady tłumaczenia z jednej wersji językowej w danym języku na angielski (wersję kanoniczną) i odwrotnie # {{Code|{{s|NpDane|Kategorie|klucz projektu{{=}}de:w|awaryjnie{{=}}tak|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|Kategorie|klucz projektu=de:w|awaryjnie=tak|kanoniczna=tak}}}} # {{Code|{{s|NpDane|Category|klucz projektu{{=}}de:w|awaryjnie{{=}}tak}}}} → {{Tt|{{NpDane|Category|klucz projektu=de:w|awaryjnie=tak}}}} # {{Code|{{s|NpDane|Категория|klucz projektu{{=}}ru:w|awaryjnie{{=}}tak|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|Категория|klucz projektu=ru:w|awaryjnie=tak|kanoniczna=tak}}}} # {{Code|{{s|NpDane|Category|klucz projektu{{=}}ru:w|awaryjnie{{=}}tak}}}} → {{Tt|{{NpDane|Category|klucz projektu=ru:w|awaryjnie=tak}}}} Przykłady przy użyciu identyfikatorów: # {{Code|{{s|NpDane|14|klucz projektu{{=}}de:w|awaryjnie{{=}}tak}}}} → {{Tt|{{NpDane|Category|klucz projektu=de:w|awaryjnie=tak}}}} # {{Code|{{s|NpDane|14|klucz projektu{{=}}ru:w|awaryjnie{{=}}tak}}}} → {{Tt|{{NpDane|Category|klucz projektu=ru:w|awaryjnie=tak}}}} ===== Użycie parametru {{Code|link}} oraz zależność od projektu i języka, wyświetlanie nazw przestrzeni nazw po polsku ===== Przykłady poniżej i niektóre wywołania funkcji {{m|Nazwy|NpDane}} piszemy przy pomocy parametru {{Code|link}}, który posiłkujemy z {{Code|klucz projektu}}, przykładowo z pomożeniem użycia zmiennej {{Code|po polsku}}, ewentualnie z użyciem argumentu {{Code|kanoniczna}}, co powoduje wyświetlanie się linku do pewnej strony naa tym samym projekcie lub innym,a jeśli mamy nazwę kanoniczną, to otrzymamy w linku nazwę linku właśnie że wyświetlaną, np. w postaci: {{Np|(main)|link=tak}}: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "Szablon", link = "tak", ["klucz projektu"] = "pl:w", }; local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "Szablon", link = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; local nazwa_przestrzeni_nazw_3 = nazwy_modul.NpDane{ nazwa = "Template", link = "tak", ["klucz projektu"] = "en:w", ["po polsku"] = "tak", }; ---- Tutaj nazwa przestrzeni zostanie wyświetlona, jako nazwa linku, po angielsku, czyli w wersji kanonicznej local nazwa_przestrzeni_nazw_4 = nazwy_modul.NpDane{ nazwa = "Template", link = "tak", kanoniczna = "tak", ["klucz projektu"] = "en:w", ["po polsku"] = "tak", }; local nazwa_przestrzeni_nazw_5 = nazwy_modul.NpDane{ nazwa = "", link = "tak", ["klucz projektu"] = "en:w", }; local nazwa_przestrzeni_nazw_6 = nazwy_modul.NpDane{ nazwa = "", link = "tak", kanoniczna = "tak", ["klucz projektu"] = "en:w", }; local nazwa_przestrzeni_nazw_7 = nazwy_modul.NpDane{ nazwa = "", link = "tak", ["klucz projektu"] = "en:w", ["po polsku"] = "tak", }; ---- Tutaj nazwa przestrzeni zostanie wyświetlona, jako nazwa linku, po angielsku, czyli w wersji kanonicznej local nazwa_przestrzeni_nazw_8 = nazwy_modul.NpDane{ nazwa = "", link = "tak", kanoniczna = "tak", ["klucz projektu"] = "en:w", ["po polsku"] = "tak", }; </syntaxhighlight> Teraz będziemy, to robili przy użyciu identyfikatorów przestrzeni nazw, który będziemy tłumaczyć na jego wersję charakterystyczną dla danego projektu, nazwę kanoniczną lub na jego odpowiednik polski, ale mamy te same przykłady, co powyżej, bo te same przestrzenie nazw, tylko z tą różnicą, że ona jest inaczej zapisana, więc otrzymamy te same wyniki, więc: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = 10, link = "tak", ["klucz projektu"] = "pl:w", }; local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = 10, link = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; local nazwa_przestrzeni_nazw_3 = nazwy_modul.NpDane{ nazwa = 10, link = "tak", ["klucz projektu"] = "en:w", ["po polsku"] = "tak", }; ---- Tutaj nazwa przestrzeni zostanie wyświetlona, jako nazwa linku, po angielsku, czyli w wersji kanonicznej local nazwa_przestrzeni_nazw_4 = nazwy_modul.NpDane{ nazwa = 10, link = "tak", kanoniczna = "tak", ["klucz projektu"] = "en:w", ["po polsku"] = "tak", }; local nazwa_przestrzeni_nazw_5 = nazwy_modul.NpDane{ nazwa = 0, link = "tak", ["klucz projektu"] = "en:w", }; local nazwa_przestrzeni_nazw_6 = nazwy_modul.NpDane{ nazwa = 0, link = "tak", kanoniczna = "tak", ["klucz projektu"] = "en:w", }; local nazwa_przestrzeni_nazw_7 = nazwy_modul.NpDane{ nazwa = 0, link = "tak", ["klucz projektu"] = "en:w", ["po polsku"] = "tak", }; ---- Tutaj nazwa przestrzeni zostanie wyświetlona, jako nazwa linku, po angielsku, czyli w wersji kanonicznej local nazwa_przestrzeni_nazw_8 = nazwy_modul.NpDane{ nazwa = 0, link = "tak", kanoniczna = "tak", ["klucz projektu"] = "en:w", ["po polsku"] = "tak", }; </syntaxhighlight> ---- Przykłady funkcji w wyniku są: # {{Code|{{s|NpDane|nazwa{{=}}Szablon|link{{=}}tak|klucz projektu{{=}}pl:w}}}} → {{Tt|{{NpDane|nazwa=Szablon|link=tak|klucz projektu=pl:w}}}} # {{Code|{{s|NpDane|nazwa{{=}}Szablon|link{{=}}tak|klucz projektu{{=}}pl:w|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=Szablon|link=tak|klucz projektu=pl:w|kanoniczna=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}|link{{=}}tak|klucz projektu{{=}}pl:w}}}} → {{Tt|{{NpDane|nazwa=|link=tak|klucz projektu=pl:w}}}} # {{Code|{{s|NpDane|nazwa{{=}}|link{{=}}tak|klucz projektu{{=}}pl:w|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=|link=tak|klucz projektu=pl:w|kanoniczna=tak}}}} Gdy parametr {{Code|nazwa}} jest liczbą, odpowiedniki tych samych przykładów, co powyżej, tylko przestrzeń nazw jest w postaci numerycznej: # {{Code|{{s|NpDane|nazwa{{=}}10|link{{=}}tak|klucz projektu{{=}}pl:w}}}} → {{Tt|{{NpDane|nazwa=10|link=tak|klucz projektu=pl:w}}}} # {{Code|{{s|NpDane|nazwa{{=}}10|link{{=}}tak|klucz projektu{{=}}pl:w|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=10|link=tak|klucz projektu=pl:w|kanoniczna=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}0|link{{=}}tak|klucz projektu{{=}}pl:w}}}} → {{Tt|{{NpDane|nazwa=0|link=tak|klucz projektu=pl:w}}}} # {{Code|{{s|NpDane|nazwa{{=}}0|link{{=}}tak|klucz projektu{{=}}pl:w|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=0|link=tak|klucz projektu=pl:w|kanoniczna=tak}}}} ---- ---- Inne przykłady, projektu niepolskiego, ale mającej jego wersje polską: # {{Code|{{s|NpDane|nazwa{{=}}Template|link{{=}}tak|klucz projektu{{=}}en:w|po polsku{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=Template|link=tak|klucz projektu=en:w|po polsku=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}Template|link{{=}}tak|klucz projektu{{=}}en:w|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=Template|link=tak|klucz projektu=en:w|kanoniczna=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}|link{{=}}tak|klucz projektu{{=}}en:w|po polsku{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=|link=tak|klucz projektu=en:w|po polsku=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}|link{{=}}tak|klucz projektu{{=}}en:w|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=|link=tak|klucz projektu=pl:w|kanoniczna=tak}}}} Gdy parametr {{Code|nazwa}} jest liczbą, odpowiedniki przykładów powyższych z innym przedstawieniem przestrzeni nazw: # {{Code|{{s|NpDane|nazwa{{=}}10|link{{=}}tak|klucz projektu{{=}}en:w|po polsku{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=10|link=tak|klucz projektu=en:w|po polsku=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}10|link{{=}}tak|klucz projektu{{=}}en:w|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=10|link=tak|klucz projektu=en:w|kanoniczna=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}0|link{{=}}tak|klucz projektu{{=}}en:w|po polsku{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=0|link=tak|klucz projektu=en:w|po polsku=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}0|link{{=}}tak|klucz projektu{{=}}en:w|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=0|link=tak|klucz projektu=pl:w|kanoniczna=tak}}}} ---- ---- A dla projektu niemającej wersji polskiej, np. tylko wersję angielską: # {{Code|{{s|NpDane|nazwa{{=}}Template|link{{=}}tak|klucz projektu{{=}}commons|po polsku{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=Template|link=tak|klucz projektu=commons|po polsku=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}Template|link{{=}}tak|klucz projektu{{=}}commons|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=Template|link=tak|klucz projektu=commons|kanoniczna=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}|link{{=}}tak|klucz projektu{{=}}commons|po polsku{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=|link=tak|klucz projektu=commons|po polsku=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}|link{{=}}tak|klucz projektu{{=}}commons|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=|link=tak|klucz projektu=commons|kanoniczna=tak}}}} Gdy parametr {{Code|nazwa}} jest liczbą, wtedy mamy te same przykłady, co powyżej, tylko ta sama przestrzeń nazw jest w innej postaci przedstawiona: # {{Code|{{s|NpDane|nazwa{{=}}10|link{{=}}tak|klucz projektu{{=}}commons|po polsku{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=10|link=tak|klucz projektu=commons|po polsku=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}10|link{{=}}tak|klucz projektu{{=}}commons|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=10|link=tak|klucz projektu=commons|kanoniczna=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}0|link{{=}}tak|klucz projektu{{=}}commons|po polsku{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=0|link=tak|klucz projektu=commons|po polsku=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}0|link{{=}}tak|klucz projektu{{=}}commons|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=0|link=tak|klucz projektu=commons|kanoniczna=tak}}}} ===== Zamiana przestrzeni nazw przedmiotowej na dyskusji lub przeciwnie, i transformacje tożsame ===== * Używać tu będziemy dodatkowo parametrów: {{Code|przedmiotowa}} - zamiany przestrzeni nazw na przedmiotową, czy: {{Code|dyskusja}} - na dyskusji. Można też przechodzić z tej samej przestrzeni nazw w nią samą, lub do niego skojarzonej, tzn. z przedmiotowej do dyskusji lub odwrotnie, wtedy w tym przypadku otrzymujemy nazwę po polsku, dla poskich projektów, dla projektów w danym języku, na nazwę w danym języku, przykłady: <syntaxhighlight lang="lua"> local nazwy_modul = require("Module:Nazwy"); -- Gdy nazwą przestrzeni jest nazwa niekanoniczna: ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_przedmotowej_1 = nazwy_modul.NpDane{ nazwa = "Dyskusja szablonu", przedmiotowa = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_dyskusji_1 = nazwy_modul.NpDane{ nazwa = "Szablon", dyskusja = "tak", ["klucz projektu"] = "pl:w", }; -- Gdy nazwą przestrzeni jest nazwa kanoniczna ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_przedmotowej_2 = nazwy_modul.NpDane{ nazwa = "Template talk", przedmiotowa = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_dyskusji_2 = nazwy_modul.NpDane{ nazwa = "Template", dyskusja = "tak", ["klucz projektu"] = "pl:w", }; -- Gdy prrzestrzeń nazw jest w postaci jej numeru id ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_przedmotowej_3 = nazwy_modul.NpDane{ nazwa = 11, przedmiotowa = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_dyskusji_3 = nazwy_modul.NpDane{ nazwa = 10, dyskusja = "tak", ["klucz projektu"] = "pl:w", }; </syntaxhighlight> Gdy użyjemy dodatkowo parametr {{Code|kanoniczna}}, wtedy otrzymujemy te nazwy w postaci nazwy w języku angielskim (kanoniczne) tych przestrzeni nazw, są te same przykłady, co powyżej, tylko jest inna wersja językowa w wyniku tej samej otrzymanej przestrzeni nazw: <syntaxhighlight lang="lua"> local nazwy_modul = require("Module:Nazwy"); -- Gdy nazwą przestrzeni jest nazwa niekanoniczna: ---- Zwraca wartość: "Template": local nazwa_przestrzeni_przedmotowej_1 = nazwy_modul.NpDane{ nazwa = "Dyskusja szablonu", przedmiotowa = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Template talk": local nazwa_przestrzeni_dyskusji_1 = nazwy_modul.NpDane{ nazwa = "Szablon", dyskusja = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", -- Gdy nazwą przestrzeni jest nazwa kanoniczna: ---- Zwraca wartość: Template": local nazwa_przestrzeni_przedmotowej_2 = nazwy_modul.NpDane{ nazwa = "Template talk", przedmiotowa = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Template talk": local nazwa_przestrzeni_dyskusji_2 = nazwy_modul.NpDane{ nazwa = "Template", dyskusja = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; -- Gdy przestrzeń nazw jest w postaci jej numeru id: ---- Zwraca wartość: ""Template": local nazwa_przestrzeni_przedmotowej_3 = nazwy_modul.NpDane{ nazwa = 11, przedmiotowa = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Template talk": local nazwa_przestrzeni_dyskusji_3 = nazwy_modul.NpDane{ nazwa = 10, dyskusja = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; </syntaxhighlight> Przejście z tej samej przestrzeni na tą samą możemy uzyskać to wtedy, tzw. przejście tożsamościowe, poprzez tłumaczenie nazw dyskusji na dysusji, i nazw przedmiotowych na przedmiotowe, dla róznych projektów, nie tylko polskich, a tutaj mamy dla języka polskiego, tylko repezentacja językowa może być inna, tutaj jest ta polska (w wersji niekanonicznej) i angielska (w wersji kanonicznej): <syntaxhighlight lang="lua"> local nazwy_modul = require("Module:Nazwy"); -- Gdy nazwą przestrzeni jest nazwa niekanoniczna, gdy w ty przypadku chcemy uzyskać nazwę charakterystyczną dla danego języka danego projektu: ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_przedmotowej_1 = nazwy_modul.NpDane{ nazwa = "Szablon", przedmiotowa = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_dyskusji_1 = nazwy_modul.NpDane{ nazwa = "Dyskusja szablonu", dyskusja = "tak", ["klucz projektu"] = "pl:w", }; -- Gdy nazwą przestrzeni jest nazwą kanoniczną: ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_przedmotowej_2 = nazwy_modul.NpDane{ nazwa = "Template", przedmiotowa = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_dyskusji_2 = nazwy_modul.NpDane{ nazwa = "Template talk", dyskusja = "tak", ["klucz projektu"] = "pl:w", }; -- Gdy przestrzeń nazw jest w postaci jej numeru id: ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_przedmotowej_3 = nazwy_modul.NpDane{ nazwa = 10, przedmiotowa = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_dyskusji_3 = nazwy_modul.NpDane{ nazwa = 11, dyskusja = "tak", ["klucz projektu"] = "pl:w", }; </syntaxhighlight> Gdy użyjemy dodatkowo parametr {{Code|kanoniczna}}, uzyskamy nazwę angielską danej przestrzeni nazw, nawet gdy to jest przestrzeń podana w języku polskim, dla polskiego projektu, lub w jezyku charakterystycznym dla danego projektu, jeżeli mamy to w bazie przestrzeni nazw w formie pliku {{Code|.json}}, podane w podstronach modułu {{m|Nazwy/}}, to te nazwy wtedy obsługuje: <syntaxhighlight lang="lua"> local nazwy_modul = require("Module:Nazwy"); -- Gdy nazwą przestrzeni jest nazwą niekanoniczną: ---- Zwraca wartość: "Template": local nazwa_przestrzeni_przedmotowej_1 = nazwy_modul.NpDane{ nazwa = "Szablon", przedmiotowa = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Template talk": local nazwa_przestrzeni_dyskusji_1 = nazwy_modul.NpDane{ nazwa = "Dyskusja szablonu", dyskusja = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; -- Gdy nazwą przestrzeni jest nazwą kanoniczną: ---- Zwraca wartość: Template": local nazwa_przestrzeni_przedmotowej_2 = nazwy_modul.NpDane{ nazwa = "Template", przedmiotowa = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Template talk": local nazwa_przestrzeni_dyskusji_2 = nazwy_modul.NpDane{ nazwa = "Template talk", dyskusja = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; -- Gdy przestrzeń nazw jest w postaci jej numeru id: ---- Zwraca wartość: "Template": local nazwa_przestrzeni_przedmotowej_3 = nazwy_modul.NpDane{ nazwa = 10, przedmiotowa = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", } ---- Zwraca wartość: "Template talk": local nazwa_przestrzeni_dyskusji_3 = nazwy_modul.NpDane{ nazwa = 11, dyskusja = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; </syntaxhighlight> ===== Nazwy przestrzeni z myślnikami dolnymi ===== Jeżeli nazwy danych przestrzeni, niezależnie, czy są w postaci niekanonicznej, czy nie, ale jeżeli w nazwie zawierają spację, to one jako w wyniku zamiast nich będą miały dolny myślnik zamiast spacji, gdy użyjemy parametru: {{Code|["z myślnikami dolnymi"] {{=}} "tak"}}, czyli: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Dyskusja_szablonu": local nazwa_przestrzeni_1 = nazwy_modul.NpDane{ nazwa = "Dyskusja szablonu", ["z myślnikami dolnymi"] = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Dyskusja_szablonu": local nazwa_przestrzeni_2 = nazwy_modul.NpDane{ nazwa = "Template talk", ["z myślnikami dolnymi"] = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Template_talk";: local nazwa_przestrzeni_3 = nazwy_modul.NpDane{ nazwa = "Dyskusja szablonu", kanoniczna = "tak", ["z myślnikami dolnymi"] = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Template_talk": local nazwa_przestrzeni_4 = nazwy_modul.NpDane{ nazwa = "Template talk", kanoniczna = "tak", ["z myślnikami dolnymi"] = "tak", ["klucz projektu"] = "pl:w", }; </syntaxhighlight> ===== Uzyskiwanie kanonicznej nazwy projektu, nazwy przedmiotowej i jej dyskusji, z jej odpowiednika nazwy przestrzeni nazw ===== Dla przestrzeni nazw: {{NpDane|Wikipedia|link=tak|klucz projektu=pl:w}}, jej nazwy projektowej: {{NpDane|Wikipedia|link=tak|kanoniczna=tak|nazwij projektem=tak|klucz projektu=pl:w}} możemy uzyskać, gdy dla funkcji {{m|Nazwy|NpDane}} podamy parametr: {{Code|["nazwij projektem"] {{=}} "tak"}}, dla przestrzeni przedmiotowej lub dyskusji: {{NpDane|Wikipedia talk|link=tak|klucz projektu=pl:w}}, jej nazwy projektowej: {{NpDane|Wikipedia talk|link=tak|kanoniczna=tak|nazwij dyskusją projektu=tak|klucz projektu=pl:w}}, gdy podamy parametr {{Code|["nazwij dyskusją projektu"] {{=}} "tak"}}, czyli: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Wikipedia": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "Wikipedia", ["nazwij projektem"] = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Project": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "Wikipedia", ["nazwij projektem"] = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Project": local nazwa_przestrzeni_nazw_3 = nazwy_modul.NpDane{ nazwa = "Dyskusja Wikipedii", ["nazwij projektem"] = "tak", przedmiotowa = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Dyskusja Wikipedii": local nazwa_przestrzeni_nazw_4 = nazwy_modul.NpDane{ nazwa = "Wikipedia", ["nazwij dyskusją projektu"] = "tak", dyskusja = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Project talk": local nazwa_przestrzeni_nazw_5 = nazwy_modul.NpDane{ nazwa = "Dyskusja Wikipedii", ["nazwij dyskusją projektu"] = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Project talk": local nazwa_przestrzeni_nazw_6 = nazwy_modul.NpDane{ nazwa = "Wikipedia", ["nazwij dyskusją projektu"] = "tak", dyskusja = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; </syntaxhighlight> ===== Różne wersje sprawdzania istnienia przestrzeni nazw ===== ====== Sprawdzanie, czy dana przestrzeń jest poprawnie podane, czy istnieje ====== Możemy sprawdzić, istnienie podanej przestrzeni nazw poprzez użycie parametru {{Code|istnieje}} z wartością niepustą, wtedy dla obu jej wartości uzyskujemy wyniki, wskazujać, czy istnieją przestrzenie nazw istniejące i które nie mają prawa istnieć z racji bytu, w pierwszym przypadku otrzymamy treściwy wynik, a w drugim komunikatro błędzie: <syntaxhighlight lang="lua">0 local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "Szablon", istnieje = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Moja przestrzeń": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "Moja przestrzeń", istnieje = "", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "(błąd)": local nazwa_przestrzeni_nazw_3 = nazwy_modul.NpDane{ nazwa = "Moja przestrzeń", istnieje = "tak", ["klucz projektu"] = "pl:w", }; </syntaxhighlight> Gdy dana przestrzeń nie istnieje przy użyciu wartości niepustej parametru {{Code|istnieje}}, wtedy otrzymujemy błąd funkcji w postaci tekstu {{Code|(błąd)}}, a gdy nie podamy tego parametru, to otrzymamy nazwę sformatowaną danej nieznanej przestrzeni nazw po usunięciu wszystkich spacji lub dolnych myślników na początku i końcu ciągu oraz zbędnych wewnątrz tego ciągu i zastąpieniu ich kolejnych jedną spacją. A gdy jednak przestrzeń nazw istnieje, to funkcja zachowuje się tak, jakby nie podano tego parametru. ====== Łatwe sprawdzanie istnienia danej przestrzeni nazw ====== Sprawdzamy tutaj istnienie podanej przestrzeni nazw w parserach wikikodu {{Code|MediaWiki}}, wtedy dla nieistniejącej przestrzeni nazw otrrzymamy wynik pusty, a dla istniejącej już nie, wyjątkiem jest przestrzeń główna, dla której wartość otrzymana jest pusta, co nie trudno jest odróżnić od stanu błędu funkcji, chyba, że użyjemy pewnego parametru opisywanego poniżej: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "Szablon", istnieje = "tak", ["wynik błędu nietekstowy"] = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Moja przestrzeń": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "Moja przestrzeń", istnieje = "", ["wynik błędu nietekstowy"] = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: nil: local nazwa_przestrzeni_nazw_3 = nazwy_modul.NpDane{ nazwa = "Moja przestrzeń", istnieje = "tak", ["wynik błędu nietekstowy"] = "tak", ["klucz projektu"] = "pl:w", }; </syntaxhighlight> W kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}} powyższe wywołanie przy nieznanych przestrzeniach przyjmuje wartość {{Code|nil}} (ostatni przykład), a wikikodzie w szablonach wartość pustą: "". A jeżeli chcemy sprawdzić, za pomocą funkcji parsera wikikodu: {{Code|{{s|#if:coś|wtedy|przeciwnie}}}}, używając odpowiednika szablonowego {{s|NpDane}}, wtedy musimy użyć parametru: {{Code|["wynik błędu nietekstowy"] {{=}} "tak"}}, używany z: {{Code|istnieje {{=}} "tak"}}, gdy dana przestrzeń nie istnieje, wtedy uzyskamy wartość pustą (bo wartość {{Code|nil}} jest tłumaczone na to), a żeby odróżnić ją od nazwy przestrzeni nazw głównej, to należy dodatkowo użyć: {{Code|["wyświetlana"] {{=}} "tak"}}, wtedy dla wartości pustej tej nazwy przestrzeni nazw, uzyskujemy w wyniku czego nie wartość pustą, czyli: {{Code|(główna)}} dla projektów polskich, lub po użyciu parametru {{Code|["po polsku"] {{=}} "tak"}} z wartością niepustą albo {{Code|(main)}} dla przestrzeni angielskich bądź innych, gdy nie ma obsługi w bazie przestrzeni nazw, tę nazwę można uzyskać też przy parametrze {{Code|kanoniczna {{=}} "tak"}} dla każdego obsługiwanego projektu {{Strong|wiki}}, więc przy takich realiach łatwo to odróżnić od komunikatu błędu tej funkcji. ===== Uzyskiwanie uchwytu danej przestrzeni nazw, analogicznie do funkcji {{Code|mw.site.namespaces}} (ale w sposób inny sformułowana), ale też z innym zestawem parametrów ===== Uchwyt niskopoziomowy do danej przestrzeni nazw nie można uzyskać przy pomocy kodu z: {{Code|mw.site.namespaces}}, ponieważ jest on dla przestrzeni na bieżącym projekcie, a tutaj mamy siostrzany. Funkcja uzyskująca uchwyt ignoruje wielkość liter w przestrzeni nazw oraz powtórzone odstępy zrealizowane za pomocą spacji lub dolnych myślników. To wysokopoziomowe uzyskanie uchwytu można utworzyć przy pomocy parametru: {{Code|uchwyt}}: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local uchwyt_1 = nazwy_modul.NpDane{ nazwa = "Szablon", uchwyt = "tak", ["klucz projektu"] = "pl:w", }; local uchwyt_2 = nazwy_modul.NpDane{ nazwa = "Template", uchwyt = "tak", ["klucz projektu"] = "pl:w", }; local uchwyt_3 = nazwy_modul.NpDane{ nazwa = 10, uchwyt = "tak", ["klucz projektu"] = "pl:w", }; </syntaxhighlight> Funkcja {{Code|nazwy_modul.NpDane}} jest bardziej ogólniejsza niż {{Code|mw.site.namespaces}} na projekcie bieżącym, ponieważ ona uwzględnia inne projekty niż polski {{NS|l=tak|w=tak}}, bo uwzględnia większą liczbę nazw przestrzeni nazw, czyli ona obejmuje wszystkie znane przestrzenie nazw, i dlatego należy stosować tę funkcję, a nie dedykowaną tabelę z połączoną z metatabelką za pomocą funkcji {{lpg|Lua}}. == Funkcje nazw serwisowych projektów siostrzanych polskiego {{NS|w=tak|l=tak|pk=d}} == === {{Code|m.NAZWASERWISU()}} === ==== Odpowiednik szablonowy ==== Odpowiednik szablonowy jest pod nazwą {{s|NAZWASERWISU}} (skrót: {{s|NS}}). Jego parametry są podobne do jego wersji bibliotecznej. Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce. ==== Funkcja biblioteczna ==== Szablon jest używany do uzyskania nazwy serwisu danej wiki, ewentualnie w postaci linku do strony głównej projektu danej wiki lub do artykułu o danej wiki na {{lpg|Wikipedia|Wikipedii}}, w jakieś podanej wersji językowej. {{OpisParametrów | 1 = Parametry podstawowe...| nagłówek1=tak | 2 = {{Parametr|wyspecjalizowana|tak}} | _2 = Tylko dla tej funkcji wywołanej w postaci ramki w wikikodzie w szablonach, gdy do niej wsadzamy bezpośrednio jako dzieci, a w przypadku z rodzica to ten parametr jest niepotrzebny lub powinien przyjmować wartość pustą, | 3 = Inne parametry...| nagłówek3=tak | 4 = Ta funkcja dalsze ma takie same parametry, co szablon w jego pełnej nazwie: {{s|NAZWASERWISU}}, lub skrótowej: {{s|NS}}.|nagłówek4=tak | 5 = Wszystkie powyższe zmienne są opcjonalne|nagłówek5=tak }} ===== Opis parametrów użytych razem z parametrem {{Code|link}} ===== Szablon przyjmuje parametr opcjonalny {{Code|link}} ({{s|NS|l{{=}}tak}}), dzięki któremu jest wyświetlany link, do strony głównej tego projektu, w postaci: {{Code|{{NS|l=tak}}}}, o nazwie linku, będącą jednocześnie nazwą serwisu projektu '''{{NS|l=tak}}'''. Gdy dodamy parametr {{Code|wikipedia{{=}}tak}} do wywołania {{Code|{{s|NS|l{{=}}tak|w{{=}}tak}}}}, wtedy uzyskamy wynik: {{Code|{{NS|l=tak|w=tak}}}}, w innym przypadku, gdy linkujemy do angielskiej {{NS|w=tak|l=tak|pk=mj|k=tak}}, wtedy dla wywołania {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|kj{{=}}en}}}} mamy: {{Code|{{NS|l=tak|w=tak|kj=en}}}}, a w przypadku angielskiego {{NS|w=tak|l=tak|pk=d}} dla wikikodu {{Code|{{s|NS|l{{=}}tak|kj{{=}}en}}}} mamy wynik w postaci: {{Code|{{NS|l=tak|kj=en}}}}, a jeśli użyjemy parametru {{Code|kod projektu}}, wtedy wywołanie {{Code|{{s|NS|link{{=}}tak|kp{{=}}s}}}}, to mamy: {{Code|{{NS|l=tak|kp=s}}}}, a gdy dodamy dodatkowo {{Code|wikipedia{{=}}tak}}, zatem {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|kp{{=}}s}}}} jest o wyniku: {{Code|{{NS|l=tak|w=tak|kp=s}}}}. {{OpisParametrów | 1 = Wyniki z parametrem: {{Parametr|link|tak}}, zostały obtoczone znacznikiem: {{Tag|code}}, dla odróżnienia rezultatu od reszty tekstu.|nagłówek1=tak }} ===== Wywołania szablonu z tekstem z małymi literami po linku (parametr: {{Code|po}}) i z dowolnym tekstem w nazwie linku (parametr: {{Code|za}}) ===== {{OpisParametrów | 1 = Parametr: {{Parametr|link|tak}}, w szablonie: {{s|NAZWASERWISU}}, mówi, że ma być podany link do strony głównej projektu lub artykułu na {{NS|l=tak|k=w}}. Można w nie podać parametr: {{Parametr|po|<łańcuch tekstowy>}}, który jest za linkiem, podobnie: {{Parametr|za|<łańcuch tekstowy>}}, który jest w nazwie linku, ale względem jej originalnej nazwy za nim.|nagłówek1=tak }} ====== Proste przykłady użycia, z linkiem do projektu bieżącego, przy użyciu parametru {{Code|link}} ====== Gdy chcemy wyświetlić link do polskiego projektu {{NS|w=tak|l=tak|pk=mj}} do jego strony głównej. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local link_1 = nazwy_modul.NAZWASERWISU{ link = "tak", po = "a", }; local link_2 = nazwy_modul.NAZWASERWISU{ link = "tak", za = "a", }; </syntaxhighlight> ; Analogiczne wywołanie szablonu{{Dk}} * {{Code|{{s|NS|l{{=}}tak|p{{=}}a}}}} → {{Tt|{{NS|l=tak|p=a}}}}, * {{Code|{{s|NS|l{{=}}tak|z{{=}}a}}}} → {{Tt|{{NS|l=tak|z=a}}}}. ; Kod wywołania tych szablonów: ;; Dla wywołania {{Code|{{s|NS|l{{=}}tak|p{{=}}a}}}}{{Dk}} {{PreNowiki|{{NS|l=tak|p=a}}}} ;; Dla wywołania {{Code|{{s|NS|l{{=}}tak|z{{=}}a}}}}{{Dk}} {{PreNowiki|{{NS|l=tak|z=a}}}} ====== Proste przykłady użycia, z linkiem do polskiej {{NS|w=tak|l=tak|k=w|pk=mj}}, przy użyciu parametru {{Code|link}} ====== Gdy chcemy wyświetlić link do artykułu o {{NS|w=tak|l=tak|k=b|pk=mj}} na polskiej {{NS|w=tak|l=tak|k=w|pk=mj}}. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local link_1 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", po = "a", }; local link_2 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", za = "a", }; </syntaxhighlight> ; Analogiczne wywołanie szablonu{{Dk}} * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|p{{=}}a}}}} → {{Tt|{{NS|l=tak|w=tak|p=a}}}}, * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|z{{=}}a}}}} → {{Tt|{{NS|l=tak|w=tak|z=a}}}}. ; Kod wywołania tych szablonów: ;; Dla wywołania {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|p{{=}}a}}}}{{Dk}} {{PreNowiki|{{NS|l=tak|w=tak|p=a}}}} ;; Dla wywołania {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|z{{=}}a}}}}{{Dk}} {{PreNowiki|{{NS|l=tak|w=tak|z=a}}}} ====== Przykłady użycia, z linkiem do obcojęzycznej {{NS|w=tak|l=tak|k=w|pk=mj}}, z polską podanego nazwą projektu, przy użyciu parametru {{Code|link}} ====== Gdy chcemy wyświetlić link do artykułu o {{NS|w=tak|l=tak|k=b|pk=mj}} na podanej obcojęzycznej {{NS|w=tak|l=tak|k=w|pk=mj}} podany za pomocą parametru {{Code|["klucz projektu"] {{=}} "en:s"}}. Jest to projekt: {{NS|l=tak|k=en:s}}, którego językiem jest: {{lpg|{{#invoke:lang|hasło|es}}}}. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local link_1 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", ["klucz projektu"] = "en:s", po = "a", }; local link_2 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", ["klucz projektu"] = "en:s", za = "a", }; </syntaxhighlight> ; Analogiczne wywołanie szablonu{{Dk}} * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|k{{=}}en:s|p{{=}}a}}}} → {{Tt|{{NS|l=tak|w=tak|k=en:s|p=a}}}}, * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|k{{=}}en:s|z{{=}}a}}}} → {{Tt|{{NS|l=tak|w=tak|k=en:s|z=a}}}}. ; Kod wywołania tych szablonów: ;; Dla wywołania {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|k{{=}}en:s|p{{=}}a}}}}{{Dk}} {{PreNowiki|{{NS|l=tak|w=tak|k=en:s|p=a}}}} ;; Dla wywołania {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|k{{=}}en:s|z{{=}}a}}}}{{Dk}} {{PreNowiki|{{NS|l=tak|w=tak|k=en:s|z=a}}}} ====== Przykłady użycia, z linkiem do obcojęzycznej {{NS|w=tak|l=tak|k=w|pk=mj}}, z niepolską podanego nazwą projektu, przy użyciu parametru {{Code|link}} ====== Gdy chcemy wyświetlić link do artykułu o {{NS|w=tak|l=tak|k=b|pk=mj}} do podanej obcojęzycznej {{NS|w=tak|l=tak|k=w|pk=mj}} podany za pomocą parametru {{Code|["klucz projektu"] {{=}} "en:s"}}. A nazwa linku ma być podana w języku tego projektu. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local link_1 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", ["klucz projektu"] = "en:s", ["w języku wiki"] = "tak", po = "a", }; local link_2 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", ["klucz projektu"] = "en:s", ["w języku wiki"] = "tak", za = "a", }; </syntaxhighlight> ; Analogiczne wywołanie szablonu{{Dk}} * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|k{{=}}en:s|jw{{=}}tak|p{{=}}a}}}} → {{Tt|{{NS|l=tak|w=tak|k=en:s|jw=tak|p=a}}}}, * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|k{{=}}en:s|jw{{=}}tak|z{{=}}a}}}} → {{Tt|{{NS|l=tak|w=tak|k=en:s|jw=tak|z=a}}}}. ; Kod wywołania tych szablonów: ;; Dla wywołania {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|k{{=}}en:s|jw{{=}}tak|p{{=}}a}}}}{{Dk}} {{PreNowiki|{{NS|l=tak|w=tak|k=en:s|jw=tak|p=a}}}} ;; Dla wywołania {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|k{{=}}en:s|jw{{=}}tak|z{{=}}a}}}}{{Dk}} {{PreNowiki|{{NS|l=tak|w=tak|k=en:s|jw=tak|za=a}}}} ===== Wywołania szablonu dotyczące, w {{NS|w=tak|l=tak|k=w|pk=mj}} iub nie, kodzie dla projektu {{NS|w=tak|l=tak|pk=m}} dla różnych wersji językowych ===== ====== Przykłady użycia funkcji {{Code|nazwy_modul.NAZWASERWISU()}} ====== Gdy chcemy podać nazwę projektu w postaci linku do artykułu strony głównej na {{NS|w=tak|l=tak|pk=mj}} lub artykułu na polskiej lub obcojęzycznej {{NS|w=tak|l=tak|k=w|pk=mj}}. Do jakiej {{NS|w=tak|l=tak|k=w|pk=mj}} ma być link, to wskazuje kod języka, np.: {{Code|["kod języka"] {{=}} "en"}}. Gdy nie podamy tego kodu, to linkujemy tylko do polskiego {{NS|w=tak|l=tak|pk=mj}} lub do polskiej {{NS|w=tak|l=tak|k=w|pk=mj}} (jeżeli podamy parametr {{Code|wikipedia {{=}} "tak"}}). A gdy podany jest ten kod, to możemy linkować nie tylko do polskich projektów siostrzanych polskiego {{NS|w=tak|l=tak|pk=mj}} (ale tylko różnych jego wersji językowych), ale też można linkować do obcojęzycznych projektów, którym jest Wikipedia do artykułu o tym projekcie. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local link_1 = nazwy_modul.NAZWASERWISSU{}; }; local link_2 = nazwy_modul.NAZWASERWISU{ link = "tak", }; local link_3 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", }; local link_4 = nazwy_modul.NAZWASERWISU{ link = "tak", ["kod języka"] = "pl", }; local link_5 = nazwy_modul.NAZWASERWISU{ link = "tak", ["kod języka"] = "en", }; local link_6 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", ["kod języka"] = "pl", }; local link_7 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", ["kod języka"] = "en", }; </syntaxhighlight> ====== Analogiczne wywołanie szablonu ====== * {{Code|{{s|NS}}}} → {{Tt|{{NS}}}}, * {{Code|{{s|NS|l{{=}}tak}}}} → {{Tt|{{NS|l=tak}}}}, * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak}}}} → {{Tt|{{NS|l=tak|w=tak}}}}, * {{Code|{{s|NS|l{{=}}tak|kj{{=}}pl}}}} → {{Tt|{{NS|l=tak|kj=pl}}}}, * {{Code|{{s|NS|l{{=}}tak|kj{{=}}en}}}} → {{Tt|{{NS|l=tak|kj=en}}}}, * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|kj{{=}}pl}}}} → {{Tt|{{NS|l=tak|w=tak|kj=pl}}}}, * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|kj{{=}}en}}}} → {{Tt|{{NS|l=tak|w=tak|kj=en}}}}. ===== Wywołanie szablonu dotyczące innego projektu niż ten ===== ====== Przykłady użycia funkcji {{Code|nazwy_modul.NAZWASERWISU()}} ====== Ale też możemy linkować do stron głównych innych projektów niż {{NS|w=tak|l=tak|pk=m}}. Robimy to za pomocą parametru: {{Code|["kod projektu"] {{=}} "s"}}, nie licąc parametru języka, ale też możemy linkować do artykułu o danym projekcie na {{NS|w=tak|l=tak|k=w|pk=mj}}. A jeżeli podamy kod języka {{Code|["kod języka"] {{=}} "en"}}, wtedy linkujemy do angielskich projektów, w tym również do {{NS|w=tak|l=tak|k=w|pk=mj}}. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Tutaj linkujemy do Wikiźródeł do jej strony głównej local linki_1 = nazwy_modul.NAZWASERWISU{ link = "tak", ["kod projektu"] = "s", }; --- Co powyżej, tylko do artykułu na Wikipedii o Wikiźródłach local linki_2 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", ["kod projektu"] = "s", }; -- Tutaj linkujemy do Wikibooksa do jej strony głównej w jakieś jej wersji językowej local linki_3 = nazwy_modul.NAZWASERWISU{ link = "tak", ["kod języka"] = "pl", ["kod projektu"] = "s", }; local linki_4 = nazwy_modul.NAZWASERWISU{ link = "tak", ["kod języka"] = "en", ["kod projektu"] = "s", }; -- Jak powyżej, tylko do artykułu Wikipedii w jakieś wersji językowej o Wikiźródłach local linki_5 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", ["kod języka"] = "pl", ["kod projektu"] = "s", }; local linki_6 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", ["kod języka"] = "en", ["kod projektu"] = "s", }; </syntaxhighlight> ====== Analogiczne wywołanie szablonu ====== * {{Code|{{s|NS|l{{=}}tak|kp{{=}}s}}}} → {{Tt|{{NS|l=tak|kp=s}}}}, * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|kp{{=}}s}}}} → {{Tt|{{NS|l=tak|w=tak|kp=s}}}}, * {{Code|{{s|NS|l{{=}}tak|kj{{=}}pl|kp{{=}}s}}}} → {{Tt|{{NS|l=tak|kj=pl|kp=s}}}}, * {{Code|{{s|NS|l{{=}}tak|kj{{=}}en|kp{{=}}s}}}} → {{Tt|{{NS|l=tak|kj=en|kp=s}}}}, * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|kj{{=}}pl|kp{{=}}s}}}} → {{Tt|{{NS|l=tak|w=tak|kj=pl|kp=s}}}}, * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|kj{{=}}en|kp{{=}}s}}}} → {{Tt|{{NS|l=tak|w=tak|kj=en|kp=s}}}}. ===== Wywołania szablonu z nazwą linku danej wiki ===== ====== Przykłady użycia funkcji {{Code|nazwy_modul.NAZWASERWISU()}} ====== Gdy chcemy podać nazwę linku przy pomocy parametru {{Code|["w języku wiki"] {{=}} "tak"}}, w języku danej wiki, którego podajemy przy parametrze {{Code|["kod języka"] {{=}} "en"}}, dla projektu podanego w zmiennej {{Code|["kod projektu"] {{=}} "s"}}. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local linki_1 = nazwy_modul.NAZWASERWISU{ link = "tak", ["kod projektu"] = "s", ["w języku wiki"] = "tak", }; local linki_2 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", ["kod projektu"] = "s",["w języku wiki"] = "tak", }; local linki_3 = nazwy_modul.NAZWASERWISU{ link = "tak", ["kod języka"] = "pl", ["kod projektu"] = "s", ["w języku wiki"] = "tak", }; local linki_4 = nazwy_modul.NAZWASERWISU{ link = "tak", ["kod języka"] = "en", ["kod projektu"] = "s", ["w języku wiki"] = "tak", }; local linki_5 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", ["kod języka"] = "pl", ["kod projektu"] = "s", ["w języku wiki"] = "tak", }; local linki_6 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", ["kod języka"] = "en", ["kod projektu"] = "s", ["w języku wiki"] = "tak", }; </syntaxhighlight> ====== Analogiczne wywołanie szablonu ====== * {{Code|{{s|NS|l{{=}}tak|kp{{=}}s|jw{{=}}tak}}}} → {{Tt|{{NS|l=tak|kp=s|jw=tak}}}}, * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|kp{{=}}s|jw{{=}}tak}}}} → {{Tt|{{NS|l=tak|w=tak|kp=s|jw=tak}}}}, * {{Code|{{s|NS|l{{=}}tak|kj{{=}}pl|kp{{=}}s|jw{{=}}tak}}}} → {{Tt|{{NS|l=tak|kj=pl|kp=s|jw=tak}}}}, * {{Code|{{s|NS|l{{=}}tak|kj{{=}}en|kp{{=}}s|jw{{=}}tak}}}} → {{Tt|{{NS|l=tak|kj=en|kp=s|jw=tak}}}}, * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|kj{{=}}pl|kp{{=}}s|jw{{=}}tak}}}} → {{Tt|{{NS|l=tak|w=tak|kj=pl|kp=s|jw=tak}}}}, * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|kj{{=}}en|kp{{=}}s|jw{{=}}tak}}}} → {{Tt|{{NS|l=tak|w=tak|kj=en|kp=s|jw=tak}}}}. ===== Wywołanie szablonu z podaną nazwą linku ===== ====== Przykłady użycia funkcji {{Code|nazwy_modul.NAZWASERWISU()}} ====== Jeżeli chcemy podać ściśle określony ciąg, który jest nazwą linku, do linkowania do strony głównej lub artykułu na {{NS|w=tak|l=tak|k=w|pk=mj}} o danym projekcie, np. inną niż nazwa projektu. Tutaj nazwą linku jest {{Code|[1] {{=}} "Biblioteka książek"}}. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local link_1 = nazwy_modul.NAZWASERWISU{ [1] = "Biblioteka książek", link = "tak", }; local link_2 = nazwy_modul.NAZWASERWISU{ [1] = "Biblioteka książek", link = "tak", wikipedia = "tak", }; local link_3 = nazwy_modul.NAZWASERWISU{ [1] = "Biblioteka książek", link = "tak", ["kod projektu"] = "s",["kod języka"] = "en", }; local link_4 = nazwy_modul.NAZWASERWISU{ [1] = "Biblioteka książek", link = "tak", wikipedia = "tak", ["kod projektu"] = "s",["kod języka"] = "en", }; </syntaxhighlight> ====== Analogiczne wywołanie szablonu ====== * {{Code|{{s|NS|Biblioteka książek|l{{=}}tak}}}} → {{Tt|{{NS|Biblioteka książek|l=tak}}}}, * {{Code|{{s|NS|Biblioteka książek|l{{=}}tak|w{{=}}tak}}}} → {{Tt|{{NS|Biblioteka książek|l=tak|w=tak}}}}, * {{Code|{{s|NS|Biblioteka wikiźródeł|l{{=}}tak|kp{{=}}s|kj{{=}}en}}}} → {{Tt|{{NS|Biblioteka wikiźródeł|l=tak|kp=s|kj=en}}}}, * {{Code|{{s|NS|Biblioteka wikiźródeł|l{{=}}tak|w{{=}}tak|kp{{=}}s|kj{{=}}en}}}} → {{Tt|{{NS|Biblioteka wikiźródeł|l=tak|w=tak|kp=s|kj=en}}}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> obu068e2yqucftu5rq2sqpdy22q3azp 555697 555696 2026-09-11T14:37:21Z Persino 2851 /* Funkcja biblioteczna */ 555697 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Nazwy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == Funkcje nazw nazwy przestrzeni nazw == Należy przeczytać wiadomości ze strony {{lru|Moduły/Nazwy}}, które są informacjami wstępnymi, by używać funkcji bibliotecznych: {{m|Nazwy|Np}} i {{m|Nazwy|NpDane}}, i z nimi skojarzonych szablonów, tzn.: {{s|Np}} i {{s|NpDane}}. Wiadomosci też stąd są bardzo potrzebne do dalszych modułów tomów tej publikacji, to znaczy do funkcji, czy szablonów, nazw. === {{Code|m.Np}} === ==== Odpowiednik szablonowy ==== Odpowiednik szablonowy jest pod nazwą {{s|Np}}, odpowiednik funkcji, w mechanizmie '''MediaWiki''', tzn.: {{Span|styl=color:blue;|<nowiki>{{ns:<nazwa przestrzeni kanoniczna lub nie, albo jej id>}}</nowiki>}}, format tego, bo to nie jest szablon, czy funkcja, tylko wywołanie parserowe, tego, w którym jej parametr, tylko przestrzeny w nim występuje, jej element jest podobny do jej wersji bibliotecznej, opisywanej funkcji. Format wersji bibliotecznej tej funkcji jest bardzo bodobny do jej wersji szablonowej, tylko jest inne uruchomienie, tam jest ramka, a tutaj wywołanie szablonowe. Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce. * Szablon {{s|Np}} korzysta z funkcji bibliotecznej {{m|Nazwy|Np}}, więc parametry obu są wręcz takie same, a nawet podobne. Chociaż ta sama nazwa funkcji w ramce i kodzie {{lpg|Lua}}, to używanie ich nie jest dokładnie takie samo, funkcja biblioteczna nie potrzebuje parametru {{Parametr|wyspecjalizowana|tak}}, a ramka już tak, a szablon {{s|Np}}, który korzysta z tej ramki, to nieobecność, lub obecność z wartością pustą, tego parametru powoduje, że przyjmowane są parametry rodzica, a nie dziecka, które wymagają jego niepustość. ==== Funkcja biblioteczna ==== Zestaw parametrów tej funkcji są to parametry nazwane podawane, w wersji tabelkowej,, w nawiasach klamerkowej, jak się to podaje w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. ; Paramery funkcji {{m|Nazwy|Np|...|wyspecjalizowana{{=}}tak}} lub funkcji bibliotecznej wykorzystującej opisywaną funkcję{{Dk}} {{OpisParametrów | 1 = Parametry podstawowe | nagłówek1=tak | 2 = {{Code|nazwa}} lub {{Code|1}} | _2 = Nazwa przestrzeni nazw, kanoniczna lub nie, lub {{Code|id}} danej przestrzeni. | 3 = {{Parametr|wyspecjalizowana|tak}} | _3 = Tylko dla tej funkcji wywołanej w postaci ramki w wikikodzie w szablonach, gdy do niej wsadzamy bezpośrednio jako dzieci, a w przypadku z rodzica to ten parametr jest niepotrzebny lub powinien przyjmować wartość pustą, | 4 = Zmienne puste lub nie, np. o wartości {{Code|tak}}, lub nie, podawane do tej funkcji są:| nagłówek4=tak | 5 = {{Code|przedmiotowa}} | _5 = Zamienia daną przestrzeń na jej nazwę przedmiotową, tzn. na przestrzenie o numerach {{Code|id}} parzyste. | 6 = {{Code|dyskusja}} | _6 = Zamienia daną przestrzeń na jej wersję dyskusji, tzn. na przestrzenie o numerach {{Code|id}} nieparzyste. | 7 = {{Code|kanoniczna}} | _7 = Zamienia nazwę przestrzeni lub {{Code|id}} danej przestrzeni na jej nazwę kanoniczną, tzn. na jej wersję angielską. | 8 = {{Code|z myślnikami dolnymi}} | _8 = Zamienia spację w nazwach przestrzenie nazw na dolne myślniki, | 9 = {{Code|wyświetlana}} | _9 = Ten parametr nie wpływa na sposób wyświetlania nazw przestrzeni, oprócz jednej przestrzeni nazw, której jest przestrzeń główna o nazwie kanonicznej {{Code|(main)}} lub niekanonicznej {{Code|(główna)}}, wtedy są wyświetlane zamiast ciągu pustego te nazwy w zależności od podanego parametru {{Code|kanoniczna}}, tj. czy ona jest pusta lub nie, lub niepodana. | 10 = {{Code|link}} | _10 = Drukuje link o nazwie referencji, którą jest nazwa wyświetlana danej przestrzeni nazw, lub jej {{Code|id}}, o adresie strony przekierowującej, której jest adres odniesienia podanej w tabeli powyżej dla tej funkcji lub szablonu {{s|Np}}. | 11 = {{Code|id}} | _11 = wyświetla id danej przestrzeni nazw. | 12 = {{Code|nazwij projektem}} | _12 = Powoduje, że wyświetlana jest nazwa projektu {{Code|Wikibooks}} w postaci rzeczywistej nazwy kanonicznej (używany wraz z parametrem {{Code|kanoniczna}}), tzn. w postaci nazwy {{Code|Project}}, lub bez tego parametru, w postaci nazwy nierzeczywistej niekanonicznej {{Code|Projekt}}. | 13 = {{Code|nazwij dyskusją projektu}} | _13 = Powoduje, że wyświetlana jest nazwa projektu {{Code|Dyskusja wikibooks}} w postaci rzeczywistej nazwy kanonicznej (używany wraz z parametrem {{Code|kanoniczna}}), tzn. w postaci nazwy {{Code|Project talk}}, lub bez tego parametru, w postaci nazwy nierzeczywistej niekanonicznej {{Code|Dyskusja projektu}}. | 14 = Inne zmienne niepuste:|nagłówek14=tak | 15 = {{Code|istnieje}} | _15 = Zwraca wartość tekstową {{Code|(bląd)}}, gdy przestrzeń jest nieprawidłowa lub nie istnieje, w innym przypadku zwraca normalną wartość. | 16 = {{Code|wynik błędu nietekstowy}} | _16 = Używany z {{Code|istnieje}}, zwraca wartość w języku {{lpg|Lua}} wartość {{Code|nil}}, gdy wartość nazwy przestrzeni nazw lub {{Code|id}} jest nieprawidłowa lub nieznana. | 17 = Zwracana zmienna w postaci tabeli ze składowymi z pewnymi podzmiennymi:|nagłówek17=tak | 18 = {{Code|uchwyt}} | _18 = Zwraca uchwyt przestrzeni nazw do danej przestrzeni nazw. }} ===== Przykłady używania ===== ====== Podstawowe wywołanie ====== Podstawowe przykłady podstawowego wywołania funkcji, czyli uzyskiwania nazwy niekanonicznej z dowolnej nazwy przestrzeni kanonicznej, czy jej numeru {{Code|id}} (kodu danej przestrzeni nazw, który reprezentuje daną przestrzeń nazw przedmiotową, czy dyskusji), a więc: <syntaxhighlight lang="lua"> local nazwy_modul = require("Module:Nazwy"); ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_1 = nazwy_modul.Np{ [1] = "Szablon", }; ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_2 = nazwy_modul.Np{ [1] = "Template", }; ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_3 = nazwy_modul.Np{ [1] = 10, }; ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_4 = nazwy_modul.Np{ nazwa = "Szablon", }; ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_5 = nazwy_modul.Np{ nazwa = "Template", }; ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_6 = nazwy_modul.Np{ nazwa = 10, }; </syntaxhighlight> Te trzy pary wywołania wyświetlają ten sam wynik tzn. o takiej samej wartości, bo parametr {{Code|nazwa}} wskazuje na tą samą przestrzeń nazw, tylko one są rożnie wskazane. Został ta użyty parametr: {{Code|1}} lub {{Code|nazwa}}, które oznaczają to samo, czyli przestrzeń nazw w postaci kanonicznej, niekanonicznej, czy numeru {{Code|id}}, czyli identyfikatora przestrzeni nazw. Jako wartość uzyskujemy tam nazwę kanoniczną przestrzenina polskiem {{NS|l=tak|p=ie}}. Przestrzeń nazw może zawierać dowolnej wielkości litery, z dowolną liczbą odstępów z dolnymi spacjami lub normalnymi, jeżeli w nim one występują,wtedy zawsze oznaczają one tą samą przestrzeń, niezależnie jak ją zapiszemy, przykłady poniżej. Równie dobrze dowolną nazwę niekanoniczną możemy napisać, co jest uwidocznione w parametrze {{Code|nazwa}}, na wyjściu otrzymujemy w pełni sformatowaną nazwę niekanoniczną, która odpowiada jej odpowiednikowi niesformatowanemu: <syntaxhighlight lang="lua"> local nazwy_modul = require("Module:Nazwy"); -- Zwraca wartość: "Szablon": local nazwa_przestrzeni_1 = nazwy_modul.Np{ nazwa = "SZABLON", }; -- Zwraca wartość: "Szablon": local nazwa_przestrzeni_2 = nazwy_modul.Np{ nazwa = "TEMPLATE", }; -- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_3 = nazwy_modul.Np{ nazwa = "DYSKUSJA ___ ___ _ SZABLONU", }; -- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_4 = nazwy_modul.Np{ nazwa = "TEMPLATE_________TALK", }; </syntaxhighlight> ====== Nazwy kanoniczne i niekanoniczna oraz zamiana z jednej na drugą ====== Aby uzyskać nazwę z dowolnej nazwy, nawet też kanonicznej, czynie, czy też z numeru {{Code|id}} (identyfikatora przestrzeni nazw), wtedy należy podać parametr przestrzeni nazw, z dodatkowym parametrem {{Code|kanoniczna}}, w takim razie: <syntaxhighlight lang="lua"> local nazwy_modul = require("Module:Nazwy"); -- Uzyskujemy wartość: "Template": local nazwa_kanoniczna_1 = nazwy_modul.Np{ nazwa = "Szablon", kanoniczna = "tak", }; -- Uzyskujemy wartość: "Template": local nazwa_kanoniczna_2 = nazwy_modul.Np{ nazwa = "Template", kanoniczna = "tak", }; -- Uzyskujemy wartość: "Template": local nazwa_kanoniczna_3 = nazwy_modul.Np{ nazwa = 10, kanoniczna = "tak", }; </syntaxhighlight> * Według powyższego przykładu, ona, czyli przestrzeń nazw, jest zamieniana na sformatowaną nazwę kanoniczną, jako parametr może być nazwa niekanoniczna, kanoniczna, czy identyfikator przestrzeni nazw. Dowolną nazwę kanoniczną, czy nie, można zamienić na niekanoniczną, niezależnie w jakiej formie podamy przestrzeń nazw, może być to przekształcenie tożsamościowe, może być to w postaci identyfikatora tej przestrzeni, niezależnie jaką ją mamy na myśli, więc: <syntaxhighlight lang="lua"> local nazwy_modul = require("Module:Nazwy"); -- Uzyskujemy wartość: "Szablon": local nazwa_niekanoniczna = nazwy_modul.Np{ nazwa = "Template", }; </syntaxhighlight> * Wystarczy wtedy użyć tylko jednego parametru, nie trzeba używać większej liczby innych parametrów. ====== Nazwy przedmiotowe i dyskusji oraz przejścia pomiędzy nimi ====== Można też przechodzić z tej samej przestrzeni nazw w nią samą, lub do niego skojarzoną, tzn. z przedmiotowej do dyskusji lub odwrotnie, przykłady poniżej. Do tego celu używamy parametru {{Code|przedmiotowa}}, czyli do tłumaczenia nazwy przestrzeni nazw na jej wersję przedmiotową, tzn. na przestrzeń nazw o identyfikatorze parzystym. Można też użyć parametru {{Code|dyskusja}}, robiąca tłumaczenia na wersje dyskusji, o identyfikatorze nazwy przestrzeni nazw nieparzystym. Nie wolno używać tych parametrów, tych dwóch w jednym wywołaniu, bo może dojść do błędu funkcji w postaci komunikatu {{Code|(błąd)}}. Tłumaczona nazwa może być zarówno niekanoniczna, jak i kanoniczna, lub być zawarta w postaci identyfikatora przestrzeni nazw. Tutaj bez użycia żadnego parametru dodatkowego, wtedy otrzymujemy na wyjściu nazwę niekanoniczną. <syntaxhighlight lang="lua"> local nazwy_modul = require("Module:Nazwy"); -- Gdy nazwą przestrzeni jest nazwa niekanoniczna: ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_przedmotowej_1 = nazwy_modul.Np{ nazwa = "Dyskusja szablonu", przedmiotowa = "tak", }; ---- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_dyskusji_1 = nazwy_modul.Np{ nazwa = "Szablon", dyskusja = "tak", }; -- Gdy nazwą przestrzeni jest nazwa kanoniczna: ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_przedmotowej_2 = nazwy_modul.Np{ nazwa = "Template talk", przedmiotowa = "tak", }; ---- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_dyskusji_2 = nazwy_modul.Np{ nazwa = "Template", dyskusja = "tak", }; -- Gdy prrzestrzeń nazw jest w postaci numeru id: ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_przedmotowej_3 = nazwy_modul.Np{ nazwa = 11, przedmiotowa = "tak", }; ---- Zwraca wartość: szablon "Dyskusja szablonu": local nazwa_przestrzeni_dyskusji_3 = nazwy_modul.Np{ nazwa = 10, dyskusja = "tak", }; </syntaxhighlight> Gdy użyjemy dodatkowo parametr {{Code|kanoniczna}}, zamieniający dowolne przestrzenie nazw, niezależnie, czy jest zapisana w postaci identyfikatora, czy nie, gdy nazwą przestrzeni jest nazwa niekanoniczna (lub kanoniczna), to uzyskana nazwa przedmiotowa, czy dyskusji, jest nazwą kanoniczną, jako w wyniku: <syntaxhighlight lang="lua"> local nazwy_modul = require("Module:Nazwy"); -- Gdy nazwą przestrzeni jest nazwa niekanoniczna: ---- Zwraca wartość: "Template": local nazwa_przestrzeni_przedmotowej_1 = nazwy_modul.Np{ nazwa = "Dyskusja szablonu", przedmiotowa = "tak", kanoniczna = "tak", }; ---- Zwraca wartość: "Template talk": local nazwa_przestrzeni_dyskusji_1 = nazwy_modul.Np{ nazwa = "Szablon", dyskusja = "tak", kanoniczna = "tak", }; -- Gdy nazwą przestrzeni jest nazwa kanoniczna: ---- Zwraca wartość: "Template": local nazwa_przestrzeni_przedmotowej_2 = nazwy_modul.Np{ nazwa = "Template talk", przedmiotowa = "tak", kanoniczna = "tak", }; ---- Zwraca wartość: "Template talk": local nazwa_przestrzeni_dyskusji_2 = nazwy_modul.Np{ nazwa = "Template", dyskusja = "tak", kanoniczna = "tak", }; -- Gdy przestrzeń nazw jest w postaci numeru id: ---- Zwraca wartość: "Template": local nazwa_przestrzeni_przedmotowej_3 = nazwy_modul.Np{ nazwa = 11, przedmiotowa = "tak", kanoniczna = "tak", }; ---- Zwraca wartość: "Template talk": local nazwa_przestrzeni_dyskusji_3 = nazwy_modul.Np{ nazwa = 10, dyskusja = "tak", kanoniczna = "tak", }; </syntaxhighlight> Przejście z tej samej przestrzeni na tą samą możemy uzyskać, gdy nazwę przedmiotową tłumaczymy na przedmiotową, dyskusji na dyskusji, wtedy tłumaczenie z przestrzeni do przestrzeni jest tożsamościowe, niezależnie w jakiej formie podamy nazwę przestrzeni nazw jako parametr, tłumaczymy nazwę polską na tą samą nazwę też polską, o tej samej wartości lub jej odpowiednik angielski w wersji kanonicznej na jej wersję niekanoniczną, czy z numeru identyfikatorana jej odpowiednik nazwowy, ale nadal takie przejście jest tożsamosciowe, bo chodzi o tą samą przestrzeń nazw, mimo że użyliśmy tych parametrów: <syntaxhighlight lang="lua"> local nazwy_modul = require("Module:Nazwy"); -- Gdy nazwą przestrzeni jest nazwa niekanoniczna: ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_przedmotowej_1 = nazwy_modul.Np{ nazwa = "Szablon", przedmiotowa = "tak", }; ---- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_dyskusji_1 = nazwy_modul.Np{ nazwa = "Dyskusja szablonu", dyskusja = "tak",}; -- Gdy nazwą przestrzeni jest nazwa kanoniczna: ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_przedmotowej_2 = nazwy_modul.Np{ nazwa = "Template", przedmiotowa = "tak", }; ---- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_dyskusji_2 = nazwy_modul.Np{ nazwa = "Template talk", dyskusja = "tak",}; -- Gdy przestrzeń nazw jest w postaci numeru id: ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_przedmotowej_3 = nazwy_modul.Np{ nazwa = 10, przedmiotowa = "tak", }; ---- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_dyskusji_3 = nazwy_modul.Np{ nazwa = 11, dyskusja = "tak",}; </syntaxhighlight> Gdy użyjemy dodatkowo parametr {{Code|kanoniczna}}, to uzyskana nazwa przedmiotowa, czy dyskusji, wtedy mamy tłumaczenie tozsamościowe, jeśli chodzi o przestrzeń nazw, co one oznaczają, jeśli ona jest niekanoniczna, to uzyskamy jej nazwę, ale po angielsku, a jeśli jednak jest kanoniczna, to otrzymamy ten sam wynik: <syntaxhighlight lang="lua"> local nazwy_modul = require("Module:Nazwy"); -- Gdy nazwą przestrzeni jest nazwa niekanoniczna: ---- Zwraca wartość: "Template": local nazwa_przestrzeni_przedmotowej_1 = nazwy_modul.Np{ nazwa = "Szablon", przedmiotowa = "tak", kanoniczna = "tak", }; ---- Zwraca wartość: "Template talk": local nazwa_przestrzeni_dyskusji_1 = nazwy_modul.Np{ nazwa = "Dyskusja szablonu", dyskusja = "tak", kanoniczna = "tak", }; -- Gdy nazwą przestrzeni jest nazwa kanoniczna: ---- Zwraca wartość: Template": local nazwa_przestrzeni_przedmotowej_2 = nazwy_modul.Np{ nazwa = "Template", przedmiotowa = "tak", kanoniczna = "tak", }; ---- Zwraca wartość: "Template talk": local nazwa_przestrzeni_dyskusji_2 = nazwy_modul.Np{ nazwa = "Template talk", dyskusja = "tak", kanoniczna = "tak", }; -- Gdy przestrzeń nazw jest w postaci numeru id: ---- Zwraca wartość: ""Template": local nazwa_przestrzeni_przedmotowej_3 = nazwy_modul.Np{ nazwa = 10, przedmiotowa = "tak", kanoniczna = "tak", }; ---- Zwraca wartość: "Template talk": local nazwa_przestrzeni_dyskusji_3 = nazwy_modul.Np{ nazwa = 11, dyskusja = "tak", kanoniczna = "tak", }; </syntaxhighlight> ====== Nazwy przestrzeni z myślnikami dolnymi ====== Gdy używamy przestrzeni nazw, czy to w postaci kanonicznej, czy niekanonicznej, ze spacjami, to spacje są w nim zamieniane na dolne myślniki. Jeżeli parametr zawiera spacje lub dolne myślniki na końcach nazwy, to ona jest trimowana, wewnątrz, wtedy powtórzone spacje, lub myślniki dolne, są zamieniane na jeden dolny myślnik, jeżeli zamieniamy nazwę niekanoniczną na niekanoniczną, kanoniczną na kanoniczną. Gdy tak nie jest, tzn. gdy zamieniamy kanoniczną na niekanoniczną, niekanoniczną na kanoniczną, to wtedy jest podobnie. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Dyskusja_szablonu": local nazwa_przestrzeni_1 = nazwy_modul.Np{ nazwa = "Dyskusja szablonu", ["z myślnikami dolnymi"] = "tak", }; ---- Zwraca wartość: "Dyskusja_szablonu": local nazwa_przestrzeni_2 = nazwy_modul.Np{ nazwa = "Template talk", ["z myślnikami dolnymi"] = "tak", }; ---- Zwraca wartość: "Template_talk";: local nazwa_przestrzeni_3 = nazwy_modul.Np{ nazwa = "Dyskusja szablonu", kanoniczna = "tak", ["z myślnikami dolnymi"] = "tak", }; ---- Zwraca wartość: "Template_talk": local nazwa_przestrzeni_4 = nazwy_modul.Np{ nazwa = "Template talk", kanoniczna = "tak", ["z myślnikami dolnymi"] = "tak", }; </syntaxhighlight> ====== Nazwy wyświetlane przestrzeni nazw ====== Gdy nazwą przestrzeni nazw jest nazwa o charakterze niepustym, to przy parametrze {{Code|wyświetlana {{=}} "tak"}}, jest zamieniana ona na tą samą nazwę, gdy ona jest pusta, to jest zamieniana na szereg: {{Code|(główna)}} bez parametru {{Code|kanoniczna}}, a z tym parametrem na {{Code|(main)}}. Przykłady jak jest, jest powiedziane: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_1 = nazwy_modul.Np{ nazwa = "Szablon", wyświetlana = "", }; ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_2 = nazwy_modul.Np{ nazwa = "Szablon", wyświetlana = "tak", }; ---- Zwraca wartość: "": local nazwa_przestrzeni_3 = nazwy_modul.Np{ nazwa = "", wyświetlana = "", }; ---- Zwraca wartość: "(główna)": local nazwa_przestrzeni_4 = nazwy_modul.Np{ nazwa = "", wyświetlana = "tak", }; ---- Zwraca wartość: "(main)": local nazwa_przestrzeni_5 = nazwy_modul.Np{ nazwa = "", kanoniczna = "tak", wyświetlana = " tak", }; </syntaxhighlight> Na podstawie ramki powyżej w przestrzeniach nazw wyświetlanych dowiadujemy się, że jedyna różnica, w nazwach wyświetlanych lub nie, jest dla przestrzeni głównej, czyli dla przestrzeni nazw, której nazwa przestrzeni jest ciągiem pustym. ====== Wersja funkcji z wyświetlaną nazwą przestrzeni nazw z linkiem opisującej tą przestrzeń ====== Nazwę przestrzeni nazw zamieniamy na link z opisem, co robi dana przestrzeń nazw, z nazwą wyświetlaną niekanoniczną, bez parametru {{Code|kanoniczna}}, lub z tym,wtedy nazwę wyświetlaną jest kanoniczna. Gdy przestrzeń nazw jest główna, to wtedy nazwą linku jest {{Code|(główna)}} ({{Code|(main)}} z parametrem {{Code|kanoniczna}}). <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local nazwa_przestrzeni_nazw_1 = nazwy_modul.Np{ nazwa = "Szablon", link = "tak", }; local nazwa_przestrzeni_nazw_2 = nazwy_modul.Np{ nazwa = "Szablon", link = "tak", kanoniczna = "tak", }; local nazwa_przestrzeni_nazw_3 = nazwy_modul.Np{ nazwa = "", link = "tak", }; local nazwa_przestrzeni_nazw_4 = nazwy_modul.Np{ nazwa = "", link = "tak", kanoniczna = "tak", }; </syntaxhighlight> Przykłady funkcji w wyniku są w przykładach szablonowych: # {{Code|{{s|Np|nazwa{{=}}Szablon|link{{=}}tak}}}} → {{Tt|{{Np|nazwa=Szablon|link=tak}}}} # {{Code|{{s|Np|nazwa{{=}}Szablon|link{{=}}tak|kanoniczna{{=}}tak}}}} → {{Tt|{{Np|nazwa=Szablon|link=tak|kanoniczna=tak}}}} # {{Code|{{s|Np|nazwa{{=}}|link{{=}}tak}}}} → {{Tt|{{Np|nazwa=|link=tak}}}} # {{Code|{{s|Np|nazwa{{=}}|link{{=}}tak|kanoniczna{{=}}tak}}}} → {{Tt|{{Np|nazwa=|link=tak|kanoniczna=tak}}}} ====== Uzyskiwanie numeru {{Code|id}} danej przestrzeni nazw ====== Gdy chcemy uzyskać numer identyfikatora przestrzeni nazw, czy to z użyciem parametru {{Code|kanoniczna}}, czy nie, wtedy ten parametr jest w tym przypadku ignorowany, przy parametrze {{Code|id {{=}} "tak"}} na jej odpowiednik w postaci numeru, który charakteryzuje przestrzenie przedmiotowe i dyskusji, inna jest dla tych dwóch typów przestrzeni. Dla przestrzeni przedmiotowej {{Code|id}} jest parzyste, a dla dyskusji nieparzyste. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Uzyskany numer id nazwy przestrzeni nazw jest 10: local id_1 = nazwy_modul.Np{ nazwa = "Szablon", id = "tak", }; ---- Uzyskany numer id nazwy przestrzeni nazw jest 10: local id_2 = nazwy_modul.Np{ nazwa = "Szablon", kanoniczna = "tak", id = "tak", }; ---- Uzyskany numer id nazwy przestrzeni nazw jest 11: local id_3 = nazwy_modul.Np{ nazwa = "Dyskusja szablonu", id = "tak", }; ---- Uzyskany numer id nazwy przestrzeni nazw jest 11: local id_4 = nazwy_modul.Np{ nazwa = "Dyskusja szablonu", kanoniczna = "tak", id = "tak", }; </syntaxhighlight> ====== Uzyskiwanie nazwy projektu nazwy przedmiotowej i jej dyskusji, z kanonicznej lub nie, przestrzeni nazw ====== Gdy używamy przestrzeni nazw {{Np|Wikibooks|link=tak}} lub {{Np|Wikibooks|link=tak|dyskusja=tak}}, to je można tłumaczyć na je wersje czysto kanoniczne, tzn.: {{Np|Wikibooks|link=tak}} tłumaczymy na {{Np|Wikibooks|link=tak|nazwij projektem=tak}}, a {{Np|Wikibooks|link=tak|dyskusja=tak}} na {{Np|Wikibooks|link=tak|dyskusja=tak|nazwij dyskusją projektu=tak}}, gdy translacja jest na nazwę polską niekanoniczną, a gdy użyjemy parametru {{Code|kanoniczna}}, wtedy sytuacja jest inna: {{Np|Wikibooks|link=tak|kanoniczna=tak}} tłumaczymy na {{Np|Wikibooks|link=tak|nazwij projektem=tak|kanoniczna=tak}}, a {{Np|Wikibooks|link=tak|dyskusja=tak|kanoniczna=tak}} na {{Np|Wikibooks|link=tak|dyskusja=tak|nazwij dyskusją projektu=tak|kanoniczna=tak}}. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Projekt": local nazwa_przestrzeni_nazw_1 = nazwy_modul.Np{ nazwa = "Wikibooks", ["nazwij projektem"] = "tak", }; ---- Zwraca wartość: "Project": local nazwa_przestrzeni_nazw_2 = nazwy_modul.Np{ nazwa = "Wikibooks", ["nazwij projektem"] = "tak", kanoniczna = "tak", }; ---- Zwraca wartość: "Dyskusja projektu": local nazwa_przestrzeni_nazw_3 = nazwy_modul.Np{ nazwa = "Wikibooks", ["nazwij dyskusją projektu"] = "tak", dyskusja = "tak", }; ---- Zwraca wartość: "Project talk": local nazwa_przestrzeni_nazw_4 = nazwy_modul.Np{ nazwa = "Wikibooks", ["nazwij dyskusją projektu"] = "tak", kanoniczna = "tak", }; </syntaxhighlight> ====== Sprawdzanie, czy dana przestrzeń jest poprawnie podane, czy istnieje ====== Gdy używamy przestrzeni nieistniejącej bez parametru {{Code|istnieje {{=}} "tak" }}, wtedy na wyjściu otrzymamy to samo, tylko w wersji sformatowanej, a gdy użyjemy, wtedy pojawia tam się napis {{Code|(błąd)}}. Gdy parametrem jest znana funkcji przestrzeń nazw, to nie uzyskujemy błędu, tylko przepisaną sformatowaną nazwę. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_nazw_1 = nazwy_modul.Np{ nazwa = "Szablon", istnieje = "tak", }; ---- Zwraca wartość: "Moja przestrzeń": local nazwa_przestrzeni_nazw_2 = nazwy_modul.Np{ nazwa = "Moja przestrzeń", istnieje = "", }; ---- Zwraca wartość: "(błąd)": local nazwa_przestrzeni_nazw_3 = nazwy_modul.Np{ nazwa = "Moja przestrzeń", istnieje = "tak", }; </syntaxhighlight> ====== Łatwe sprawdzanie istnienia danej przestrzeni nazw ====== Gdy oprócz parametru {{Code|istnieje {{=}} "tak"}}, użyjemy {{Code|["wynik błędu nietekstowy"] {{=}} "tak"}}, wtedy dla nieznanej przestrzeni uzyskujemy wartość w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, czyli: {{Code|nil}}, a w wikikodzie natomiast uzyskujemy wartość pustą, co pomaga w sprawdzeniu, czy dana przestrzeń istnieje, ale dodatkowo trzeba użyć parametru {{Code|["wyświetlana"] {{=}} "tak"}}, by nie pomylić parametru błędu z przestrzenią główną, wtedy ta przestrzeń ma nazwę niepustą przy tych parametrach, bo wtedy mamy nazwę niekanoniczną {{Code|(główna)}}, kanoniczną, przy specjalnym parametrze, czyli: {{Code|(main)}}, wtedy możemy użyć parsera {{Code|{{s|#if:coś|wtedy|przeciwnie}}}}. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_nazw_1 = nazwy_modul.Np{ nazwa = "Szablon", istnieje = "tak", ["wynik błędu nietekstowy"] = "tak", }; ---- Zwraca wartość: "Moja przestrzeń": local nazwa_przestrzeni_nazw_2 = nazwy_modul.Np{ nazwa = "Moja przestrzeń", istnieje = "", ["wynik błędu nietekstowy"] = "tak", }; ---- Zwraca wartość: nil: local nazwa_przestrzeni_nazw_3 = nazwy_modul.Np{ nazwa = "Moja przestrzeń", istnieje = "tak", ["wynik błędu nietekstowy"] = "tak", }; </syntaxhighlight> ====== Uzyskiwanie uchwytu danej przestrzeni nazw analogicznie do funkcji {{LzLua|mw.site.namespaces}} ====== Uchwyt niskopoziomowy do danej przestrzeni nazw można uzyskać przy pomocy kodu, uzyskujemy dla tej tablicy przestrzennej, która jest połączona z metatabelką, dzięki której możemy podawać przestrzenie nazw w wersji niezależnie jakimi literami, z dowolną kliczbą odstępów, nawet zapisana dolnymi myślnikami: <syntaxhighlight lang="lua"> local uchwyt_1 = mw.site.namespaces["Szablon"]; local uchwyt_2 = mw.site.namespaces["Template"]; local uchwyt_3 = mw.site.namespaces[10]; </syntaxhighlight> Funkcja powyżej ignoruje wielkość liter w przestrzeni nazw oraz powtórzone odstępy zrealizowane za pomocą spacji lub dolnych myślników. To samo, ale wysokopoziomowe, można utworzyć przy pomocy parametru: {{Code|uchwyt}}, wtedy szablon z rzuci odwołanie do tej tabeli, ale nie zawsze tak jest, czasami, gdy jakieś przestrzenie nie istnieją na polskim {{NS|w=tak|l=tak|pk=mj}}, wtedy odwołujemy się do jej wersji pseudo tej tabeli: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local uchwyt_1 = nazwy_modul.Np{ nazwa = "Szablon", uchwyt = "tak", }; local uchwyt_2 = nazwy_modul.Np{ nazwa = "Template", uchwyt = "tak", }; local uchwyt_3 = nazwy_modul.Np{ nazwa = 10, uchwyt = "tak", }; </syntaxhighlight> Funkcja {{Code|nazwy_modul.Np}} jest bardziej ogólniejsza niż {{LzLua|mw.site.namespaces}}, ponieważ uwzględnia większą liczbę nazw przestrzeni nazw, bo ona uwzględnia nieznane przestrzenie i znane o nieznanych nazwach, i dlatego należy stosować tę funkcję, a nie dedykowaną tabelę z połączoną z metatabelką za pomocą funkcji {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. === {{Code|m.NpDane}} === ==== Odpowiednik szablonowy ==== Odpowiednik szablonowy jest pod nazwą {{s|NpDane}}. Jego parametry są podobne do jego wersji bibliotecznej. Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce. * Szablon {{s|NpDane}} korzysta z funkcji bibliotecznej {{m|Nazwy|NpDane}}, więc parametry obu są wręcz takie same, a nawet podobne. Chociaż ta sama nazwa funkcji w ramce i kodzie {{lpg|Lua}}, to używanie ich nie jest dokładnie takie samo, funkcja biblioteczna nie potrzebuje parametru {{Parametr|wyspecjalizowana|tak}}, a ramka już tak, a szablon {{s|NpDane}}, który korzysta z tej ramki, to nieobecność, lub obecność z wartością pustą, tego parametru powoduje, że przyjmowane są parametry rodzica, a nie dziecka, które wymagają jego niepustość. ==== Funkcja biblioteczna ==== Szablon służy przede wszystkim do tłumaczenia angielskich nazw przestrzeni nazw na ich wersję w jakimś języku i operacji odwrotnej, a także numer przestrzeni nazw na jej nazwę w nim angielską lub w jakimś języku, lub odwrotnie, umożliwia też na przetłumaczenie nazwy przestrzeni nazw lub identyfikatora przestrzeni na jej nazwę polską, jeżeli istnieje. Funkcja {{m|Nazwy|NpDane}} przyjmuje te same parametry, co {{m|Nazwy|Np}}, oprócz wywołania ramkowego: {{Code|uchwyt}} (która w tej funkcji w sposób inny jest zdefiniowana, nie jak w funkcji: {{m|Nazwy|Np}}), jak oba, którego tutaj w nim nie ma, a jako zwykła funkcja biblioteczna może przyjmować ten parametr. Te zmienne działają podobnie w obu procedurach, z tą różnicą, że mamy inny zestaw nazw przestrzeni nazw (czasami bez numerów {{Code|id}} - identyfikatorów tych obsługiwanych przestrzeni nazw, a te podstawowe one je mają, jeżeli da się je powiązać z pierwszą funkcją w drugiej, jedynie w takim przypadku one występują) i można też użyć parametrów dodatkowych, które są niedostępne w pierwszej funkcji, a w drugiej już tak. Dodatkowo on przyjmuje argumenty: {{OpisParametrów | 1 = Adres kodowy projektu siostrzanego lub lokalnego polskiego: {{Code|Wikibooks}}:|nagłówek1=tak | 2 = {{Code|klucz projektu}} | _2 = Kody języka i projektu podana w jednej zmiennej oddzielone od siebie dwukropkami, może być dowolna liczba tych kodów. | 3 = {{Code|kod projektu}} | _3 = Kod projektu danego wiki. | 4 = {{Code|kod języka}} | _4 = kod języka danego wiki. | 5 = {{Code|po polsku}} |_5 = Tłumaczy nazwę kanoniczną danej przestrzeni nazw na jej wersję polską, tzn. na język polski, a jeżeli jej wersja polska nie istnieje, to pisze jej wersję w języku angielskim, czyli w postaci nazwy kanonicznej. | 6 = {{Code|awaryjnie}} | _6 = Za pomocą projektu {{NS|l=tak|k=d}} tłumaczy daną nazwę przestrzeni nazw w jednym języku (jej nazwę kanoniczną jakieś przestrzeni nazw) na drugi, gdy wartość jest pusta, to tłumaczy na jej nazwę kanoniczną, jeżeli, przy tym parametrze lub bez, jej wersja w innym danym języku nie istnieje zdefiniowana w module {{m|Nazwy/przestrzenie}}. | 7 = Parametry: {{Code|nazwij projektem}} i {{Code|nazwij dyskusją projektu}}, używa się tak samo jak dla funkcji: {{m|Nazwy|Np}}, tylko z różnicą, że w funkcji: {{m|Nazwy|NpDane}} musimy skorzystać koniecznie z parametru: {{Code|kanoniczna}}, z wartością niepustą, a wtedy wydrukowane wartości są w postaci wersji kanonicznej w języku angielskim, tak jak z ostatnim szablonem.|nagłówek7=tak }} ===== Używanie kluczy projektu, kodów projektu i kodów języka ===== Kody nazw piszemy, jak zwykle, z małej litery, co jest zalecane, ale można je pisać z liter o dowolnej wielkości. ====== Użycie różnych kodów i ich równoważność ====== Kody projektu i języka możemy pisać ze względu na dwa sposoby, w zależności jakich zmiennych używamy, możemy pisać tzw. grupę tych kodów w jednej zmiennej, wtedy się liczy ostateczny adres do danego projektu w jakieś wersji językowej, tylko jeden, a nie n-wersji danego języka i m-wersji danego projektu, czyli: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local wynik = nazwy_modul.NpDane{ ..., ["klucz projektu"] = "en:de:w:ru:en:q:pt", ... }; </syntaxhighlight> * Najważniejsze są kody projektu końcowe, podobnie ma się sprawa z kodami języków, tutaj kodami projektów są: {{Code|w}} ({{NS|l=tak|k=w}}) i {{Code|q}} ({{NS|l=tak|k=q}}), a kodami języków są: {{Code|en}} ({{lpg|{{#invoke:lang|hasło|en}}}}), {{Code|de}} ({{lpg|{{#invoke:lang|hasło|de}}}}), {{Code|ru}} ({{lpg|{{#invoke:lang|hasło|ru}}}}), {{Code|en}} ({{lpg|{{#invoke:lang|hasło|en}}}}) i {{Code|pt}} ({{lpg|{{#invoke:lang|hasło|pt}}}}), czy końcowy kod projektu jest: {{Code|q}} ({{NS|l=tak|k=q}}) i kod języka {{Code|pt}} ({{lpg|{{#invoke:lang|hasło|pt}}}}). W powyższym przykładzie napisaliśmy mnóstwo kodów w postaci jednej zmiennej, to jest równoważne zapisowi, czyli ostatecznej wersji wspomnianej powyższego zapisu, też zapisaną za pomocą tej samej zmiennej: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local wynik_1 = nazwy_modul.NpDane{ ..., ["klucz projektu"] = "pt:q", ... }; local wynik_2 = nazwy_modul.NpDane{ ..., ["klucz projektu"] = "q:pt", ... }; </syntaxhighlight> Powyższy wynik rozpisujemy na dwie zmienne, w których podajemy tylko pojedyncze kody, a nie grupy, więc widziemy, ża zamiast podawania jednego parametru z interwiki, to możemy to rozbić na dwa parametry kodu projektu i języka, a nie używać to w jednej zmiennej, należy pamiętać, że w tych kodach, może być jedno interwiki, specjalnie dla projektu lub języka, do którego dana zmienna jest przystosowana: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local wynik = nazwy_modul.NpDane{ ..., ["kod projektu"] = "q", ["kod języka"] = "pt", ... }; </syntaxhighlight> ====== Nazwy wyświetlane przy użyciu tych kodów dla przestrzeni głównej ====== Nazwy bez użycia zmiennej powodujące wyświetlanie nazwy przestrzeni nazw '''głównej''' na różnych projektach w postaci nieprzetłumaczonej na język polski, wtedy uzyskujemy niezależnie od projektu wartość pustą, bo takie jest przedstawienie wartości niewyświetlanej przestrzeni głównej na każdym projekcie obsługujący przestrzenie nazw, czyli: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość równą ciągowi pustemu: "": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "", ["klucz projektu"] = "commons", }; ---- Zwraca wartość równą ciągowi pustemu: "": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "", ["kod projektu"] = "commons", }; </syntaxhighlight> A przy użyciu identyfikatora przestrzeni nazw przestrzeni głównej, wtedy uzyskujemy na wyjściu to samo, co powyżej, czyli wartość pustą, bo wartość {{Code|0}} jest odpowiednikiem przestrzeni głównej, czyli poniższe przykłady są odpowiedniami tych powyższych, czyli te dwa przykład, tak można powiedzieć, że to samo robią: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość równą ciągowi pustemu: "": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = 0, ["klucz projektu"] = "commons", }; ---- Zwraca wartość równą ciągowi pustemu: "": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = 0, ["kod projektu"] = "commons", }; </syntaxhighlight> 0 Przy użyciu zmiennej generującej wyświetlanie w postaci znaków o charakterze niepustej, wtedy jeżeli nie ma wartości kanonicznej dla danego języka projektu, to wyswietlana jest wartość {{Np|(main)|link=tak|kanoniczna=tak}}, a dla polskigo projektu {{Np|(main)|link=tak}}, a dla innych języków jest nazwa charakterystyczna dla danego języka pod warunkiem, jeżeli doda się tego obsługę, więc tego przykłady przy użyciu zmiennej {{Code|["wyświetlana"] {{=}} "tak"}}, więc: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość nazwy przestrzeni głównej: "(main)": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "", ["klucz projektu"] = "commons", ["wyświetlana"] = "tak", }; ---- Zwraca wartość nazwy przestrzeni głównej: "(main)": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "", ["kod projektu"] = "commons", ["wyświetlana"] = "tak", }; </syntaxhighlight> Przy użyciu identyfikatora przestrzeni nazw przestrzeni głównej, w takim przypadku uzyskujemy to samo co powyżej, tylko jest inaczej, oznaczana jest wtedy przestrzeń główna, dla tego samego projektu siostrzanego, w wersji charakterystycznej dla danego języka, tutaj dla angielskiego: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość nazwy przestrzeni głównej: "(main)": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = 0, ["klucz projektu"] = "commons", ["wyświetlana"] = "tak", }; ---- Zwraca wartość nazwy przestrzeni głównej: "(main)": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = 0, ["kod projektu"] = "commons", ["wyświetlana"] = "tak", }; </syntaxhighlight> ====== Nazwy wyświetlane przy użyciu tych kodów przetłumaczone je na język polski dla przestrzeni głównej ====== Z wyświetlaniem na ekranie przestrzeni nazw charakteryzujące się ciągiem niepustym mamy podobne wyniki, jak powyżej bez parametry {{Code|["wyświetlana"] {{=}} "tak"}}, tylko nazwa wyświetlana przestrzeni nazw jest po polsku (odpowiednia nazwa w języku polskim), a nie po angielsku (w języku danego projektu): Przy użyciu zmiennej generującej wyświetlanie w postaci znaków o charakterze niepustej, nazw przestrzeni nazw mający nazwy puste, ale zamienione na nazwy wyświetlane, ale w postaci języka polskiego, używając parametru {{Code|["po polsku"] {{=}} "tak"}}: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość nazwy przestrzeni głównej: "(główna)": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "", ["klucz projektu"] = "commons", ["wyświetlana"] = "tak", ["po polsku"] = "tak", }; ---- Zwraca wartość nazwy przestrzeni głównej: "(główna)": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "", ["kod projektu"] = "commons", ["wyświetlana"] = "tak", ["po polsku"] = "tak", }; </syntaxhighlight> Przy użyciu identyfikatora przestrzeni nazw głównej, czyli dla tej samej przestrzeni nazw, co powyżej, tylko ona jest inaczej oznaczana, to możemy zrobić to samo, co powyżej, tylko nazwa główna przestrzeni nazw jest inaczej zapisana, w postaci numerycznej, wtedy otrzymamy wynik taki sam, jak w powyższym przykładzie, bo w obu używaliśmy takiej samej przestrzeni, tylko różnie przepisaną: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość nazwy przestrzeni głównej: "(główna)": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = 0, ["klucz projektu"] = "commons", ["wyświetlana"] = "tak", ["po polsku"] = "tak", }; ---- Zwraca wartość nazwy przestrzeni głównej: "(główna)": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = 0, ["kod projektu"] = "commons", ["wyświetlana"] = "tak", ["po polsku"] = "tak", }; </syntaxhighlight> ====== Nazwy wyświetlane przy użyciu tych kodów dla przestrzeni innej niż główna ====== Nazwy bez użycia zmiennej powodujące wyświetlanie nazwy przestrzeni nazw '''niegłównej''' na różnych projektach w postaci nieprzetłumaczonej na język polski, tylko w wersji charakterystucznej dla języka danego projektu używaną w odwołaniu: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość równą ciągowi niepustemu: "Template": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "Template", ["klucz projektu"] = "commons", }; ---- Zwraca wartość równą ciągowi niepustemu: "Template": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "Template", ["kod projektu"] = "commons", }; </syntaxhighlight> A przy zamianie tej przestrzeni nazw w powyższym przykładzie na numer - identyfikator nazw, czyli {{Code|id}}, to identyfikator przestrzeni nazw, innej niż główna, z jej wersji nazwowej, otrzymamy wynik w postaci nazwy niepustej, bo to nie jest przestrzeń główna, oznaczana zerowy tym identyfikatorem, czyli w postaci tej liczby: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość równą ciągowi niepustemu: "Template": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = 10, ["klucz projektu"] = "commons", }; ---- Zwraca wartość równą ciągowi niepustemu: "Template": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = 10, ["kod projektu"] = "commons", }; </syntaxhighlight> Przy użyciu zmiennej generującej wyświetlanie w postaci znaków, o charakterze niepustości, przy użyciu tego parametru, otrzymujemy wynik, jak powyżej, bo nazwa wyświetlana przestrzeni jest od razu niepusta, bo przestrzeni nazw mają wartość niepustą, więc nie trzeba ich uznawać, że są inne: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość równą nazwie przestrzeni niegłównej: "Template": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "Template", ["klucz projektu"] = "commons", ["wyświetlana"] = "tak", }; ---- Zwraca wartość równą nazwie przestrzeni niegłównej: "Template": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "Template", ["kod projektu"] = "commons", ["wyświetlana"] = "tak", }; </syntaxhighlight> A gdy parametr {{Code|nazwa}} przyjmuje wartość liczbową w postaci identyfikatora {{Code|id}}, innej niż dla przestrzeni głównej, ale zapisaną dla tych samych przestrzeni nazw, jak powyżej, co czyni, że tutaj jest też podobnie, otzrymamy te same wartości, tylko jest inna reprezentacja parametrów wchodzących do funkcji, jak powyżej: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość równą nazwie przestrzeni niegłównej: "Template": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = 10, ["klucz projektu"] = "commons", ["wyświetlana"] = "tak", }; ---- Zwraca wartość równą nazwie przestrzeni niegłównej: "Template": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = 10, ["kod projektu"] = "commons", ["wyświetlana"] = "tak", }; </syntaxhighlight> Widzimy, jedynie dla przestrzeni niepustej, że użycie tego parametru, według przykładów powyżej, jest opcjonalne, a nawet zbędne, bo ten parametr w tym przypadku nic nie zmienia, zmienia tylko dla przestrzeni głównej, którego ciąg charakteryzujący tą przestrzeń jest pusty, a jej wersja wyświetlana posiada za to ciąg niepusty, o jej wersji kanonicznej {{Code|{{Np|(main)|link=tak|kanoniczna=tak}}}}, a w wersji polskiej {{Code|{{Np|(main)|link=tak}}}}, te nazwy można pomiędzy sobą tłumaczyć za pomocą funkcji {{m|Nazwy|NpDane}} lub szablonu {{s|NpDane}}. ====== Nazwy wyświetlane przy użyciu tych kodów przetłumaczone je na język polski dla przestrzeni innej niż główna ====== Z wyświetlaniem na ekranie przestrzeni nazw charakteryzujące ciągiem niepustym mamy podobne wyniki jak powyżej bez parametru {{Code|["wyświetlana"] {{=}} "tak"}}: Przy użyciu zmiennej generującej wyświetlanie w postaci znaków o charakterze niepustej przetłumaczonej na język polski, używając parametrów w postaci pewnych nazw niepusstych, dla projektów innych niż wq języku polskim, ale te przestrzenie nazw tłumaczymyna ich odpowiedniki polskie, jakie istnieją, na projektach właśnie, że polskich: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość równą nazwie przestrzeni niegłównej: "Szablon": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "Template", ["klucz projektu"] = "commons", ["po polsku"] = "tak", }; ---- Zwraca wartość równą nazwie przestrzeni niegłównej: "Szablon": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "Template", ["kod projektu"] = "commons", ["po polsku"] = "tak", }; </syntaxhighlight> Albo przy użyciu numeru {{Code|id}} (identyfikatora przestrzeni nazw), wtedy właśnie robimy to samo, co powyżej, tylko jest inna reprezentacja parametrów, ale ta sama przestrzeń, więc uzyskujemy te same wyniki, czyli o tej samej wartości, mimo, że wizulanie,a by inne parametry: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość równą nazwie przestrzeni niegłównej: "Szablon": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = 10, ["klucz projektu"] = "commons", ["po polsku"] = "tak", }; ---- Zwraca wartość równą nazwie przestrzeni niegłównej: "Szablon": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = 10, ["kod projektu"] = "commons", ["po polsku"] = "tak", }; </syntaxhighlight> Przy użyciu zmiennej generującej wyświetlanie, użzywając parametru wspoianego powyżej, w postaci znaków o charakterze niepustej przy użyciu tego parametru, co sugeruje, że ten argiment nic nie zmienia, ale jedynie wyświetla się to samo, co bez tego parametru: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość równą nazwie przestrzeni niegłównej: "Szablon": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "Template", ["klucz projektu"] = "commons", ["wyświetlana"] = "tak", ["po polsku"] = "tak", }; ---- Zwraca wartość równą nazwie przestrzeni niegłównej: "Szablon": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "Template", ["kod projektu"] = "commons", ["wyświetlana"] = "tak", ["po polsku"] = "tak", }; </syntaxhighlight> A tutaj przy użyciu identyfikatora przestrzeni nazw przestrzeni nazw niegłównej, czyli przestrzeni nazw charakteryzującej się jej wersją niewyświetlaną niepustą, z tymi samymi parametrami, co powyżej, z tymi samymi wartościami, tylko jest inna reprezentacja przestrzeni nazw: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość równą nazwie przestrzeni niegłównej: "Szablon": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = 10, ["klucz projektu"] = "commons", ["wyświetlana"] = "tak", ["po polsku"] = "tak", }; ---- Zwraca wartość równą nazwie przestrzeni niegłównej: "Szablon": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = 10, ["kod projektu"] = "commons", ["wyświetlana"] = "tak", ["po polsku"] = "tak", }; </syntaxhighlight> Widzimy, jedynie dla tej przestrzeni, że użycie wspomnianego tego parametru jest opcjonalne, bo nic w tym przypadki nie zmienia, bo przestrzeń nazw nie jest pusta, lub nie jest reprezentowana inaczej, niż przez liczbę {{Code|0}}. ===== Tłumaczenie nazw przestrzeni nazw z jednego języka na drugi ===== ====== Tłumaczenie nazw obcojęzycznych nazw przestrzeni nazw na jej wersję polską, tzn. jej język polski, i na język angielski, tzn. jej wersje angielską w postaci nazwy kanonicznej, albo identyfikator przestrzeni nazw lub operację przeciwną ====== Tłumaczenie na nazwę kanoniczną w języku angielskim, z nazwy polskiej, czy nazwy w innym języku, tutaj w języku polskim, w jakim ona jest jedynie dostępna, przy użyciu parametru {{Code|kanoniczna {{=}} "tak"}}: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Template": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "Szablon", ["klucz projektu"] = "pl:w", kanoniczna = "tak", }; ---- Zwraca wartość: "Template": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "Szablon", ["kod projektu"] = "w", ["kod języka"] = "pl", kanoniczna = "tak", }; </syntaxhighlight> Tłumaczenie identyfikatora przestrzeni nazw na nazwę kanoniczną, ale przestrzeni nazw są te same, co powyżej, tylko zamiast przestrzeni nazw: "Szablon", mamy to jej idenntyfiator, którym jest liczba: {{Code|10}}, wtedy otrzymamy te same wyniki, co powyżej: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Template": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = 10, ["klucz projektu"] = "pl:w", kanoniczna = "tak", }; ---- Zwraca wartość: "Template": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = 10, ["kod projektu"] = "w", ["kod języka"] = "pl", kanoniczna = "tak", }; </syntaxhighlight> Przypadek odwrotny, do poprzednich, dla tego samego projektu, gdy nie używamy tego parametru, ale przestrzenie nazw są tym razem po angielsku, jako nazwy kanoniczne, które są zamieniane na jej wersją charakterystyczną dla danego projektu, tutaj polską: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "Template", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "Template", ["kod projektu"] = "w", ["kod języka"] = "pl", }; </syntaxhighlight> Identyfikator przestrzeni nazw tłumaczymy na jego nazwę polską - ewentualnie, na wersję języka projektu, i dlatego tutaj używamy języka polskiego, ponieważ mamy do czynienia z projektem polskojęzycznym, bo kod języka projektu wskazuje tutaj na ten język: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = 10, ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = 10, ["kod projektu"] = "w", ["kod języka"] = "pl", }; </syntaxhighlight> ====== Tłumaczenie nazw przestrzeni na jej wersję w innych języku w jakikolwiek projekcie ====== Do tłumaczenia używamy parametru {{Code|awaryjnie}}, której użycie w funkcji {{m|Nazwy|NpDane}}, powoduje skorzystanie z bazy danym projektów {{Code|MediaWiki}}, czyli {{Code|{{NS|l=tak|w=tak|k=en:d|jw=tak}}}} (po angielsku), a inaczej {{Code|{{NS|l=tak|w=tak|k=d}}}} (po polsku): * Przy użyciu nazw przestrzeni nazw w postaci, nie identyfikatorów, nazwanej łańcuchem znaków,możemy daną przestrzeń przetłomaczyć na dany język, nie używając przy tym żadnych stron: {{Code|.json}}, w podstronach modułu {{Code|{{m|Nazwy/}}}}: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "Kategorie", ["klucz projektu"] = "de:w", awaryjnie = "tak", kanoniczna = "tak", }; local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "Category", ["klucz projektu"] = "de:w", awaryjnie = "tak", }; local nazwa_przestrzeni_nazw_3 = nazwy_modul.NpDane{ nazwa = "Категория", ["klucz projektu"] = "ru:w", awaryjnie = "tak", kanoniczna = "tak", }; local nazwa_przestrzeni_nazw_4 = nazwy_modul.NpDane{ nazwa = "Category", ["klucz projektu"] = "ru:w", awaryjnie = "tak", }; </syntaxhighlight> * Jako z ich wersją numeryczną, czyli w postaci identyfikatorów, nazwanej w postaci pewnego numeru, ale przestrzenie nazw są te same, co powyżej, tylko inaczej zapisane, a inne parametry są takie same, czyli z czterech przykładów generują się jedynie dwa, ale wyniki są te same: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = 14, ["klucz projektu"] = "de:w", awaryjnie = "tak", }; local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa 14, ["klucz projektu"] = "ru:w", awaryjnie = "tak", }; </syntaxhighlight> Przykłady tłumaczenia z jednej wersji językowej w danym języku na angielski (wersję kanoniczną) i odwrotnie # {{Code|{{s|NpDane|Kategorie|klucz projektu{{=}}de:w|awaryjnie{{=}}tak|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|Kategorie|klucz projektu=de:w|awaryjnie=tak|kanoniczna=tak}}}} # {{Code|{{s|NpDane|Category|klucz projektu{{=}}de:w|awaryjnie{{=}}tak}}}} → {{Tt|{{NpDane|Category|klucz projektu=de:w|awaryjnie=tak}}}} # {{Code|{{s|NpDane|Категория|klucz projektu{{=}}ru:w|awaryjnie{{=}}tak|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|Категория|klucz projektu=ru:w|awaryjnie=tak|kanoniczna=tak}}}} # {{Code|{{s|NpDane|Category|klucz projektu{{=}}ru:w|awaryjnie{{=}}tak}}}} → {{Tt|{{NpDane|Category|klucz projektu=ru:w|awaryjnie=tak}}}} Przykłady przy użyciu identyfikatorów: # {{Code|{{s|NpDane|14|klucz projektu{{=}}de:w|awaryjnie{{=}}tak}}}} → {{Tt|{{NpDane|Category|klucz projektu=de:w|awaryjnie=tak}}}} # {{Code|{{s|NpDane|14|klucz projektu{{=}}ru:w|awaryjnie{{=}}tak}}}} → {{Tt|{{NpDane|Category|klucz projektu=ru:w|awaryjnie=tak}}}} ===== Użycie parametru {{Code|link}} oraz zależność od projektu i języka, wyświetlanie nazw przestrzeni nazw po polsku ===== Przykłady poniżej i niektóre wywołania funkcji {{m|Nazwy|NpDane}} piszemy przy pomocy parametru {{Code|link}}, który posiłkujemy z {{Code|klucz projektu}}, przykładowo z pomożeniem użycia zmiennej {{Code|po polsku}}, ewentualnie z użyciem argumentu {{Code|kanoniczna}}, co powoduje wyświetlanie się linku do pewnej strony naa tym samym projekcie lub innym,a jeśli mamy nazwę kanoniczną, to otrzymamy w linku nazwę linku właśnie że wyświetlaną, np. w postaci: {{Np|(main)|link=tak}}: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "Szablon", link = "tak", ["klucz projektu"] = "pl:w", }; local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "Szablon", link = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; local nazwa_przestrzeni_nazw_3 = nazwy_modul.NpDane{ nazwa = "Template", link = "tak", ["klucz projektu"] = "en:w", ["po polsku"] = "tak", }; ---- Tutaj nazwa przestrzeni zostanie wyświetlona, jako nazwa linku, po angielsku, czyli w wersji kanonicznej local nazwa_przestrzeni_nazw_4 = nazwy_modul.NpDane{ nazwa = "Template", link = "tak", kanoniczna = "tak", ["klucz projektu"] = "en:w", ["po polsku"] = "tak", }; local nazwa_przestrzeni_nazw_5 = nazwy_modul.NpDane{ nazwa = "", link = "tak", ["klucz projektu"] = "en:w", }; local nazwa_przestrzeni_nazw_6 = nazwy_modul.NpDane{ nazwa = "", link = "tak", kanoniczna = "tak", ["klucz projektu"] = "en:w", }; local nazwa_przestrzeni_nazw_7 = nazwy_modul.NpDane{ nazwa = "", link = "tak", ["klucz projektu"] = "en:w", ["po polsku"] = "tak", }; ---- Tutaj nazwa przestrzeni zostanie wyświetlona, jako nazwa linku, po angielsku, czyli w wersji kanonicznej local nazwa_przestrzeni_nazw_8 = nazwy_modul.NpDane{ nazwa = "", link = "tak", kanoniczna = "tak", ["klucz projektu"] = "en:w", ["po polsku"] = "tak", }; </syntaxhighlight> Teraz będziemy, to robili przy użyciu identyfikatorów przestrzeni nazw, który będziemy tłumaczyć na jego wersję charakterystyczną dla danego projektu, nazwę kanoniczną lub na jego odpowiednik polski, ale mamy te same przykłady, co powyżej, bo te same przestrzenie nazw, tylko z tą różnicą, że ona jest inaczej zapisana, więc otrzymamy te same wyniki, więc: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = 10, link = "tak", ["klucz projektu"] = "pl:w", }; local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = 10, link = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; local nazwa_przestrzeni_nazw_3 = nazwy_modul.NpDane{ nazwa = 10, link = "tak", ["klucz projektu"] = "en:w", ["po polsku"] = "tak", }; ---- Tutaj nazwa przestrzeni zostanie wyświetlona, jako nazwa linku, po angielsku, czyli w wersji kanonicznej local nazwa_przestrzeni_nazw_4 = nazwy_modul.NpDane{ nazwa = 10, link = "tak", kanoniczna = "tak", ["klucz projektu"] = "en:w", ["po polsku"] = "tak", }; local nazwa_przestrzeni_nazw_5 = nazwy_modul.NpDane{ nazwa = 0, link = "tak", ["klucz projektu"] = "en:w", }; local nazwa_przestrzeni_nazw_6 = nazwy_modul.NpDane{ nazwa = 0, link = "tak", kanoniczna = "tak", ["klucz projektu"] = "en:w", }; local nazwa_przestrzeni_nazw_7 = nazwy_modul.NpDane{ nazwa = 0, link = "tak", ["klucz projektu"] = "en:w", ["po polsku"] = "tak", }; ---- Tutaj nazwa przestrzeni zostanie wyświetlona, jako nazwa linku, po angielsku, czyli w wersji kanonicznej local nazwa_przestrzeni_nazw_8 = nazwy_modul.NpDane{ nazwa = 0, link = "tak", kanoniczna = "tak", ["klucz projektu"] = "en:w", ["po polsku"] = "tak", }; </syntaxhighlight> ---- Przykłady funkcji w wyniku są: # {{Code|{{s|NpDane|nazwa{{=}}Szablon|link{{=}}tak|klucz projektu{{=}}pl:w}}}} → {{Tt|{{NpDane|nazwa=Szablon|link=tak|klucz projektu=pl:w}}}} # {{Code|{{s|NpDane|nazwa{{=}}Szablon|link{{=}}tak|klucz projektu{{=}}pl:w|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=Szablon|link=tak|klucz projektu=pl:w|kanoniczna=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}|link{{=}}tak|klucz projektu{{=}}pl:w}}}} → {{Tt|{{NpDane|nazwa=|link=tak|klucz projektu=pl:w}}}} # {{Code|{{s|NpDane|nazwa{{=}}|link{{=}}tak|klucz projektu{{=}}pl:w|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=|link=tak|klucz projektu=pl:w|kanoniczna=tak}}}} Gdy parametr {{Code|nazwa}} jest liczbą, odpowiedniki tych samych przykładów, co powyżej, tylko przestrzeń nazw jest w postaci numerycznej: # {{Code|{{s|NpDane|nazwa{{=}}10|link{{=}}tak|klucz projektu{{=}}pl:w}}}} → {{Tt|{{NpDane|nazwa=10|link=tak|klucz projektu=pl:w}}}} # {{Code|{{s|NpDane|nazwa{{=}}10|link{{=}}tak|klucz projektu{{=}}pl:w|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=10|link=tak|klucz projektu=pl:w|kanoniczna=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}0|link{{=}}tak|klucz projektu{{=}}pl:w}}}} → {{Tt|{{NpDane|nazwa=0|link=tak|klucz projektu=pl:w}}}} # {{Code|{{s|NpDane|nazwa{{=}}0|link{{=}}tak|klucz projektu{{=}}pl:w|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=0|link=tak|klucz projektu=pl:w|kanoniczna=tak}}}} ---- ---- Inne przykłady, projektu niepolskiego, ale mającej jego wersje polską: # {{Code|{{s|NpDane|nazwa{{=}}Template|link{{=}}tak|klucz projektu{{=}}en:w|po polsku{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=Template|link=tak|klucz projektu=en:w|po polsku=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}Template|link{{=}}tak|klucz projektu{{=}}en:w|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=Template|link=tak|klucz projektu=en:w|kanoniczna=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}|link{{=}}tak|klucz projektu{{=}}en:w|po polsku{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=|link=tak|klucz projektu=en:w|po polsku=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}|link{{=}}tak|klucz projektu{{=}}en:w|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=|link=tak|klucz projektu=pl:w|kanoniczna=tak}}}} Gdy parametr {{Code|nazwa}} jest liczbą, odpowiedniki przykładów powyższych z innym przedstawieniem przestrzeni nazw: # {{Code|{{s|NpDane|nazwa{{=}}10|link{{=}}tak|klucz projektu{{=}}en:w|po polsku{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=10|link=tak|klucz projektu=en:w|po polsku=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}10|link{{=}}tak|klucz projektu{{=}}en:w|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=10|link=tak|klucz projektu=en:w|kanoniczna=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}0|link{{=}}tak|klucz projektu{{=}}en:w|po polsku{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=0|link=tak|klucz projektu=en:w|po polsku=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}0|link{{=}}tak|klucz projektu{{=}}en:w|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=0|link=tak|klucz projektu=pl:w|kanoniczna=tak}}}} ---- ---- A dla projektu niemającej wersji polskiej, np. tylko wersję angielską: # {{Code|{{s|NpDane|nazwa{{=}}Template|link{{=}}tak|klucz projektu{{=}}commons|po polsku{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=Template|link=tak|klucz projektu=commons|po polsku=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}Template|link{{=}}tak|klucz projektu{{=}}commons|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=Template|link=tak|klucz projektu=commons|kanoniczna=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}|link{{=}}tak|klucz projektu{{=}}commons|po polsku{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=|link=tak|klucz projektu=commons|po polsku=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}|link{{=}}tak|klucz projektu{{=}}commons|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=|link=tak|klucz projektu=commons|kanoniczna=tak}}}} Gdy parametr {{Code|nazwa}} jest liczbą, wtedy mamy te same przykłady, co powyżej, tylko ta sama przestrzeń nazw jest w innej postaci przedstawiona: # {{Code|{{s|NpDane|nazwa{{=}}10|link{{=}}tak|klucz projektu{{=}}commons|po polsku{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=10|link=tak|klucz projektu=commons|po polsku=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}10|link{{=}}tak|klucz projektu{{=}}commons|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=10|link=tak|klucz projektu=commons|kanoniczna=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}0|link{{=}}tak|klucz projektu{{=}}commons|po polsku{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=0|link=tak|klucz projektu=commons|po polsku=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}0|link{{=}}tak|klucz projektu{{=}}commons|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=0|link=tak|klucz projektu=commons|kanoniczna=tak}}}} ===== Zamiana przestrzeni nazw przedmiotowej na dyskusji lub przeciwnie, i transformacje tożsame ===== * Używać tu będziemy dodatkowo parametrów: {{Code|przedmiotowa}} - zamiany przestrzeni nazw na przedmiotową, czy: {{Code|dyskusja}} - na dyskusji. Można też przechodzić z tej samej przestrzeni nazw w nią samą, lub do niego skojarzonej, tzn. z przedmiotowej do dyskusji lub odwrotnie, wtedy w tym przypadku otrzymujemy nazwę po polsku, dla poskich projektów, dla projektów w danym języku, na nazwę w danym języku, przykłady: <syntaxhighlight lang="lua"> local nazwy_modul = require("Module:Nazwy"); -- Gdy nazwą przestrzeni jest nazwa niekanoniczna: ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_przedmotowej_1 = nazwy_modul.NpDane{ nazwa = "Dyskusja szablonu", przedmiotowa = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_dyskusji_1 = nazwy_modul.NpDane{ nazwa = "Szablon", dyskusja = "tak", ["klucz projektu"] = "pl:w", }; -- Gdy nazwą przestrzeni jest nazwa kanoniczna ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_przedmotowej_2 = nazwy_modul.NpDane{ nazwa = "Template talk", przedmiotowa = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_dyskusji_2 = nazwy_modul.NpDane{ nazwa = "Template", dyskusja = "tak", ["klucz projektu"] = "pl:w", }; -- Gdy prrzestrzeń nazw jest w postaci jej numeru id ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_przedmotowej_3 = nazwy_modul.NpDane{ nazwa = 11, przedmiotowa = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_dyskusji_3 = nazwy_modul.NpDane{ nazwa = 10, dyskusja = "tak", ["klucz projektu"] = "pl:w", }; </syntaxhighlight> Gdy użyjemy dodatkowo parametr {{Code|kanoniczna}}, wtedy otrzymujemy te nazwy w postaci nazwy w języku angielskim (kanoniczne) tych przestrzeni nazw, są te same przykłady, co powyżej, tylko jest inna wersja językowa w wyniku tej samej otrzymanej przestrzeni nazw: <syntaxhighlight lang="lua"> local nazwy_modul = require("Module:Nazwy"); -- Gdy nazwą przestrzeni jest nazwa niekanoniczna: ---- Zwraca wartość: "Template": local nazwa_przestrzeni_przedmotowej_1 = nazwy_modul.NpDane{ nazwa = "Dyskusja szablonu", przedmiotowa = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Template talk": local nazwa_przestrzeni_dyskusji_1 = nazwy_modul.NpDane{ nazwa = "Szablon", dyskusja = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", -- Gdy nazwą przestrzeni jest nazwa kanoniczna: ---- Zwraca wartość: Template": local nazwa_przestrzeni_przedmotowej_2 = nazwy_modul.NpDane{ nazwa = "Template talk", przedmiotowa = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Template talk": local nazwa_przestrzeni_dyskusji_2 = nazwy_modul.NpDane{ nazwa = "Template", dyskusja = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; -- Gdy przestrzeń nazw jest w postaci jej numeru id: ---- Zwraca wartość: ""Template": local nazwa_przestrzeni_przedmotowej_3 = nazwy_modul.NpDane{ nazwa = 11, przedmiotowa = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Template talk": local nazwa_przestrzeni_dyskusji_3 = nazwy_modul.NpDane{ nazwa = 10, dyskusja = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; </syntaxhighlight> Przejście z tej samej przestrzeni na tą samą możemy uzyskać to wtedy, tzw. przejście tożsamościowe, poprzez tłumaczenie nazw dyskusji na dysusji, i nazw przedmiotowych na przedmiotowe, dla róznych projektów, nie tylko polskich, a tutaj mamy dla języka polskiego, tylko repezentacja językowa może być inna, tutaj jest ta polska (w wersji niekanonicznej) i angielska (w wersji kanonicznej): <syntaxhighlight lang="lua"> local nazwy_modul = require("Module:Nazwy"); -- Gdy nazwą przestrzeni jest nazwa niekanoniczna, gdy w ty przypadku chcemy uzyskać nazwę charakterystyczną dla danego języka danego projektu: ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_przedmotowej_1 = nazwy_modul.NpDane{ nazwa = "Szablon", przedmiotowa = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_dyskusji_1 = nazwy_modul.NpDane{ nazwa = "Dyskusja szablonu", dyskusja = "tak", ["klucz projektu"] = "pl:w", }; -- Gdy nazwą przestrzeni jest nazwą kanoniczną: ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_przedmotowej_2 = nazwy_modul.NpDane{ nazwa = "Template", przedmiotowa = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_dyskusji_2 = nazwy_modul.NpDane{ nazwa = "Template talk", dyskusja = "tak", ["klucz projektu"] = "pl:w", }; -- Gdy przestrzeń nazw jest w postaci jej numeru id: ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_przedmotowej_3 = nazwy_modul.NpDane{ nazwa = 10, przedmiotowa = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_dyskusji_3 = nazwy_modul.NpDane{ nazwa = 11, dyskusja = "tak", ["klucz projektu"] = "pl:w", }; </syntaxhighlight> Gdy użyjemy dodatkowo parametr {{Code|kanoniczna}}, uzyskamy nazwę angielską danej przestrzeni nazw, nawet gdy to jest przestrzeń podana w języku polskim, dla polskiego projektu, lub w jezyku charakterystycznym dla danego projektu, jeżeli mamy to w bazie przestrzeni nazw w formie pliku {{Code|.json}}, podane w podstronach modułu {{m|Nazwy/}}, to te nazwy wtedy obsługuje: <syntaxhighlight lang="lua"> local nazwy_modul = require("Module:Nazwy"); -- Gdy nazwą przestrzeni jest nazwą niekanoniczną: ---- Zwraca wartość: "Template": local nazwa_przestrzeni_przedmotowej_1 = nazwy_modul.NpDane{ nazwa = "Szablon", przedmiotowa = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Template talk": local nazwa_przestrzeni_dyskusji_1 = nazwy_modul.NpDane{ nazwa = "Dyskusja szablonu", dyskusja = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; -- Gdy nazwą przestrzeni jest nazwą kanoniczną: ---- Zwraca wartość: Template": local nazwa_przestrzeni_przedmotowej_2 = nazwy_modul.NpDane{ nazwa = "Template", przedmiotowa = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Template talk": local nazwa_przestrzeni_dyskusji_2 = nazwy_modul.NpDane{ nazwa = "Template talk", dyskusja = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; -- Gdy przestrzeń nazw jest w postaci jej numeru id: ---- Zwraca wartość: "Template": local nazwa_przestrzeni_przedmotowej_3 = nazwy_modul.NpDane{ nazwa = 10, przedmiotowa = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", } ---- Zwraca wartość: "Template talk": local nazwa_przestrzeni_dyskusji_3 = nazwy_modul.NpDane{ nazwa = 11, dyskusja = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; </syntaxhighlight> ===== Nazwy przestrzeni z myślnikami dolnymi ===== Jeżeli nazwy danych przestrzeni, niezależnie, czy są w postaci niekanonicznej, czy nie, ale jeżeli w nazwie zawierają spację, to one jako w wyniku zamiast nich będą miały dolny myślnik zamiast spacji, gdy użyjemy parametru: {{Code|["z myślnikami dolnymi"] {{=}} "tak"}}, czyli: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Dyskusja_szablonu": local nazwa_przestrzeni_1 = nazwy_modul.NpDane{ nazwa = "Dyskusja szablonu", ["z myślnikami dolnymi"] = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Dyskusja_szablonu": local nazwa_przestrzeni_2 = nazwy_modul.NpDane{ nazwa = "Template talk", ["z myślnikami dolnymi"] = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Template_talk";: local nazwa_przestrzeni_3 = nazwy_modul.NpDane{ nazwa = "Dyskusja szablonu", kanoniczna = "tak", ["z myślnikami dolnymi"] = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Template_talk": local nazwa_przestrzeni_4 = nazwy_modul.NpDane{ nazwa = "Template talk", kanoniczna = "tak", ["z myślnikami dolnymi"] = "tak", ["klucz projektu"] = "pl:w", }; </syntaxhighlight> ===== Uzyskiwanie kanonicznej nazwy projektu, nazwy przedmiotowej i jej dyskusji, z jej odpowiednika nazwy przestrzeni nazw ===== Dla przestrzeni nazw: {{NpDane|Wikipedia|link=tak|klucz projektu=pl:w}}, jej nazwy projektowej: {{NpDane|Wikipedia|link=tak|kanoniczna=tak|nazwij projektem=tak|klucz projektu=pl:w}} możemy uzyskać, gdy dla funkcji {{m|Nazwy|NpDane}} podamy parametr: {{Code|["nazwij projektem"] {{=}} "tak"}}, dla przestrzeni przedmiotowej lub dyskusji: {{NpDane|Wikipedia talk|link=tak|klucz projektu=pl:w}}, jej nazwy projektowej: {{NpDane|Wikipedia talk|link=tak|kanoniczna=tak|nazwij dyskusją projektu=tak|klucz projektu=pl:w}}, gdy podamy parametr {{Code|["nazwij dyskusją projektu"] {{=}} "tak"}}, czyli: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Wikipedia": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "Wikipedia", ["nazwij projektem"] = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Project": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "Wikipedia", ["nazwij projektem"] = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Project": local nazwa_przestrzeni_nazw_3 = nazwy_modul.NpDane{ nazwa = "Dyskusja Wikipedii", ["nazwij projektem"] = "tak", przedmiotowa = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Dyskusja Wikipedii": local nazwa_przestrzeni_nazw_4 = nazwy_modul.NpDane{ nazwa = "Wikipedia", ["nazwij dyskusją projektu"] = "tak", dyskusja = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Project talk": local nazwa_przestrzeni_nazw_5 = nazwy_modul.NpDane{ nazwa = "Dyskusja Wikipedii", ["nazwij dyskusją projektu"] = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Project talk": local nazwa_przestrzeni_nazw_6 = nazwy_modul.NpDane{ nazwa = "Wikipedia", ["nazwij dyskusją projektu"] = "tak", dyskusja = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; </syntaxhighlight> ===== Różne wersje sprawdzania istnienia przestrzeni nazw ===== ====== Sprawdzanie, czy dana przestrzeń jest poprawnie podane, czy istnieje ====== Możemy sprawdzić, istnienie podanej przestrzeni nazw poprzez użycie parametru {{Code|istnieje}} z wartością niepustą, wtedy dla obu jej wartości uzyskujemy wyniki, wskazujać, czy istnieją przestrzenie nazw istniejące i które nie mają prawa istnieć z racji bytu, w pierwszym przypadku otrzymamy treściwy wynik, a w drugim komunikatro błędzie: <syntaxhighlight lang="lua">0 local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "Szablon", istnieje = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Moja przestrzeń": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "Moja przestrzeń", istnieje = "", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "(błąd)": local nazwa_przestrzeni_nazw_3 = nazwy_modul.NpDane{ nazwa = "Moja przestrzeń", istnieje = "tak", ["klucz projektu"] = "pl:w", }; </syntaxhighlight> Gdy dana przestrzeń nie istnieje przy użyciu wartości niepustej parametru {{Code|istnieje}}, wtedy otrzymujemy błąd funkcji w postaci tekstu {{Code|(błąd)}}, a gdy nie podamy tego parametru, to otrzymamy nazwę sformatowaną danej nieznanej przestrzeni nazw po usunięciu wszystkich spacji lub dolnych myślników na początku i końcu ciągu oraz zbędnych wewnątrz tego ciągu i zastąpieniu ich kolejnych jedną spacją. A gdy jednak przestrzeń nazw istnieje, to funkcja zachowuje się tak, jakby nie podano tego parametru. ====== Łatwe sprawdzanie istnienia danej przestrzeni nazw ====== Sprawdzamy tutaj istnienie podanej przestrzeni nazw w parserach wikikodu {{Code|MediaWiki}}, wtedy dla nieistniejącej przestrzeni nazw otrrzymamy wynik pusty, a dla istniejącej już nie, wyjątkiem jest przestrzeń główna, dla której wartość otrzymana jest pusta, co nie trudno jest odróżnić od stanu błędu funkcji, chyba, że użyjemy pewnego parametru opisywanego poniżej: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "Szablon", istnieje = "tak", ["wynik błędu nietekstowy"] = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Moja przestrzeń": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "Moja przestrzeń", istnieje = "", ["wynik błędu nietekstowy"] = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: nil: local nazwa_przestrzeni_nazw_3 = nazwy_modul.NpDane{ nazwa = "Moja przestrzeń", istnieje = "tak", ["wynik błędu nietekstowy"] = "tak", ["klucz projektu"] = "pl:w", }; </syntaxhighlight> W kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}} powyższe wywołanie przy nieznanych przestrzeniach przyjmuje wartość {{Code|nil}} (ostatni przykład), a wikikodzie w szablonach wartość pustą: "". A jeżeli chcemy sprawdzić, za pomocą funkcji parsera wikikodu: {{Code|{{s|#if:coś|wtedy|przeciwnie}}}}, używając odpowiednika szablonowego {{s|NpDane}}, wtedy musimy użyć parametru: {{Code|["wynik błędu nietekstowy"] {{=}} "tak"}}, używany z: {{Code|istnieje {{=}} "tak"}}, gdy dana przestrzeń nie istnieje, wtedy uzyskamy wartość pustą (bo wartość {{Code|nil}} jest tłumaczone na to), a żeby odróżnić ją od nazwy przestrzeni nazw głównej, to należy dodatkowo użyć: {{Code|["wyświetlana"] {{=}} "tak"}}, wtedy dla wartości pustej tej nazwy przestrzeni nazw, uzyskujemy w wyniku czego nie wartość pustą, czyli: {{Code|(główna)}} dla projektów polskich, lub po użyciu parametru {{Code|["po polsku"] {{=}} "tak"}} z wartością niepustą albo {{Code|(main)}} dla przestrzeni angielskich bądź innych, gdy nie ma obsługi w bazie przestrzeni nazw, tę nazwę można uzyskać też przy parametrze {{Code|kanoniczna {{=}} "tak"}} dla każdego obsługiwanego projektu {{Strong|wiki}}, więc przy takich realiach łatwo to odróżnić od komunikatu błędu tej funkcji. ===== Uzyskiwanie uchwytu danej przestrzeni nazw, analogicznie do funkcji {{Code|mw.site.namespaces}} (ale w sposób inny sformułowana), ale też z innym zestawem parametrów ===== Uchwyt niskopoziomowy do danej przestrzeni nazw nie można uzyskać przy pomocy kodu z: {{Code|mw.site.namespaces}}, ponieważ jest on dla przestrzeni na bieżącym projekcie, a tutaj mamy siostrzany. Funkcja uzyskująca uchwyt ignoruje wielkość liter w przestrzeni nazw oraz powtórzone odstępy zrealizowane za pomocą spacji lub dolnych myślników. To wysokopoziomowe uzyskanie uchwytu można utworzyć przy pomocy parametru: {{Code|uchwyt}}: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local uchwyt_1 = nazwy_modul.NpDane{ nazwa = "Szablon", uchwyt = "tak", ["klucz projektu"] = "pl:w", }; local uchwyt_2 = nazwy_modul.NpDane{ nazwa = "Template", uchwyt = "tak", ["klucz projektu"] = "pl:w", }; local uchwyt_3 = nazwy_modul.NpDane{ nazwa = 10, uchwyt = "tak", ["klucz projektu"] = "pl:w", }; </syntaxhighlight> Funkcja {{Code|nazwy_modul.NpDane}} jest bardziej ogólniejsza niż {{Code|mw.site.namespaces}} na projekcie bieżącym, ponieważ ona uwzględnia inne projekty niż polski {{NS|l=tak|w=tak}}, bo uwzględnia większą liczbę nazw przestrzeni nazw, czyli ona obejmuje wszystkie znane przestrzenie nazw, i dlatego należy stosować tę funkcję, a nie dedykowaną tabelę z połączoną z metatabelką za pomocą funkcji {{lpg|Lua}}. == Funkcje nazw serwisowych projektów siostrzanych polskiego {{NS|w=tak|l=tak|pk=d}} == === {{Code|m.NAZWASERWISU()}} === ==== Odpowiednik szablonowy ==== Odpowiednik szablonowy jest pod nazwą {{s|NAZWASERWISU}} (skrót: {{s|NS}}). Jego parametry są podobne do jego wersji bibliotecznej. Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce. ==== Funkcja biblioteczna ==== Szablon jest używany do uzyskania nazwy serwisu danej wiki, ewentualnie w postaci linku do strony głównej projektu danej wiki lub do artykułu o danej wiki na {{lpg|Wikipedia|Wikipedii}}, w jakieś podanej wersji językowej. {{OpisParametrów | 1 = Parametry podstawowe...| nagłówek1=tak | 2 = {{Parametr|wyspecjalizowana|tak}} | _2 = Tylko dla tej funkcji wywołanej w postaci ramki w wikikodzie w szablonach, gdy do niej wsadzamy bezpośrednio jako dzieci, a w przypadku z rodzica to ten parametr jest niepotrzebny lub powinien przyjmować wartość pustą, | 3 = Inne parametry...| nagłówek3=tak | 4 = Ta funkcja dalsze ma takie same parametry, co szablon w jego pełnej nazwie: {{s|NAZWASERWISU}}, lub skrótowej: {{s|NS}}.|nagłówek4=tak | 5 = Wszystkie powyższe zmienne są opcjonalne|nagłówek5=tak }} ===== Opis parametrów użytych razem z parametrem {{Code|link}} ===== Szablon przyjmuje parametr opcjonalny {{Code|link}} ({{s|NS|l{{=}}tak}}), dzięki któremu jest wyświetlany link, do strony głównej tego projektu, w postaci: {{Code|{{NS|l=tak}}}}, o nazwie linku, będącą jednocześnie nazwą serwisu projektu '''{{NS|l=tak}}'''. Gdy dodamy parametr {{Code|wikipedia{{=}}tak}} do wywołania {{Code|{{s|NS|l{{=}}tak|w{{=}}tak}}}}, wtedy uzyskamy wynik: {{Code|{{NS|l=tak|w=tak}}}}, w innym przypadku, gdy linkujemy do angielskiej {{NS|w=tak|l=tak|pk=mj|k=tak}}, wtedy dla wywołania {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|kj{{=}}en}}}} mamy: {{Code|{{NS|l=tak|w=tak|kj=en}}}}, a w przypadku angielskiego {{NS|w=tak|l=tak|pk=d}} dla wikikodu {{Code|{{s|NS|l{{=}}tak|kj{{=}}en}}}} mamy wynik w postaci: {{Code|{{NS|l=tak|kj=en}}}}, a jeśli użyjemy parametru {{Code|kod projektu}}, wtedy wywołanie {{Code|{{s|NS|link{{=}}tak|kp{{=}}s}}}}, to mamy: {{Code|{{NS|l=tak|kp=s}}}}, a gdy dodamy dodatkowo {{Code|wikipedia{{=}}tak}}, zatem {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|kp{{=}}s}}}} jest o wyniku: {{Code|{{NS|l=tak|w=tak|kp=s}}}}. {{OpisParametrów | 1 = Wyniki z parametrem: {{Parametr|link|tak}}, zostały obtoczone znacznikiem: {{Tag|code}}, dla odróżnienia rezultatu od reszty tekstu.|nagłówek1=tak }} ===== Wywołania szablonu z tekstem z małymi literami po linku (parametr: {{Code|po}}) i z dowolnym tekstem w nazwie linku (parametr: {{Code|za}}) ===== {{OpisParametrów | 1 = Parametr: {{Parametr|link|tak}}, w szablonie: {{s|NAZWASERWISU}}, mówi, że ma być podany link do strony głównej projektu lub artykułu na {{NS|l=tak|k=w}}. Można w nie podać parametr: {{Parametr|po|<łańcuch tekstowy>}}, który jest za linkiem, podobnie: {{Parametr|za|<łańcuch tekstowy>}}, który jest w nazwie linku, ale względem jej originalnej nazwy za nim.|nagłówek1=tak }} ====== Proste przykłady użycia, z linkiem do projektu bieżącego, przy użyciu parametru {{Code|link}} ====== Gdy chcemy wyświetlić link do polskiego projektu {{NS|w=tak|l=tak|pk=mj}} do jego strony głównej. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local link_1 = nazwy_modul.NAZWASERWISU{ link = "tak", po = "a", }; local link_2 = nazwy_modul.NAZWASERWISU{ link = "tak", za = "a", }; </syntaxhighlight> ; Analogiczne wywołanie szablonu{{Dk}} * {{Code|{{s|NS|l{{=}}tak|p{{=}}a}}}} → {{Tt|{{NS|l=tak|p=a}}}}, * {{Code|{{s|NS|l{{=}}tak|z{{=}}a}}}} → {{Tt|{{NS|l=tak|z=a}}}}. ; Kod wywołania tych szablonów: ;; Dla wywołania {{Code|{{s|NS|l{{=}}tak|p{{=}}a}}}}{{Dk}} {{PreNowiki|{{NS|l=tak|p=a}}}} ;; Dla wywołania {{Code|{{s|NS|l{{=}}tak|z{{=}}a}}}}{{Dk}} {{PreNowiki|{{NS|l=tak|z=a}}}} ====== Proste przykłady użycia, z linkiem do polskiej {{NS|w=tak|l=tak|k=w|pk=mj}}, przy użyciu parametru {{Code|link}} ====== Gdy chcemy wyświetlić link do artykułu o {{NS|w=tak|l=tak|k=b|pk=mj}} na polskiej {{NS|w=tak|l=tak|k=w|pk=mj}}. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local link_1 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", po = "a", }; local link_2 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", za = "a", }; </syntaxhighlight> ; Analogiczne wywołanie szablonu{{Dk}} * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|p{{=}}a}}}} → {{Tt|{{NS|l=tak|w=tak|p=a}}}}, * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|z{{=}}a}}}} → {{Tt|{{NS|l=tak|w=tak|z=a}}}}. ; Kod wywołania tych szablonów: ;; Dla wywołania {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|p{{=}}a}}}}{{Dk}} {{PreNowiki|{{NS|l=tak|w=tak|p=a}}}} ;; Dla wywołania {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|z{{=}}a}}}}{{Dk}} {{PreNowiki|{{NS|l=tak|w=tak|z=a}}}} ====== Przykłady użycia, z linkiem do obcojęzycznej {{NS|w=tak|l=tak|k=w|pk=mj}}, z polską podanego nazwą projektu, przy użyciu parametru {{Code|link}} ====== Gdy chcemy wyświetlić link do artykułu o {{NS|w=tak|l=tak|k=b|pk=mj}} na podanej obcojęzycznej {{NS|w=tak|l=tak|k=w|pk=mj}} podany za pomocą parametru {{Code|["klucz projektu"] {{=}} "en:s"}}. Jest to projekt: {{NS|l=tak|k=en:s}}, którego językiem jest: {{lpg|{{#invoke:lang|hasło|es}}}}. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local link_1 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", ["klucz projektu"] = "en:s", po = "a", }; local link_2 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", ["klucz projektu"] = "en:s", za = "a", }; </syntaxhighlight> ; Analogiczne wywołanie szablonu{{Dk}} * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|k{{=}}en:s|p{{=}}a}}}} → {{Tt|{{NS|l=tak|w=tak|k=en:s|p=a}}}}, * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|k{{=}}en:s|z{{=}}a}}}} → {{Tt|{{NS|l=tak|w=tak|k=en:s|z=a}}}}. ; Kod wywołania tych szablonów: ;; Dla wywołania {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|k{{=}}en:s|p{{=}}a}}}}{{Dk}} {{PreNowiki|{{NS|l=tak|w=tak|k=en:s|p=a}}}} ;; Dla wywołania {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|k{{=}}en:s|z{{=}}a}}}}{{Dk}} {{PreNowiki|{{NS|l=tak|w=tak|k=en:s|z=a}}}} ====== Przykłady użycia, z linkiem do obcojęzycznej {{NS|w=tak|l=tak|k=w|pk=mj}}, z niepolską podanego nazwą projektu, przy użyciu parametru {{Code|link}} ====== Gdy chcemy wyświetlić link do artykułu o {{NS|w=tak|l=tak|k=b|pk=mj}} do podanej obcojęzycznej {{NS|w=tak|l=tak|k=w|pk=mj}} podany za pomocą parametru {{Code|["klucz projektu"] {{=}} "en:s"}}. A nazwa linku ma być podana w języku tego projektu. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local link_1 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", ["klucz projektu"] = "en:s", ["w języku wiki"] = "tak", po = "a", }; local link_2 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", ["klucz projektu"] = "en:s", ["w języku wiki"] = "tak", za = "a", }; </syntaxhighlight> ; Analogiczne wywołanie szablonu{{Dk}} * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|k{{=}}en:s|jw{{=}}tak|p{{=}}a}}}} → {{Tt|{{NS|l=tak|w=tak|k=en:s|jw=tak|p=a}}}}, * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|k{{=}}en:s|jw{{=}}tak|z{{=}}a}}}} → {{Tt|{{NS|l=tak|w=tak|k=en:s|jw=tak|z=a}}}}. ; Kod wywołania tych szablonów: ;; Dla wywołania {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|k{{=}}en:s|jw{{=}}tak|p{{=}}a}}}}{{Dk}} {{PreNowiki|{{NS|l=tak|w=tak|k=en:s|jw=tak|p=a}}}} ;; Dla wywołania {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|k{{=}}en:s|jw{{=}}tak|z{{=}}a}}}}{{Dk}} {{PreNowiki|{{NS|l=tak|w=tak|k=en:s|jw=tak|za=a}}}} ===== Wywołania szablonu dotyczące, w {{NS|w=tak|l=tak|k=w|pk=mj}} iub nie, kodzie dla projektu {{NS|w=tak|l=tak|pk=m}} dla różnych wersji językowych ===== ====== Przykłady użycia funkcji {{Code|nazwy_modul.NAZWASERWISU()}} ====== Gdy chcemy podać nazwę projektu w postaci linku do artykułu strony głównej na {{NS|w=tak|l=tak|pk=mj}} lub artykułu na polskiej lub obcojęzycznej {{NS|w=tak|l=tak|k=w|pk=mj}}. Do jakiej {{NS|w=tak|l=tak|k=w|pk=mj}} ma być link, to wskazuje kod języka, np.: {{Code|["kod języka"] {{=}} "en"}}. Gdy nie podamy tego kodu, to linkujemy tylko do polskiego {{NS|w=tak|l=tak|pk=mj}} lub do polskiej {{NS|w=tak|l=tak|k=w|pk=mj}} (jeżeli podamy parametr {{Code|wikipedia {{=}} "tak"}}). A gdy podany jest ten kod, to możemy linkować nie tylko do polskich projektów siostrzanych polskiego {{NS|w=tak|l=tak|pk=mj}} (ale tylko różnych jego wersji językowych), ale też można linkować do obcojęzycznych projektów, którym jest Wikipedia do artykułu o tym projekcie. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local link_1 = nazwy_modul.NAZWASERWISSU{}; }; local link_2 = nazwy_modul.NAZWASERWISU{ link = "tak", }; local link_3 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", }; local link_4 = nazwy_modul.NAZWASERWISU{ link = "tak", ["kod języka"] = "pl", }; local link_5 = nazwy_modul.NAZWASERWISU{ link = "tak", ["kod języka"] = "en", }; local link_6 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", ["kod języka"] = "pl", }; local link_7 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", ["kod języka"] = "en", }; </syntaxhighlight> ====== Analogiczne wywołanie szablonu ====== * {{Code|{{s|NS}}}} → {{Tt|{{NS}}}}, * {{Code|{{s|NS|l{{=}}tak}}}} → {{Tt|{{NS|l=tak}}}}, * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak}}}} → {{Tt|{{NS|l=tak|w=tak}}}}, * {{Code|{{s|NS|l{{=}}tak|kj{{=}}pl}}}} → {{Tt|{{NS|l=tak|kj=pl}}}}, * {{Code|{{s|NS|l{{=}}tak|kj{{=}}en}}}} → {{Tt|{{NS|l=tak|kj=en}}}}, * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|kj{{=}}pl}}}} → {{Tt|{{NS|l=tak|w=tak|kj=pl}}}}, * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|kj{{=}}en}}}} → {{Tt|{{NS|l=tak|w=tak|kj=en}}}}. ===== Wywołanie szablonu dotyczące innego projektu niż ten ===== ====== Przykłady użycia funkcji {{Code|nazwy_modul.NAZWASERWISU()}} ====== Ale też możemy linkować do stron głównych innych projektów niż {{NS|w=tak|l=tak|pk=m}}. Robimy to za pomocą parametru: {{Code|["kod projektu"] {{=}} "s"}}, nie licąc parametru języka, ale też możemy linkować do artykułu o danym projekcie na {{NS|w=tak|l=tak|k=w|pk=mj}}. A jeżeli podamy kod języka {{Code|["kod języka"] {{=}} "en"}}, wtedy linkujemy do angielskich projektów, w tym również do {{NS|w=tak|l=tak|k=w|pk=mj}}. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Tutaj linkujemy do Wikiźródeł do jej strony głównej local linki_1 = nazwy_modul.NAZWASERWISU{ link = "tak", ["kod projektu"] = "s", }; --- Co powyżej, tylko do artykułu na Wikipedii o Wikiźródłach local linki_2 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", ["kod projektu"] = "s", }; -- Tutaj linkujemy do Wikibooksa do jej strony głównej w jakieś jej wersji językowej local linki_3 = nazwy_modul.NAZWASERWISU{ link = "tak", ["kod języka"] = "pl", ["kod projektu"] = "s", }; local linki_4 = nazwy_modul.NAZWASERWISU{ link = "tak", ["kod języka"] = "en", ["kod projektu"] = "s", }; -- Jak powyżej, tylko do artykułu Wikipedii w jakieś wersji językowej o Wikiźródłach local linki_5 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", ["kod języka"] = "pl", ["kod projektu"] = "s", }; local linki_6 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", ["kod języka"] = "en", ["kod projektu"] = "s", }; </syntaxhighlight> ====== Analogiczne wywołanie szablonu ====== * {{Code|{{s|NS|l{{=}}tak|kp{{=}}s}}}} → {{Tt|{{NS|l=tak|kp=s}}}}, * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|kp{{=}}s}}}} → {{Tt|{{NS|l=tak|w=tak|kp=s}}}}, * {{Code|{{s|NS|l{{=}}tak|kj{{=}}pl|kp{{=}}s}}}} → {{Tt|{{NS|l=tak|kj=pl|kp=s}}}}, * {{Code|{{s|NS|l{{=}}tak|kj{{=}}en|kp{{=}}s}}}} → {{Tt|{{NS|l=tak|kj=en|kp=s}}}}, * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|kj{{=}}pl|kp{{=}}s}}}} → {{Tt|{{NS|l=tak|w=tak|kj=pl|kp=s}}}}, * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|kj{{=}}en|kp{{=}}s}}}} → {{Tt|{{NS|l=tak|w=tak|kj=en|kp=s}}}}. ===== Wywołania szablonu z nazwą linku danej wiki ===== ====== Przykłady użycia funkcji {{Code|nazwy_modul.NAZWASERWISU()}} ====== Gdy chcemy podać nazwę linku przy pomocy parametru {{Code|["w języku wiki"] {{=}} "tak"}}, w języku danej wiki, którego podajemy przy parametrze {{Code|["kod języka"] {{=}} "en"}}, dla projektu podanego w zmiennej {{Code|["kod projektu"] {{=}} "s"}}. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local linki_1 = nazwy_modul.NAZWASERWISU{ link = "tak", ["kod projektu"] = "s", ["w języku wiki"] = "tak", }; local linki_2 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", ["kod projektu"] = "s",["w języku wiki"] = "tak", }; local linki_3 = nazwy_modul.NAZWASERWISU{ link = "tak", ["kod języka"] = "pl", ["kod projektu"] = "s", ["w języku wiki"] = "tak", }; local linki_4 = nazwy_modul.NAZWASERWISU{ link = "tak", ["kod języka"] = "en", ["kod projektu"] = "s", ["w języku wiki"] = "tak", }; local linki_5 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", ["kod języka"] = "pl", ["kod projektu"] = "s", ["w języku wiki"] = "tak", }; local linki_6 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", ["kod języka"] = "en", ["kod projektu"] = "s", ["w języku wiki"] = "tak", }; </syntaxhighlight> ====== Analogiczne wywołanie szablonu ====== * {{Code|{{s|NS|l{{=}}tak|kp{{=}}s|jw{{=}}tak}}}} → {{Tt|{{NS|l=tak|kp=s|jw=tak}}}}, * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|kp{{=}}s|jw{{=}}tak}}}} → {{Tt|{{NS|l=tak|w=tak|kp=s|jw=tak}}}}, * {{Code|{{s|NS|l{{=}}tak|kj{{=}}pl|kp{{=}}s|jw{{=}}tak}}}} → {{Tt|{{NS|l=tak|kj=pl|kp=s|jw=tak}}}}, * {{Code|{{s|NS|l{{=}}tak|kj{{=}}en|kp{{=}}s|jw{{=}}tak}}}} → {{Tt|{{NS|l=tak|kj=en|kp=s|jw=tak}}}}, * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|kj{{=}}pl|kp{{=}}s|jw{{=}}tak}}}} → {{Tt|{{NS|l=tak|w=tak|kj=pl|kp=s|jw=tak}}}}, * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|kj{{=}}en|kp{{=}}s|jw{{=}}tak}}}} → {{Tt|{{NS|l=tak|w=tak|kj=en|kp=s|jw=tak}}}}. ===== Wywołanie szablonu z podaną nazwą linku ===== ====== Przykłady użycia funkcji {{Code|nazwy_modul.NAZWASERWISU()}} ====== Jeżeli chcemy podać ściśle określony ciąg, który jest nazwą linku, do linkowania do strony głównej lub artykułu na {{NS|w=tak|l=tak|k=w|pk=mj}} o danym projekcie, np. inną niż nazwa projektu. Tutaj nazwą linku jest {{Code|[1] {{=}} "Biblioteka książek"}}. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local link_1 = nazwy_modul.NAZWASERWISU{ [1] = "Biblioteka książek", link = "tak", }; local link_2 = nazwy_modul.NAZWASERWISU{ [1] = "Biblioteka książek", link = "tak", wikipedia = "tak", }; local link_3 = nazwy_modul.NAZWASERWISU{ [1] = "Biblioteka książek", link = "tak", ["kod projektu"] = "s",["kod języka"] = "en", }; local link_4 = nazwy_modul.NAZWASERWISU{ [1] = "Biblioteka książek", link = "tak", wikipedia = "tak", ["kod projektu"] = "s",["kod języka"] = "en", }; </syntaxhighlight> ====== Analogiczne wywołanie szablonu ====== * {{Code|{{s|NS|Biblioteka książek|l{{=}}tak}}}} → {{Tt|{{NS|Biblioteka książek|l=tak}}}}, * {{Code|{{s|NS|Biblioteka książek|l{{=}}tak|w{{=}}tak}}}} → {{Tt|{{NS|Biblioteka książek|l=tak|w=tak}}}}, * {{Code|{{s|NS|Biblioteka wikiźródeł|l{{=}}tak|kp{{=}}s|kj{{=}}en}}}} → {{Tt|{{NS|Biblioteka wikiźródeł|l=tak|kp=s|kj=en}}}}, * {{Code|{{s|NS|Biblioteka wikiźródeł|l{{=}}tak|w{{=}}tak|kp{{=}}s|kj{{=}}en}}}} → {{Tt|{{NS|Biblioteka wikiźródeł|l=tak|w=tak|kp=s|kj=en}}}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> f4792qjez7949ng77hvyd2qf8z02aui 555715 555697 2026-09-11T16:12:21Z Persino 2851 /* Funkcja biblioteczna */ 555715 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Nazwy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == Funkcje nazw nazwy przestrzeni nazw == Należy przeczytać wiadomości ze strony {{lru|Moduły/Nazwy}}, które są informacjami wstępnymi, by używać funkcji bibliotecznych: {{m|Nazwy|Np}} i {{m|Nazwy|NpDane}}, i z nimi skojarzonych szablonów, tzn.: {{s|Np}} i {{s|NpDane}}. Wiadomosci też stąd są bardzo potrzebne do dalszych modułów tomów tej publikacji, to znaczy do funkcji, czy szablonów, nazw. === {{Code|m.Np}} === ==== Odpowiednik szablonowy ==== Odpowiednik szablonowy jest pod nazwą {{s|Np}}, odpowiednik funkcji, w mechanizmie '''MediaWiki''', tzn.: {{Span|styl=color:blue;|<nowiki>{{ns:<nazwa przestrzeni kanoniczna lub nie, albo jej id>}}</nowiki>}}, format tego, bo to nie jest szablon, czy funkcja, tylko wywołanie parserowe, tego, w którym jej parametr, tylko przestrzeny w nim występuje, jej element jest podobny do jej wersji bibliotecznej, opisywanej funkcji. Format wersji bibliotecznej tej funkcji jest bardzo bodobny do jej wersji szablonowej, tylko jest inne uruchomienie, tam jest ramka, a tutaj wywołanie szablonowe. Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce. * Szablon {{s|Np}} korzysta z funkcji bibliotecznej {{m|Nazwy|Np}}, więc parametry obu są wręcz takie same, a nawet podobne. Chociaż ta sama nazwa funkcji w ramce i kodzie {{lpg|Lua}}, to używanie ich nie jest dokładnie takie samo, funkcja biblioteczna nie potrzebuje parametru {{Parametr|wyspecjalizowana|tak}}, a ramka już tak, a szablon {{s|Np}}, który korzysta z tej ramki, to nieobecność, lub obecność z wartością pustą, tego parametru powoduje, że przyjmowane są parametry rodzica, a nie dziecka, które wymagają jego niepustość. ==== Funkcja biblioteczna ==== Zestaw parametrów tej funkcji są to parametry nazwane podawane, w wersji tabelkowej,, w nawiasach klamerkowej, jak się to podaje w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. ; Paramery funkcji{{dk}} {{nobold|{{Code|{{m|Nazwy|Np|...|wyspecjalizowana{{=}}tak}}}}}}, lub funkcji bibliotecznej wykorzystującej opisywaną funkcję{{Dk}} {{OpisParametrów | 1 = Parametry podstawowe | nagłówek1=tak | 2 = {{Code|nazwa}} lub {{Code|1}} | _2 = Nazwa przestrzeni nazw, kanoniczna lub nie, lub {{Code|id}} danej przestrzeni. | 3 = {{Parametr|wyspecjalizowana|tak}} | _3 = Tylko dla tej funkcji wywołanej w postaci ramki w wikikodzie w szablonach, gdy do niej wsadzamy bezpośrednio jako dzieci, a w przypadku z rodzica to ten parametr jest niepotrzebny lub powinien przyjmować wartość pustą, | 4 = Zmienne puste lub nie, np. o wartości: {{Code|tak}}, lub nie, podawane do tej funkcji są:| nagłówek4=tak | 5 = {{Code|przedmiotowa}} | _5 = Zamienia daną przestrzeń na jej nazwę przedmiotową, tzn. na przestrzenie o numerach {{Code|id}} parzyste. | 6 = {{Code|dyskusja}} | _6 = Zamienia daną przestrzeń na jej wersję dyskusji, tzn. na przestrzenie o numerach {{Code|id}} nieparzyste. | 7 = {{Code|kanoniczna}} | _7 = Zamienia nazwę przestrzeni lub {{Code|id}} danej przestrzeni na jej nazwę kanoniczną, tzn. na jej wersję angielską. | 8 = {{Code|z myślnikami dolnymi}} | _8 = Zamienia spację w nazwach przestrzenie nazw na dolne myślniki, | 9 = {{Code|wyświetlana}} | _9 = Ten parametr nie wpływa na sposób wyświetlania nazw przestrzeni, oprócz jednej przestrzeni nazw, której jest przestrzeń główna o nazwie kanonicznej {{Code|(main)}} lub niekanonicznej {{Code|(główna)}}, wtedy są wyświetlane zamiast ciągu pustego te nazwy w zależności od podanego parametru {{Code|kanoniczna}}, tj. czy ona jest pusta lub nie, lub niepodana. | 10 = {{Code|link}} | _10 = Drukuje link o nazwie referencji, którą jest nazwa wyświetlana danej przestrzeni nazw, lub jej {{Code|id}}, o adresie strony przekierowującej, której jest adres odniesienia podanej w tabeli powyżej dla tej funkcji lub szablonu {{s|Np}}. | 11 = {{Code|id}} | _11 = wyświetla id danej przestrzeni nazw. | 12 = {{Code|nazwij projektem}} | _12 = Powoduje, że wyświetlana jest nazwa projektu {{Code|Wikibooks}} w postaci rzeczywistej nazwy kanonicznej (używany wraz z parametrem {{Code|kanoniczna}}), tzn. w postaci nazwy {{Code|Project}}, lub bez tego parametru, w postaci nazwy nierzeczywistej niekanonicznej {{Code|Projekt}}. | 13 = {{Code|nazwij dyskusją projektu}} | _13 = Powoduje, że wyświetlana jest nazwa projektu {{Code|Dyskusja wikibooks}} w postaci rzeczywistej nazwy kanonicznej (używany wraz z parametrem {{Code|kanoniczna}}), tzn. w postaci nazwy {{Code|Project talk}}, lub bez tego parametru, w postaci nazwy nierzeczywistej niekanonicznej {{Code|Dyskusja projektu}}. | 14 = Inne zmienne niepuste:|nagłówek14=tak | 15 = {{Code|istnieje}} | _15 = Zwraca wartość tekstową {{Code|(bląd)}}, gdy przestrzeń jest nieprawidłowa lub nie istnieje, w innym przypadku zwraca normalną wartość. | 16 = {{Code|wynik błędu nietekstowy}} | _16 = Używany z {{Code|istnieje}}, zwraca wartość w języku {{lpg|Lua}} wartość {{Code|nil}}, gdy wartość nazwy przestrzeni nazw lub {{Code|id}} jest nieprawidłowa lub nieznana. | 17 = Zwracana zmienna w postaci tabeli ze składowymi z pewnymi podzmiennymi:|nagłówek17=tak | 18 = {{Code|uchwyt}} | _18 = Zwraca uchwyt przestrzeni nazw do danej przestrzeni nazw. }} ===== Przykłady używania ===== ====== Podstawowe wywołanie ====== Podstawowe przykłady podstawowego wywołania funkcji, czyli uzyskiwania nazwy niekanonicznej z dowolnej nazwy przestrzeni kanonicznej, czy jej numeru {{Code|id}} (kodu danej przestrzeni nazw, który reprezentuje daną przestrzeń nazw przedmiotową, czy dyskusji), a więc: <syntaxhighlight lang="lua"> local nazwy_modul = require("Module:Nazwy"); ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_1 = nazwy_modul.Np{ [1] = "Szablon", }; ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_2 = nazwy_modul.Np{ [1] = "Template", }; ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_3 = nazwy_modul.Np{ [1] = 10, }; ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_4 = nazwy_modul.Np{ nazwa = "Szablon", }; ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_5 = nazwy_modul.Np{ nazwa = "Template", }; ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_6 = nazwy_modul.Np{ nazwa = 10, }; </syntaxhighlight> Te trzy pary wywołania wyświetlają ten sam wynik tzn. o takiej samej wartości, bo parametr {{Code|nazwa}} wskazuje na tą samą przestrzeń nazw, tylko one są rożnie wskazane. Został ta użyty parametr: {{Code|1}} lub {{Code|nazwa}}, które oznaczają to samo, czyli przestrzeń nazw w postaci kanonicznej, niekanonicznej, czy numeru {{Code|id}}, czyli identyfikatora przestrzeni nazw. Jako wartość uzyskujemy tam nazwę kanoniczną przestrzenina polskiem {{NS|l=tak|p=ie}}. Przestrzeń nazw może zawierać dowolnej wielkości litery, z dowolną liczbą odstępów z dolnymi spacjami lub normalnymi, jeżeli w nim one występują,wtedy zawsze oznaczają one tą samą przestrzeń, niezależnie jak ją zapiszemy, przykłady poniżej. Równie dobrze dowolną nazwę niekanoniczną możemy napisać, co jest uwidocznione w parametrze {{Code|nazwa}}, na wyjściu otrzymujemy w pełni sformatowaną nazwę niekanoniczną, która odpowiada jej odpowiednikowi niesformatowanemu: <syntaxhighlight lang="lua"> local nazwy_modul = require("Module:Nazwy"); -- Zwraca wartość: "Szablon": local nazwa_przestrzeni_1 = nazwy_modul.Np{ nazwa = "SZABLON", }; -- Zwraca wartość: "Szablon": local nazwa_przestrzeni_2 = nazwy_modul.Np{ nazwa = "TEMPLATE", }; -- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_3 = nazwy_modul.Np{ nazwa = "DYSKUSJA ___ ___ _ SZABLONU", }; -- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_4 = nazwy_modul.Np{ nazwa = "TEMPLATE_________TALK", }; </syntaxhighlight> ====== Nazwy kanoniczne i niekanoniczna oraz zamiana z jednej na drugą ====== Aby uzyskać nazwę z dowolnej nazwy, nawet też kanonicznej, czynie, czy też z numeru {{Code|id}} (identyfikatora przestrzeni nazw), wtedy należy podać parametr przestrzeni nazw, z dodatkowym parametrem {{Code|kanoniczna}}, w takim razie: <syntaxhighlight lang="lua"> local nazwy_modul = require("Module:Nazwy"); -- Uzyskujemy wartość: "Template": local nazwa_kanoniczna_1 = nazwy_modul.Np{ nazwa = "Szablon", kanoniczna = "tak", }; -- Uzyskujemy wartość: "Template": local nazwa_kanoniczna_2 = nazwy_modul.Np{ nazwa = "Template", kanoniczna = "tak", }; -- Uzyskujemy wartość: "Template": local nazwa_kanoniczna_3 = nazwy_modul.Np{ nazwa = 10, kanoniczna = "tak", }; </syntaxhighlight> * Według powyższego przykładu, ona, czyli przestrzeń nazw, jest zamieniana na sformatowaną nazwę kanoniczną, jako parametr może być nazwa niekanoniczna, kanoniczna, czy identyfikator przestrzeni nazw. Dowolną nazwę kanoniczną, czy nie, można zamienić na niekanoniczną, niezależnie w jakiej formie podamy przestrzeń nazw, może być to przekształcenie tożsamościowe, może być to w postaci identyfikatora tej przestrzeni, niezależnie jaką ją mamy na myśli, więc: <syntaxhighlight lang="lua"> local nazwy_modul = require("Module:Nazwy"); -- Uzyskujemy wartość: "Szablon": local nazwa_niekanoniczna = nazwy_modul.Np{ nazwa = "Template", }; </syntaxhighlight> * Wystarczy wtedy użyć tylko jednego parametru, nie trzeba używać większej liczby innych parametrów. ====== Nazwy przedmiotowe i dyskusji oraz przejścia pomiędzy nimi ====== Można też przechodzić z tej samej przestrzeni nazw w nią samą, lub do niego skojarzoną, tzn. z przedmiotowej do dyskusji lub odwrotnie, przykłady poniżej. Do tego celu używamy parametru {{Code|przedmiotowa}}, czyli do tłumaczenia nazwy przestrzeni nazw na jej wersję przedmiotową, tzn. na przestrzeń nazw o identyfikatorze parzystym. Można też użyć parametru {{Code|dyskusja}}, robiąca tłumaczenia na wersje dyskusji, o identyfikatorze nazwy przestrzeni nazw nieparzystym. Nie wolno używać tych parametrów, tych dwóch w jednym wywołaniu, bo może dojść do błędu funkcji w postaci komunikatu {{Code|(błąd)}}. Tłumaczona nazwa może być zarówno niekanoniczna, jak i kanoniczna, lub być zawarta w postaci identyfikatora przestrzeni nazw. Tutaj bez użycia żadnego parametru dodatkowego, wtedy otrzymujemy na wyjściu nazwę niekanoniczną. <syntaxhighlight lang="lua"> local nazwy_modul = require("Module:Nazwy"); -- Gdy nazwą przestrzeni jest nazwa niekanoniczna: ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_przedmotowej_1 = nazwy_modul.Np{ nazwa = "Dyskusja szablonu", przedmiotowa = "tak", }; ---- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_dyskusji_1 = nazwy_modul.Np{ nazwa = "Szablon", dyskusja = "tak", }; -- Gdy nazwą przestrzeni jest nazwa kanoniczna: ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_przedmotowej_2 = nazwy_modul.Np{ nazwa = "Template talk", przedmiotowa = "tak", }; ---- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_dyskusji_2 = nazwy_modul.Np{ nazwa = "Template", dyskusja = "tak", }; -- Gdy prrzestrzeń nazw jest w postaci numeru id: ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_przedmotowej_3 = nazwy_modul.Np{ nazwa = 11, przedmiotowa = "tak", }; ---- Zwraca wartość: szablon "Dyskusja szablonu": local nazwa_przestrzeni_dyskusji_3 = nazwy_modul.Np{ nazwa = 10, dyskusja = "tak", }; </syntaxhighlight> Gdy użyjemy dodatkowo parametr {{Code|kanoniczna}}, zamieniający dowolne przestrzenie nazw, niezależnie, czy jest zapisana w postaci identyfikatora, czy nie, gdy nazwą przestrzeni jest nazwa niekanoniczna (lub kanoniczna), to uzyskana nazwa przedmiotowa, czy dyskusji, jest nazwą kanoniczną, jako w wyniku: <syntaxhighlight lang="lua"> local nazwy_modul = require("Module:Nazwy"); -- Gdy nazwą przestrzeni jest nazwa niekanoniczna: ---- Zwraca wartość: "Template": local nazwa_przestrzeni_przedmotowej_1 = nazwy_modul.Np{ nazwa = "Dyskusja szablonu", przedmiotowa = "tak", kanoniczna = "tak", }; ---- Zwraca wartość: "Template talk": local nazwa_przestrzeni_dyskusji_1 = nazwy_modul.Np{ nazwa = "Szablon", dyskusja = "tak", kanoniczna = "tak", }; -- Gdy nazwą przestrzeni jest nazwa kanoniczna: ---- Zwraca wartość: "Template": local nazwa_przestrzeni_przedmotowej_2 = nazwy_modul.Np{ nazwa = "Template talk", przedmiotowa = "tak", kanoniczna = "tak", }; ---- Zwraca wartość: "Template talk": local nazwa_przestrzeni_dyskusji_2 = nazwy_modul.Np{ nazwa = "Template", dyskusja = "tak", kanoniczna = "tak", }; -- Gdy przestrzeń nazw jest w postaci numeru id: ---- Zwraca wartość: "Template": local nazwa_przestrzeni_przedmotowej_3 = nazwy_modul.Np{ nazwa = 11, przedmiotowa = "tak", kanoniczna = "tak", }; ---- Zwraca wartość: "Template talk": local nazwa_przestrzeni_dyskusji_3 = nazwy_modul.Np{ nazwa = 10, dyskusja = "tak", kanoniczna = "tak", }; </syntaxhighlight> Przejście z tej samej przestrzeni na tą samą możemy uzyskać, gdy nazwę przedmiotową tłumaczymy na przedmiotową, dyskusji na dyskusji, wtedy tłumaczenie z przestrzeni do przestrzeni jest tożsamościowe, niezależnie w jakiej formie podamy nazwę przestrzeni nazw jako parametr, tłumaczymy nazwę polską na tą samą nazwę też polską, o tej samej wartości lub jej odpowiednik angielski w wersji kanonicznej na jej wersję niekanoniczną, czy z numeru identyfikatorana jej odpowiednik nazwowy, ale nadal takie przejście jest tożsamosciowe, bo chodzi o tą samą przestrzeń nazw, mimo że użyliśmy tych parametrów: <syntaxhighlight lang="lua"> local nazwy_modul = require("Module:Nazwy"); -- Gdy nazwą przestrzeni jest nazwa niekanoniczna: ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_przedmotowej_1 = nazwy_modul.Np{ nazwa = "Szablon", przedmiotowa = "tak", }; ---- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_dyskusji_1 = nazwy_modul.Np{ nazwa = "Dyskusja szablonu", dyskusja = "tak",}; -- Gdy nazwą przestrzeni jest nazwa kanoniczna: ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_przedmotowej_2 = nazwy_modul.Np{ nazwa = "Template", przedmiotowa = "tak", }; ---- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_dyskusji_2 = nazwy_modul.Np{ nazwa = "Template talk", dyskusja = "tak",}; -- Gdy przestrzeń nazw jest w postaci numeru id: ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_przedmotowej_3 = nazwy_modul.Np{ nazwa = 10, przedmiotowa = "tak", }; ---- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_dyskusji_3 = nazwy_modul.Np{ nazwa = 11, dyskusja = "tak",}; </syntaxhighlight> Gdy użyjemy dodatkowo parametr {{Code|kanoniczna}}, to uzyskana nazwa przedmiotowa, czy dyskusji, wtedy mamy tłumaczenie tozsamościowe, jeśli chodzi o przestrzeń nazw, co one oznaczają, jeśli ona jest niekanoniczna, to uzyskamy jej nazwę, ale po angielsku, a jeśli jednak jest kanoniczna, to otrzymamy ten sam wynik: <syntaxhighlight lang="lua"> local nazwy_modul = require("Module:Nazwy"); -- Gdy nazwą przestrzeni jest nazwa niekanoniczna: ---- Zwraca wartość: "Template": local nazwa_przestrzeni_przedmotowej_1 = nazwy_modul.Np{ nazwa = "Szablon", przedmiotowa = "tak", kanoniczna = "tak", }; ---- Zwraca wartość: "Template talk": local nazwa_przestrzeni_dyskusji_1 = nazwy_modul.Np{ nazwa = "Dyskusja szablonu", dyskusja = "tak", kanoniczna = "tak", }; -- Gdy nazwą przestrzeni jest nazwa kanoniczna: ---- Zwraca wartość: Template": local nazwa_przestrzeni_przedmotowej_2 = nazwy_modul.Np{ nazwa = "Template", przedmiotowa = "tak", kanoniczna = "tak", }; ---- Zwraca wartość: "Template talk": local nazwa_przestrzeni_dyskusji_2 = nazwy_modul.Np{ nazwa = "Template talk", dyskusja = "tak", kanoniczna = "tak", }; -- Gdy przestrzeń nazw jest w postaci numeru id: ---- Zwraca wartość: ""Template": local nazwa_przestrzeni_przedmotowej_3 = nazwy_modul.Np{ nazwa = 10, przedmiotowa = "tak", kanoniczna = "tak", }; ---- Zwraca wartość: "Template talk": local nazwa_przestrzeni_dyskusji_3 = nazwy_modul.Np{ nazwa = 11, dyskusja = "tak", kanoniczna = "tak", }; </syntaxhighlight> ====== Nazwy przestrzeni z myślnikami dolnymi ====== Gdy używamy przestrzeni nazw, czy to w postaci kanonicznej, czy niekanonicznej, ze spacjami, to spacje są w nim zamieniane na dolne myślniki. Jeżeli parametr zawiera spacje lub dolne myślniki na końcach nazwy, to ona jest trimowana, wewnątrz, wtedy powtórzone spacje, lub myślniki dolne, są zamieniane na jeden dolny myślnik, jeżeli zamieniamy nazwę niekanoniczną na niekanoniczną, kanoniczną na kanoniczną. Gdy tak nie jest, tzn. gdy zamieniamy kanoniczną na niekanoniczną, niekanoniczną na kanoniczną, to wtedy jest podobnie. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Dyskusja_szablonu": local nazwa_przestrzeni_1 = nazwy_modul.Np{ nazwa = "Dyskusja szablonu", ["z myślnikami dolnymi"] = "tak", }; ---- Zwraca wartość: "Dyskusja_szablonu": local nazwa_przestrzeni_2 = nazwy_modul.Np{ nazwa = "Template talk", ["z myślnikami dolnymi"] = "tak", }; ---- Zwraca wartość: "Template_talk";: local nazwa_przestrzeni_3 = nazwy_modul.Np{ nazwa = "Dyskusja szablonu", kanoniczna = "tak", ["z myślnikami dolnymi"] = "tak", }; ---- Zwraca wartość: "Template_talk": local nazwa_przestrzeni_4 = nazwy_modul.Np{ nazwa = "Template talk", kanoniczna = "tak", ["z myślnikami dolnymi"] = "tak", }; </syntaxhighlight> ====== Nazwy wyświetlane przestrzeni nazw ====== Gdy nazwą przestrzeni nazw jest nazwa o charakterze niepustym, to przy parametrze {{Code|wyświetlana {{=}} "tak"}}, jest zamieniana ona na tą samą nazwę, gdy ona jest pusta, to jest zamieniana na szereg: {{Code|(główna)}} bez parametru {{Code|kanoniczna}}, a z tym parametrem na {{Code|(main)}}. Przykłady jak jest, jest powiedziane: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_1 = nazwy_modul.Np{ nazwa = "Szablon", wyświetlana = "", }; ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_2 = nazwy_modul.Np{ nazwa = "Szablon", wyświetlana = "tak", }; ---- Zwraca wartość: "": local nazwa_przestrzeni_3 = nazwy_modul.Np{ nazwa = "", wyświetlana = "", }; ---- Zwraca wartość: "(główna)": local nazwa_przestrzeni_4 = nazwy_modul.Np{ nazwa = "", wyświetlana = "tak", }; ---- Zwraca wartość: "(main)": local nazwa_przestrzeni_5 = nazwy_modul.Np{ nazwa = "", kanoniczna = "tak", wyświetlana = " tak", }; </syntaxhighlight> Na podstawie ramki powyżej w przestrzeniach nazw wyświetlanych dowiadujemy się, że jedyna różnica, w nazwach wyświetlanych lub nie, jest dla przestrzeni głównej, czyli dla przestrzeni nazw, której nazwa przestrzeni jest ciągiem pustym. ====== Wersja funkcji z wyświetlaną nazwą przestrzeni nazw z linkiem opisującej tą przestrzeń ====== Nazwę przestrzeni nazw zamieniamy na link z opisem, co robi dana przestrzeń nazw, z nazwą wyświetlaną niekanoniczną, bez parametru {{Code|kanoniczna}}, lub z tym,wtedy nazwę wyświetlaną jest kanoniczna. Gdy przestrzeń nazw jest główna, to wtedy nazwą linku jest {{Code|(główna)}} ({{Code|(main)}} z parametrem {{Code|kanoniczna}}). <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local nazwa_przestrzeni_nazw_1 = nazwy_modul.Np{ nazwa = "Szablon", link = "tak", }; local nazwa_przestrzeni_nazw_2 = nazwy_modul.Np{ nazwa = "Szablon", link = "tak", kanoniczna = "tak", }; local nazwa_przestrzeni_nazw_3 = nazwy_modul.Np{ nazwa = "", link = "tak", }; local nazwa_przestrzeni_nazw_4 = nazwy_modul.Np{ nazwa = "", link = "tak", kanoniczna = "tak", }; </syntaxhighlight> Przykłady funkcji w wyniku są w przykładach szablonowych: # {{Code|{{s|Np|nazwa{{=}}Szablon|link{{=}}tak}}}} → {{Tt|{{Np|nazwa=Szablon|link=tak}}}} # {{Code|{{s|Np|nazwa{{=}}Szablon|link{{=}}tak|kanoniczna{{=}}tak}}}} → {{Tt|{{Np|nazwa=Szablon|link=tak|kanoniczna=tak}}}} # {{Code|{{s|Np|nazwa{{=}}|link{{=}}tak}}}} → {{Tt|{{Np|nazwa=|link=tak}}}} # {{Code|{{s|Np|nazwa{{=}}|link{{=}}tak|kanoniczna{{=}}tak}}}} → {{Tt|{{Np|nazwa=|link=tak|kanoniczna=tak}}}} ====== Uzyskiwanie numeru {{Code|id}} danej przestrzeni nazw ====== Gdy chcemy uzyskać numer identyfikatora przestrzeni nazw, czy to z użyciem parametru {{Code|kanoniczna}}, czy nie, wtedy ten parametr jest w tym przypadku ignorowany, przy parametrze {{Code|id {{=}} "tak"}} na jej odpowiednik w postaci numeru, który charakteryzuje przestrzenie przedmiotowe i dyskusji, inna jest dla tych dwóch typów przestrzeni. Dla przestrzeni przedmiotowej {{Code|id}} jest parzyste, a dla dyskusji nieparzyste. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Uzyskany numer id nazwy przestrzeni nazw jest 10: local id_1 = nazwy_modul.Np{ nazwa = "Szablon", id = "tak", }; ---- Uzyskany numer id nazwy przestrzeni nazw jest 10: local id_2 = nazwy_modul.Np{ nazwa = "Szablon", kanoniczna = "tak", id = "tak", }; ---- Uzyskany numer id nazwy przestrzeni nazw jest 11: local id_3 = nazwy_modul.Np{ nazwa = "Dyskusja szablonu", id = "tak", }; ---- Uzyskany numer id nazwy przestrzeni nazw jest 11: local id_4 = nazwy_modul.Np{ nazwa = "Dyskusja szablonu", kanoniczna = "tak", id = "tak", }; </syntaxhighlight> ====== Uzyskiwanie nazwy projektu nazwy przedmiotowej i jej dyskusji, z kanonicznej lub nie, przestrzeni nazw ====== Gdy używamy przestrzeni nazw {{Np|Wikibooks|link=tak}} lub {{Np|Wikibooks|link=tak|dyskusja=tak}}, to je można tłumaczyć na je wersje czysto kanoniczne, tzn.: {{Np|Wikibooks|link=tak}} tłumaczymy na {{Np|Wikibooks|link=tak|nazwij projektem=tak}}, a {{Np|Wikibooks|link=tak|dyskusja=tak}} na {{Np|Wikibooks|link=tak|dyskusja=tak|nazwij dyskusją projektu=tak}}, gdy translacja jest na nazwę polską niekanoniczną, a gdy użyjemy parametru {{Code|kanoniczna}}, wtedy sytuacja jest inna: {{Np|Wikibooks|link=tak|kanoniczna=tak}} tłumaczymy na {{Np|Wikibooks|link=tak|nazwij projektem=tak|kanoniczna=tak}}, a {{Np|Wikibooks|link=tak|dyskusja=tak|kanoniczna=tak}} na {{Np|Wikibooks|link=tak|dyskusja=tak|nazwij dyskusją projektu=tak|kanoniczna=tak}}. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Projekt": local nazwa_przestrzeni_nazw_1 = nazwy_modul.Np{ nazwa = "Wikibooks", ["nazwij projektem"] = "tak", }; ---- Zwraca wartość: "Project": local nazwa_przestrzeni_nazw_2 = nazwy_modul.Np{ nazwa = "Wikibooks", ["nazwij projektem"] = "tak", kanoniczna = "tak", }; ---- Zwraca wartość: "Dyskusja projektu": local nazwa_przestrzeni_nazw_3 = nazwy_modul.Np{ nazwa = "Wikibooks", ["nazwij dyskusją projektu"] = "tak", dyskusja = "tak", }; ---- Zwraca wartość: "Project talk": local nazwa_przestrzeni_nazw_4 = nazwy_modul.Np{ nazwa = "Wikibooks", ["nazwij dyskusją projektu"] = "tak", kanoniczna = "tak", }; </syntaxhighlight> ====== Sprawdzanie, czy dana przestrzeń jest poprawnie podane, czy istnieje ====== Gdy używamy przestrzeni nieistniejącej bez parametru {{Code|istnieje {{=}} "tak" }}, wtedy na wyjściu otrzymamy to samo, tylko w wersji sformatowanej, a gdy użyjemy, wtedy pojawia tam się napis {{Code|(błąd)}}. Gdy parametrem jest znana funkcji przestrzeń nazw, to nie uzyskujemy błędu, tylko przepisaną sformatowaną nazwę. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_nazw_1 = nazwy_modul.Np{ nazwa = "Szablon", istnieje = "tak", }; ---- Zwraca wartość: "Moja przestrzeń": local nazwa_przestrzeni_nazw_2 = nazwy_modul.Np{ nazwa = "Moja przestrzeń", istnieje = "", }; ---- Zwraca wartość: "(błąd)": local nazwa_przestrzeni_nazw_3 = nazwy_modul.Np{ nazwa = "Moja przestrzeń", istnieje = "tak", }; </syntaxhighlight> ====== Łatwe sprawdzanie istnienia danej przestrzeni nazw ====== Gdy oprócz parametru {{Code|istnieje {{=}} "tak"}}, użyjemy {{Code|["wynik błędu nietekstowy"] {{=}} "tak"}}, wtedy dla nieznanej przestrzeni uzyskujemy wartość w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, czyli: {{Code|nil}}, a w wikikodzie natomiast uzyskujemy wartość pustą, co pomaga w sprawdzeniu, czy dana przestrzeń istnieje, ale dodatkowo trzeba użyć parametru {{Code|["wyświetlana"] {{=}} "tak"}}, by nie pomylić parametru błędu z przestrzenią główną, wtedy ta przestrzeń ma nazwę niepustą przy tych parametrach, bo wtedy mamy nazwę niekanoniczną {{Code|(główna)}}, kanoniczną, przy specjalnym parametrze, czyli: {{Code|(main)}}, wtedy możemy użyć parsera {{Code|{{s|#if:coś|wtedy|przeciwnie}}}}. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_nazw_1 = nazwy_modul.Np{ nazwa = "Szablon", istnieje = "tak", ["wynik błędu nietekstowy"] = "tak", }; ---- Zwraca wartość: "Moja przestrzeń": local nazwa_przestrzeni_nazw_2 = nazwy_modul.Np{ nazwa = "Moja przestrzeń", istnieje = "", ["wynik błędu nietekstowy"] = "tak", }; ---- Zwraca wartość: nil: local nazwa_przestrzeni_nazw_3 = nazwy_modul.Np{ nazwa = "Moja przestrzeń", istnieje = "tak", ["wynik błędu nietekstowy"] = "tak", }; </syntaxhighlight> ====== Uzyskiwanie uchwytu danej przestrzeni nazw analogicznie do funkcji {{LzLua|mw.site.namespaces}} ====== Uchwyt niskopoziomowy do danej przestrzeni nazw można uzyskać przy pomocy kodu, uzyskujemy dla tej tablicy przestrzennej, która jest połączona z metatabelką, dzięki której możemy podawać przestrzenie nazw w wersji niezależnie jakimi literami, z dowolną kliczbą odstępów, nawet zapisana dolnymi myślnikami: <syntaxhighlight lang="lua"> local uchwyt_1 = mw.site.namespaces["Szablon"]; local uchwyt_2 = mw.site.namespaces["Template"]; local uchwyt_3 = mw.site.namespaces[10]; </syntaxhighlight> Funkcja powyżej ignoruje wielkość liter w przestrzeni nazw oraz powtórzone odstępy zrealizowane za pomocą spacji lub dolnych myślników. To samo, ale wysokopoziomowe, można utworzyć przy pomocy parametru: {{Code|uchwyt}}, wtedy szablon z rzuci odwołanie do tej tabeli, ale nie zawsze tak jest, czasami, gdy jakieś przestrzenie nie istnieją na polskim {{NS|w=tak|l=tak|pk=mj}}, wtedy odwołujemy się do jej wersji pseudo tej tabeli: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local uchwyt_1 = nazwy_modul.Np{ nazwa = "Szablon", uchwyt = "tak", }; local uchwyt_2 = nazwy_modul.Np{ nazwa = "Template", uchwyt = "tak", }; local uchwyt_3 = nazwy_modul.Np{ nazwa = 10, uchwyt = "tak", }; </syntaxhighlight> Funkcja {{Code|nazwy_modul.Np}} jest bardziej ogólniejsza niż {{LzLua|mw.site.namespaces}}, ponieważ uwzględnia większą liczbę nazw przestrzeni nazw, bo ona uwzględnia nieznane przestrzenie i znane o nieznanych nazwach, i dlatego należy stosować tę funkcję, a nie dedykowaną tabelę z połączoną z metatabelką za pomocą funkcji {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. === {{Code|m.NpDane}} === ==== Odpowiednik szablonowy ==== Odpowiednik szablonowy jest pod nazwą {{s|NpDane}}. Jego parametry są podobne do jego wersji bibliotecznej. Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce. * Szablon {{s|NpDane}} korzysta z funkcji bibliotecznej {{m|Nazwy|NpDane}}, więc parametry obu są wręcz takie same, a nawet podobne. Chociaż ta sama nazwa funkcji w ramce i kodzie {{lpg|Lua}}, to używanie ich nie jest dokładnie takie samo, funkcja biblioteczna nie potrzebuje parametru {{Parametr|wyspecjalizowana|tak}}, a ramka już tak, a szablon {{s|NpDane}}, który korzysta z tej ramki, to nieobecność, lub obecność z wartością pustą, tego parametru powoduje, że przyjmowane są parametry rodzica, a nie dziecka, które wymagają jego niepustość. ==== Funkcja biblioteczna ==== Szablon służy przede wszystkim do tłumaczenia angielskich nazw przestrzeni nazw na ich wersję w jakimś języku i operacji odwrotnej, a także numer przestrzeni nazw na jej nazwę w nim angielską lub w jakimś języku, lub odwrotnie, umożliwia też na przetłumaczenie nazwy przestrzeni nazw lub identyfikatora przestrzeni na jej nazwę polską, jeżeli istnieje. Funkcja {{m|Nazwy|NpDane}} przyjmuje te same parametry, co {{m|Nazwy|Np}}, oprócz wywołania ramkowego: {{Code|uchwyt}} (która w tej funkcji w sposób inny jest zdefiniowana, nie jak w funkcji: {{m|Nazwy|Np}}), jak oba, którego tutaj w nim nie ma, a jako zwykła funkcja biblioteczna może przyjmować ten parametr. Te zmienne działają podobnie w obu procedurach, z tą różnicą, że mamy inny zestaw nazw przestrzeni nazw (czasami bez numerów {{Code|id}} - identyfikatorów tych obsługiwanych przestrzeni nazw, a te podstawowe one je mają, jeżeli da się je powiązać z pierwszą funkcją w drugiej, jedynie w takim przypadku one występują) i można też użyć parametrów dodatkowych, które są niedostępne w pierwszej funkcji, a w drugiej już tak. Dodatkowo on przyjmuje argumenty: {{OpisParametrów | 1 = Adres kodowy projektu siostrzanego lub lokalnego polskiego: {{Code|Wikibooks}}:|nagłówek1=tak | 2 = {{Code|klucz projektu}} | _2 = Kody języka i projektu podana w jednej zmiennej oddzielone od siebie dwukropkami, może być dowolna liczba tych kodów. | 3 = {{Code|kod projektu}} | _3 = Kod projektu danego wiki. | 4 = {{Code|kod języka}} | _4 = kod języka danego wiki. | 5 = {{Code|po polsku}} |_5 = Tłumaczy nazwę kanoniczną danej przestrzeni nazw na jej wersję polską, tzn. na język polski, a jeżeli jej wersja polska nie istnieje, to pisze jej wersję w języku angielskim, czyli w postaci nazwy kanonicznej. | 6 = {{Code|awaryjnie}} | _6 = Za pomocą projektu {{NS|l=tak|k=d}} tłumaczy daną nazwę przestrzeni nazw w jednym języku (jej nazwę kanoniczną jakieś przestrzeni nazw) na drugi, gdy wartość jest pusta, to tłumaczy na jej nazwę kanoniczną, jeżeli, przy tym parametrze lub bez, jej wersja w innym danym języku nie istnieje zdefiniowana w module {{m|Nazwy/przestrzenie}}. | 7 = Parametry: {{Code|nazwij projektem}} i {{Code|nazwij dyskusją projektu}}, używa się tak samo jak dla funkcji: {{m|Nazwy|Np}}, tylko z różnicą, że w funkcji: {{m|Nazwy|NpDane}} musimy skorzystać koniecznie z parametru: {{Code|kanoniczna}}, z wartością niepustą, a wtedy wydrukowane wartości są w postaci wersji kanonicznej w języku angielskim, tak jak z ostatnim szablonem.|nagłówek7=tak }} ===== Używanie kluczy projektu, kodów projektu i kodów języka ===== Kody nazw piszemy, jak zwykle, z małej litery, co jest zalecane, ale można je pisać z liter o dowolnej wielkości. ====== Użycie różnych kodów i ich równoważność ====== Kody projektu i języka możemy pisać ze względu na dwa sposoby, w zależności jakich zmiennych używamy, możemy pisać tzw. grupę tych kodów w jednej zmiennej, wtedy się liczy ostateczny adres do danego projektu w jakieś wersji językowej, tylko jeden, a nie n-wersji danego języka i m-wersji danego projektu, czyli: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local wynik = nazwy_modul.NpDane{ ..., ["klucz projektu"] = "en:de:w:ru:en:q:pt", ... }; </syntaxhighlight> * Najważniejsze są kody projektu końcowe, podobnie ma się sprawa z kodami języków, tutaj kodami projektów są: {{Code|w}} ({{NS|l=tak|k=w}}) i {{Code|q}} ({{NS|l=tak|k=q}}), a kodami języków są: {{Code|en}} ({{lpg|{{#invoke:lang|hasło|en}}}}), {{Code|de}} ({{lpg|{{#invoke:lang|hasło|de}}}}), {{Code|ru}} ({{lpg|{{#invoke:lang|hasło|ru}}}}), {{Code|en}} ({{lpg|{{#invoke:lang|hasło|en}}}}) i {{Code|pt}} ({{lpg|{{#invoke:lang|hasło|pt}}}}), czy końcowy kod projektu jest: {{Code|q}} ({{NS|l=tak|k=q}}) i kod języka {{Code|pt}} ({{lpg|{{#invoke:lang|hasło|pt}}}}). W powyższym przykładzie napisaliśmy mnóstwo kodów w postaci jednej zmiennej, to jest równoważne zapisowi, czyli ostatecznej wersji wspomnianej powyższego zapisu, też zapisaną za pomocą tej samej zmiennej: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local wynik_1 = nazwy_modul.NpDane{ ..., ["klucz projektu"] = "pt:q", ... }; local wynik_2 = nazwy_modul.NpDane{ ..., ["klucz projektu"] = "q:pt", ... }; </syntaxhighlight> Powyższy wynik rozpisujemy na dwie zmienne, w których podajemy tylko pojedyncze kody, a nie grupy, więc widziemy, ża zamiast podawania jednego parametru z interwiki, to możemy to rozbić na dwa parametry kodu projektu i języka, a nie używać to w jednej zmiennej, należy pamiętać, że w tych kodach, może być jedno interwiki, specjalnie dla projektu lub języka, do którego dana zmienna jest przystosowana: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local wynik = nazwy_modul.NpDane{ ..., ["kod projektu"] = "q", ["kod języka"] = "pt", ... }; </syntaxhighlight> ====== Nazwy wyświetlane przy użyciu tych kodów dla przestrzeni głównej ====== Nazwy bez użycia zmiennej powodujące wyświetlanie nazwy przestrzeni nazw '''głównej''' na różnych projektach w postaci nieprzetłumaczonej na język polski, wtedy uzyskujemy niezależnie od projektu wartość pustą, bo takie jest przedstawienie wartości niewyświetlanej przestrzeni głównej na każdym projekcie obsługujący przestrzenie nazw, czyli: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość równą ciągowi pustemu: "": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "", ["klucz projektu"] = "commons", }; ---- Zwraca wartość równą ciągowi pustemu: "": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "", ["kod projektu"] = "commons", }; </syntaxhighlight> A przy użyciu identyfikatora przestrzeni nazw przestrzeni głównej, wtedy uzyskujemy na wyjściu to samo, co powyżej, czyli wartość pustą, bo wartość {{Code|0}} jest odpowiednikiem przestrzeni głównej, czyli poniższe przykłady są odpowiedniami tych powyższych, czyli te dwa przykład, tak można powiedzieć, że to samo robią: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość równą ciągowi pustemu: "": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = 0, ["klucz projektu"] = "commons", }; ---- Zwraca wartość równą ciągowi pustemu: "": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = 0, ["kod projektu"] = "commons", }; </syntaxhighlight> 0 Przy użyciu zmiennej generującej wyświetlanie w postaci znaków o charakterze niepustej, wtedy jeżeli nie ma wartości kanonicznej dla danego języka projektu, to wyswietlana jest wartość {{Np|(main)|link=tak|kanoniczna=tak}}, a dla polskigo projektu {{Np|(main)|link=tak}}, a dla innych języków jest nazwa charakterystyczna dla danego języka pod warunkiem, jeżeli doda się tego obsługę, więc tego przykłady przy użyciu zmiennej {{Code|["wyświetlana"] {{=}} "tak"}}, więc: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość nazwy przestrzeni głównej: "(main)": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "", ["klucz projektu"] = "commons", ["wyświetlana"] = "tak", }; ---- Zwraca wartość nazwy przestrzeni głównej: "(main)": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "", ["kod projektu"] = "commons", ["wyświetlana"] = "tak", }; </syntaxhighlight> Przy użyciu identyfikatora przestrzeni nazw przestrzeni głównej, w takim przypadku uzyskujemy to samo co powyżej, tylko jest inaczej, oznaczana jest wtedy przestrzeń główna, dla tego samego projektu siostrzanego, w wersji charakterystycznej dla danego języka, tutaj dla angielskiego: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość nazwy przestrzeni głównej: "(main)": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = 0, ["klucz projektu"] = "commons", ["wyświetlana"] = "tak", }; ---- Zwraca wartość nazwy przestrzeni głównej: "(main)": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = 0, ["kod projektu"] = "commons", ["wyświetlana"] = "tak", }; </syntaxhighlight> ====== Nazwy wyświetlane przy użyciu tych kodów przetłumaczone je na język polski dla przestrzeni głównej ====== Z wyświetlaniem na ekranie przestrzeni nazw charakteryzujące się ciągiem niepustym mamy podobne wyniki, jak powyżej bez parametry {{Code|["wyświetlana"] {{=}} "tak"}}, tylko nazwa wyświetlana przestrzeni nazw jest po polsku (odpowiednia nazwa w języku polskim), a nie po angielsku (w języku danego projektu): Przy użyciu zmiennej generującej wyświetlanie w postaci znaków o charakterze niepustej, nazw przestrzeni nazw mający nazwy puste, ale zamienione na nazwy wyświetlane, ale w postaci języka polskiego, używając parametru {{Code|["po polsku"] {{=}} "tak"}}: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość nazwy przestrzeni głównej: "(główna)": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "", ["klucz projektu"] = "commons", ["wyświetlana"] = "tak", ["po polsku"] = "tak", }; ---- Zwraca wartość nazwy przestrzeni głównej: "(główna)": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "", ["kod projektu"] = "commons", ["wyświetlana"] = "tak", ["po polsku"] = "tak", }; </syntaxhighlight> Przy użyciu identyfikatora przestrzeni nazw głównej, czyli dla tej samej przestrzeni nazw, co powyżej, tylko ona jest inaczej oznaczana, to możemy zrobić to samo, co powyżej, tylko nazwa główna przestrzeni nazw jest inaczej zapisana, w postaci numerycznej, wtedy otrzymamy wynik taki sam, jak w powyższym przykładzie, bo w obu używaliśmy takiej samej przestrzeni, tylko różnie przepisaną: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość nazwy przestrzeni głównej: "(główna)": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = 0, ["klucz projektu"] = "commons", ["wyświetlana"] = "tak", ["po polsku"] = "tak", }; ---- Zwraca wartość nazwy przestrzeni głównej: "(główna)": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = 0, ["kod projektu"] = "commons", ["wyświetlana"] = "tak", ["po polsku"] = "tak", }; </syntaxhighlight> ====== Nazwy wyświetlane przy użyciu tych kodów dla przestrzeni innej niż główna ====== Nazwy bez użycia zmiennej powodujące wyświetlanie nazwy przestrzeni nazw '''niegłównej''' na różnych projektach w postaci nieprzetłumaczonej na język polski, tylko w wersji charakterystucznej dla języka danego projektu używaną w odwołaniu: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość równą ciągowi niepustemu: "Template": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "Template", ["klucz projektu"] = "commons", }; ---- Zwraca wartość równą ciągowi niepustemu: "Template": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "Template", ["kod projektu"] = "commons", }; </syntaxhighlight> A przy zamianie tej przestrzeni nazw w powyższym przykładzie na numer - identyfikator nazw, czyli {{Code|id}}, to identyfikator przestrzeni nazw, innej niż główna, z jej wersji nazwowej, otrzymamy wynik w postaci nazwy niepustej, bo to nie jest przestrzeń główna, oznaczana zerowy tym identyfikatorem, czyli w postaci tej liczby: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość równą ciągowi niepustemu: "Template": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = 10, ["klucz projektu"] = "commons", }; ---- Zwraca wartość równą ciągowi niepustemu: "Template": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = 10, ["kod projektu"] = "commons", }; </syntaxhighlight> Przy użyciu zmiennej generującej wyświetlanie w postaci znaków, o charakterze niepustości, przy użyciu tego parametru, otrzymujemy wynik, jak powyżej, bo nazwa wyświetlana przestrzeni jest od razu niepusta, bo przestrzeni nazw mają wartość niepustą, więc nie trzeba ich uznawać, że są inne: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość równą nazwie przestrzeni niegłównej: "Template": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "Template", ["klucz projektu"] = "commons", ["wyświetlana"] = "tak", }; ---- Zwraca wartość równą nazwie przestrzeni niegłównej: "Template": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "Template", ["kod projektu"] = "commons", ["wyświetlana"] = "tak", }; </syntaxhighlight> A gdy parametr {{Code|nazwa}} przyjmuje wartość liczbową w postaci identyfikatora {{Code|id}}, innej niż dla przestrzeni głównej, ale zapisaną dla tych samych przestrzeni nazw, jak powyżej, co czyni, że tutaj jest też podobnie, otzrymamy te same wartości, tylko jest inna reprezentacja parametrów wchodzących do funkcji, jak powyżej: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość równą nazwie przestrzeni niegłównej: "Template": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = 10, ["klucz projektu"] = "commons", ["wyświetlana"] = "tak", }; ---- Zwraca wartość równą nazwie przestrzeni niegłównej: "Template": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = 10, ["kod projektu"] = "commons", ["wyświetlana"] = "tak", }; </syntaxhighlight> Widzimy, jedynie dla przestrzeni niepustej, że użycie tego parametru, według przykładów powyżej, jest opcjonalne, a nawet zbędne, bo ten parametr w tym przypadku nic nie zmienia, zmienia tylko dla przestrzeni głównej, którego ciąg charakteryzujący tą przestrzeń jest pusty, a jej wersja wyświetlana posiada za to ciąg niepusty, o jej wersji kanonicznej {{Code|{{Np|(main)|link=tak|kanoniczna=tak}}}}, a w wersji polskiej {{Code|{{Np|(main)|link=tak}}}}, te nazwy można pomiędzy sobą tłumaczyć za pomocą funkcji {{m|Nazwy|NpDane}} lub szablonu {{s|NpDane}}. ====== Nazwy wyświetlane przy użyciu tych kodów przetłumaczone je na język polski dla przestrzeni innej niż główna ====== Z wyświetlaniem na ekranie przestrzeni nazw charakteryzujące ciągiem niepustym mamy podobne wyniki jak powyżej bez parametru {{Code|["wyświetlana"] {{=}} "tak"}}: Przy użyciu zmiennej generującej wyświetlanie w postaci znaków o charakterze niepustej przetłumaczonej na język polski, używając parametrów w postaci pewnych nazw niepusstych, dla projektów innych niż wq języku polskim, ale te przestrzenie nazw tłumaczymyna ich odpowiedniki polskie, jakie istnieją, na projektach właśnie, że polskich: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość równą nazwie przestrzeni niegłównej: "Szablon": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "Template", ["klucz projektu"] = "commons", ["po polsku"] = "tak", }; ---- Zwraca wartość równą nazwie przestrzeni niegłównej: "Szablon": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "Template", ["kod projektu"] = "commons", ["po polsku"] = "tak", }; </syntaxhighlight> Albo przy użyciu numeru {{Code|id}} (identyfikatora przestrzeni nazw), wtedy właśnie robimy to samo, co powyżej, tylko jest inna reprezentacja parametrów, ale ta sama przestrzeń, więc uzyskujemy te same wyniki, czyli o tej samej wartości, mimo, że wizulanie,a by inne parametry: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość równą nazwie przestrzeni niegłównej: "Szablon": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = 10, ["klucz projektu"] = "commons", ["po polsku"] = "tak", }; ---- Zwraca wartość równą nazwie przestrzeni niegłównej: "Szablon": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = 10, ["kod projektu"] = "commons", ["po polsku"] = "tak", }; </syntaxhighlight> Przy użyciu zmiennej generującej wyświetlanie, użzywając parametru wspoianego powyżej, w postaci znaków o charakterze niepustej przy użyciu tego parametru, co sugeruje, że ten argiment nic nie zmienia, ale jedynie wyświetla się to samo, co bez tego parametru: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość równą nazwie przestrzeni niegłównej: "Szablon": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "Template", ["klucz projektu"] = "commons", ["wyświetlana"] = "tak", ["po polsku"] = "tak", }; ---- Zwraca wartość równą nazwie przestrzeni niegłównej: "Szablon": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "Template", ["kod projektu"] = "commons", ["wyświetlana"] = "tak", ["po polsku"] = "tak", }; </syntaxhighlight> A tutaj przy użyciu identyfikatora przestrzeni nazw przestrzeni nazw niegłównej, czyli przestrzeni nazw charakteryzującej się jej wersją niewyświetlaną niepustą, z tymi samymi parametrami, co powyżej, z tymi samymi wartościami, tylko jest inna reprezentacja przestrzeni nazw: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość równą nazwie przestrzeni niegłównej: "Szablon": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = 10, ["klucz projektu"] = "commons", ["wyświetlana"] = "tak", ["po polsku"] = "tak", }; ---- Zwraca wartość równą nazwie przestrzeni niegłównej: "Szablon": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = 10, ["kod projektu"] = "commons", ["wyświetlana"] = "tak", ["po polsku"] = "tak", }; </syntaxhighlight> Widzimy, jedynie dla tej przestrzeni, że użycie wspomnianego tego parametru jest opcjonalne, bo nic w tym przypadki nie zmienia, bo przestrzeń nazw nie jest pusta, lub nie jest reprezentowana inaczej, niż przez liczbę {{Code|0}}. ===== Tłumaczenie nazw przestrzeni nazw z jednego języka na drugi ===== ====== Tłumaczenie nazw obcojęzycznych nazw przestrzeni nazw na jej wersję polską, tzn. jej język polski, i na język angielski, tzn. jej wersje angielską w postaci nazwy kanonicznej, albo identyfikator przestrzeni nazw lub operację przeciwną ====== Tłumaczenie na nazwę kanoniczną w języku angielskim, z nazwy polskiej, czy nazwy w innym języku, tutaj w języku polskim, w jakim ona jest jedynie dostępna, przy użyciu parametru {{Code|kanoniczna {{=}} "tak"}}: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Template": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "Szablon", ["klucz projektu"] = "pl:w", kanoniczna = "tak", }; ---- Zwraca wartość: "Template": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "Szablon", ["kod projektu"] = "w", ["kod języka"] = "pl", kanoniczna = "tak", }; </syntaxhighlight> Tłumaczenie identyfikatora przestrzeni nazw na nazwę kanoniczną, ale przestrzeni nazw są te same, co powyżej, tylko zamiast przestrzeni nazw: "Szablon", mamy to jej idenntyfiator, którym jest liczba: {{Code|10}}, wtedy otrzymamy te same wyniki, co powyżej: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Template": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = 10, ["klucz projektu"] = "pl:w", kanoniczna = "tak", }; ---- Zwraca wartość: "Template": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = 10, ["kod projektu"] = "w", ["kod języka"] = "pl", kanoniczna = "tak", }; </syntaxhighlight> Przypadek odwrotny, do poprzednich, dla tego samego projektu, gdy nie używamy tego parametru, ale przestrzenie nazw są tym razem po angielsku, jako nazwy kanoniczne, które są zamieniane na jej wersją charakterystyczną dla danego projektu, tutaj polską: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "Template", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "Template", ["kod projektu"] = "w", ["kod języka"] = "pl", }; </syntaxhighlight> Identyfikator przestrzeni nazw tłumaczymy na jego nazwę polską - ewentualnie, na wersję języka projektu, i dlatego tutaj używamy języka polskiego, ponieważ mamy do czynienia z projektem polskojęzycznym, bo kod języka projektu wskazuje tutaj na ten język: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = 10, ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = 10, ["kod projektu"] = "w", ["kod języka"] = "pl", }; </syntaxhighlight> ====== Tłumaczenie nazw przestrzeni na jej wersję w innych języku w jakikolwiek projekcie ====== Do tłumaczenia używamy parametru {{Code|awaryjnie}}, której użycie w funkcji {{m|Nazwy|NpDane}}, powoduje skorzystanie z bazy danym projektów {{Code|MediaWiki}}, czyli {{Code|{{NS|l=tak|w=tak|k=en:d|jw=tak}}}} (po angielsku), a inaczej {{Code|{{NS|l=tak|w=tak|k=d}}}} (po polsku): * Przy użyciu nazw przestrzeni nazw w postaci, nie identyfikatorów, nazwanej łańcuchem znaków,możemy daną przestrzeń przetłomaczyć na dany język, nie używając przy tym żadnych stron: {{Code|.json}}, w podstronach modułu {{Code|{{m|Nazwy/}}}}: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "Kategorie", ["klucz projektu"] = "de:w", awaryjnie = "tak", kanoniczna = "tak", }; local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "Category", ["klucz projektu"] = "de:w", awaryjnie = "tak", }; local nazwa_przestrzeni_nazw_3 = nazwy_modul.NpDane{ nazwa = "Категория", ["klucz projektu"] = "ru:w", awaryjnie = "tak", kanoniczna = "tak", }; local nazwa_przestrzeni_nazw_4 = nazwy_modul.NpDane{ nazwa = "Category", ["klucz projektu"] = "ru:w", awaryjnie = "tak", }; </syntaxhighlight> * Jako z ich wersją numeryczną, czyli w postaci identyfikatorów, nazwanej w postaci pewnego numeru, ale przestrzenie nazw są te same, co powyżej, tylko inaczej zapisane, a inne parametry są takie same, czyli z czterech przykładów generują się jedynie dwa, ale wyniki są te same: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = 14, ["klucz projektu"] = "de:w", awaryjnie = "tak", }; local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa 14, ["klucz projektu"] = "ru:w", awaryjnie = "tak", }; </syntaxhighlight> Przykłady tłumaczenia z jednej wersji językowej w danym języku na angielski (wersję kanoniczną) i odwrotnie # {{Code|{{s|NpDane|Kategorie|klucz projektu{{=}}de:w|awaryjnie{{=}}tak|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|Kategorie|klucz projektu=de:w|awaryjnie=tak|kanoniczna=tak}}}} # {{Code|{{s|NpDane|Category|klucz projektu{{=}}de:w|awaryjnie{{=}}tak}}}} → {{Tt|{{NpDane|Category|klucz projektu=de:w|awaryjnie=tak}}}} # {{Code|{{s|NpDane|Категория|klucz projektu{{=}}ru:w|awaryjnie{{=}}tak|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|Категория|klucz projektu=ru:w|awaryjnie=tak|kanoniczna=tak}}}} # {{Code|{{s|NpDane|Category|klucz projektu{{=}}ru:w|awaryjnie{{=}}tak}}}} → {{Tt|{{NpDane|Category|klucz projektu=ru:w|awaryjnie=tak}}}} Przykłady przy użyciu identyfikatorów: # {{Code|{{s|NpDane|14|klucz projektu{{=}}de:w|awaryjnie{{=}}tak}}}} → {{Tt|{{NpDane|Category|klucz projektu=de:w|awaryjnie=tak}}}} # {{Code|{{s|NpDane|14|klucz projektu{{=}}ru:w|awaryjnie{{=}}tak}}}} → {{Tt|{{NpDane|Category|klucz projektu=ru:w|awaryjnie=tak}}}} ===== Użycie parametru {{Code|link}} oraz zależność od projektu i języka, wyświetlanie nazw przestrzeni nazw po polsku ===== Przykłady poniżej i niektóre wywołania funkcji {{m|Nazwy|NpDane}} piszemy przy pomocy parametru {{Code|link}}, który posiłkujemy z {{Code|klucz projektu}}, przykładowo z pomożeniem użycia zmiennej {{Code|po polsku}}, ewentualnie z użyciem argumentu {{Code|kanoniczna}}, co powoduje wyświetlanie się linku do pewnej strony naa tym samym projekcie lub innym,a jeśli mamy nazwę kanoniczną, to otrzymamy w linku nazwę linku właśnie że wyświetlaną, np. w postaci: {{Np|(main)|link=tak}}: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "Szablon", link = "tak", ["klucz projektu"] = "pl:w", }; local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "Szablon", link = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; local nazwa_przestrzeni_nazw_3 = nazwy_modul.NpDane{ nazwa = "Template", link = "tak", ["klucz projektu"] = "en:w", ["po polsku"] = "tak", }; ---- Tutaj nazwa przestrzeni zostanie wyświetlona, jako nazwa linku, po angielsku, czyli w wersji kanonicznej local nazwa_przestrzeni_nazw_4 = nazwy_modul.NpDane{ nazwa = "Template", link = "tak", kanoniczna = "tak", ["klucz projektu"] = "en:w", ["po polsku"] = "tak", }; local nazwa_przestrzeni_nazw_5 = nazwy_modul.NpDane{ nazwa = "", link = "tak", ["klucz projektu"] = "en:w", }; local nazwa_przestrzeni_nazw_6 = nazwy_modul.NpDane{ nazwa = "", link = "tak", kanoniczna = "tak", ["klucz projektu"] = "en:w", }; local nazwa_przestrzeni_nazw_7 = nazwy_modul.NpDane{ nazwa = "", link = "tak", ["klucz projektu"] = "en:w", ["po polsku"] = "tak", }; ---- Tutaj nazwa przestrzeni zostanie wyświetlona, jako nazwa linku, po angielsku, czyli w wersji kanonicznej local nazwa_przestrzeni_nazw_8 = nazwy_modul.NpDane{ nazwa = "", link = "tak", kanoniczna = "tak", ["klucz projektu"] = "en:w", ["po polsku"] = "tak", }; </syntaxhighlight> Teraz będziemy, to robili przy użyciu identyfikatorów przestrzeni nazw, który będziemy tłumaczyć na jego wersję charakterystyczną dla danego projektu, nazwę kanoniczną lub na jego odpowiednik polski, ale mamy te same przykłady, co powyżej, bo te same przestrzenie nazw, tylko z tą różnicą, że ona jest inaczej zapisana, więc otrzymamy te same wyniki, więc: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = 10, link = "tak", ["klucz projektu"] = "pl:w", }; local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = 10, link = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; local nazwa_przestrzeni_nazw_3 = nazwy_modul.NpDane{ nazwa = 10, link = "tak", ["klucz projektu"] = "en:w", ["po polsku"] = "tak", }; ---- Tutaj nazwa przestrzeni zostanie wyświetlona, jako nazwa linku, po angielsku, czyli w wersji kanonicznej local nazwa_przestrzeni_nazw_4 = nazwy_modul.NpDane{ nazwa = 10, link = "tak", kanoniczna = "tak", ["klucz projektu"] = "en:w", ["po polsku"] = "tak", }; local nazwa_przestrzeni_nazw_5 = nazwy_modul.NpDane{ nazwa = 0, link = "tak", ["klucz projektu"] = "en:w", }; local nazwa_przestrzeni_nazw_6 = nazwy_modul.NpDane{ nazwa = 0, link = "tak", kanoniczna = "tak", ["klucz projektu"] = "en:w", }; local nazwa_przestrzeni_nazw_7 = nazwy_modul.NpDane{ nazwa = 0, link = "tak", ["klucz projektu"] = "en:w", ["po polsku"] = "tak", }; ---- Tutaj nazwa przestrzeni zostanie wyświetlona, jako nazwa linku, po angielsku, czyli w wersji kanonicznej local nazwa_przestrzeni_nazw_8 = nazwy_modul.NpDane{ nazwa = 0, link = "tak", kanoniczna = "tak", ["klucz projektu"] = "en:w", ["po polsku"] = "tak", }; </syntaxhighlight> ---- Przykłady funkcji w wyniku są: # {{Code|{{s|NpDane|nazwa{{=}}Szablon|link{{=}}tak|klucz projektu{{=}}pl:w}}}} → {{Tt|{{NpDane|nazwa=Szablon|link=tak|klucz projektu=pl:w}}}} # {{Code|{{s|NpDane|nazwa{{=}}Szablon|link{{=}}tak|klucz projektu{{=}}pl:w|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=Szablon|link=tak|klucz projektu=pl:w|kanoniczna=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}|link{{=}}tak|klucz projektu{{=}}pl:w}}}} → {{Tt|{{NpDane|nazwa=|link=tak|klucz projektu=pl:w}}}} # {{Code|{{s|NpDane|nazwa{{=}}|link{{=}}tak|klucz projektu{{=}}pl:w|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=|link=tak|klucz projektu=pl:w|kanoniczna=tak}}}} Gdy parametr {{Code|nazwa}} jest liczbą, odpowiedniki tych samych przykładów, co powyżej, tylko przestrzeń nazw jest w postaci numerycznej: # {{Code|{{s|NpDane|nazwa{{=}}10|link{{=}}tak|klucz projektu{{=}}pl:w}}}} → {{Tt|{{NpDane|nazwa=10|link=tak|klucz projektu=pl:w}}}} # {{Code|{{s|NpDane|nazwa{{=}}10|link{{=}}tak|klucz projektu{{=}}pl:w|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=10|link=tak|klucz projektu=pl:w|kanoniczna=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}0|link{{=}}tak|klucz projektu{{=}}pl:w}}}} → {{Tt|{{NpDane|nazwa=0|link=tak|klucz projektu=pl:w}}}} # {{Code|{{s|NpDane|nazwa{{=}}0|link{{=}}tak|klucz projektu{{=}}pl:w|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=0|link=tak|klucz projektu=pl:w|kanoniczna=tak}}}} ---- ---- Inne przykłady, projektu niepolskiego, ale mającej jego wersje polską: # {{Code|{{s|NpDane|nazwa{{=}}Template|link{{=}}tak|klucz projektu{{=}}en:w|po polsku{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=Template|link=tak|klucz projektu=en:w|po polsku=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}Template|link{{=}}tak|klucz projektu{{=}}en:w|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=Template|link=tak|klucz projektu=en:w|kanoniczna=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}|link{{=}}tak|klucz projektu{{=}}en:w|po polsku{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=|link=tak|klucz projektu=en:w|po polsku=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}|link{{=}}tak|klucz projektu{{=}}en:w|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=|link=tak|klucz projektu=pl:w|kanoniczna=tak}}}} Gdy parametr {{Code|nazwa}} jest liczbą, odpowiedniki przykładów powyższych z innym przedstawieniem przestrzeni nazw: # {{Code|{{s|NpDane|nazwa{{=}}10|link{{=}}tak|klucz projektu{{=}}en:w|po polsku{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=10|link=tak|klucz projektu=en:w|po polsku=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}10|link{{=}}tak|klucz projektu{{=}}en:w|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=10|link=tak|klucz projektu=en:w|kanoniczna=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}0|link{{=}}tak|klucz projektu{{=}}en:w|po polsku{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=0|link=tak|klucz projektu=en:w|po polsku=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}0|link{{=}}tak|klucz projektu{{=}}en:w|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=0|link=tak|klucz projektu=pl:w|kanoniczna=tak}}}} ---- ---- A dla projektu niemającej wersji polskiej, np. tylko wersję angielską: # {{Code|{{s|NpDane|nazwa{{=}}Template|link{{=}}tak|klucz projektu{{=}}commons|po polsku{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=Template|link=tak|klucz projektu=commons|po polsku=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}Template|link{{=}}tak|klucz projektu{{=}}commons|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=Template|link=tak|klucz projektu=commons|kanoniczna=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}|link{{=}}tak|klucz projektu{{=}}commons|po polsku{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=|link=tak|klucz projektu=commons|po polsku=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}|link{{=}}tak|klucz projektu{{=}}commons|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=|link=tak|klucz projektu=commons|kanoniczna=tak}}}} Gdy parametr {{Code|nazwa}} jest liczbą, wtedy mamy te same przykłady, co powyżej, tylko ta sama przestrzeń nazw jest w innej postaci przedstawiona: # {{Code|{{s|NpDane|nazwa{{=}}10|link{{=}}tak|klucz projektu{{=}}commons|po polsku{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=10|link=tak|klucz projektu=commons|po polsku=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}10|link{{=}}tak|klucz projektu{{=}}commons|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=10|link=tak|klucz projektu=commons|kanoniczna=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}0|link{{=}}tak|klucz projektu{{=}}commons|po polsku{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=0|link=tak|klucz projektu=commons|po polsku=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}0|link{{=}}tak|klucz projektu{{=}}commons|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=0|link=tak|klucz projektu=commons|kanoniczna=tak}}}} ===== Zamiana przestrzeni nazw przedmiotowej na dyskusji lub przeciwnie, i transformacje tożsame ===== * Używać tu będziemy dodatkowo parametrów: {{Code|przedmiotowa}} - zamiany przestrzeni nazw na przedmiotową, czy: {{Code|dyskusja}} - na dyskusji. Można też przechodzić z tej samej przestrzeni nazw w nią samą, lub do niego skojarzonej, tzn. z przedmiotowej do dyskusji lub odwrotnie, wtedy w tym przypadku otrzymujemy nazwę po polsku, dla poskich projektów, dla projektów w danym języku, na nazwę w danym języku, przykłady: <syntaxhighlight lang="lua"> local nazwy_modul = require("Module:Nazwy"); -- Gdy nazwą przestrzeni jest nazwa niekanoniczna: ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_przedmotowej_1 = nazwy_modul.NpDane{ nazwa = "Dyskusja szablonu", przedmiotowa = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_dyskusji_1 = nazwy_modul.NpDane{ nazwa = "Szablon", dyskusja = "tak", ["klucz projektu"] = "pl:w", }; -- Gdy nazwą przestrzeni jest nazwa kanoniczna ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_przedmotowej_2 = nazwy_modul.NpDane{ nazwa = "Template talk", przedmiotowa = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_dyskusji_2 = nazwy_modul.NpDane{ nazwa = "Template", dyskusja = "tak", ["klucz projektu"] = "pl:w", }; -- Gdy prrzestrzeń nazw jest w postaci jej numeru id ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_przedmotowej_3 = nazwy_modul.NpDane{ nazwa = 11, przedmiotowa = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_dyskusji_3 = nazwy_modul.NpDane{ nazwa = 10, dyskusja = "tak", ["klucz projektu"] = "pl:w", }; </syntaxhighlight> Gdy użyjemy dodatkowo parametr {{Code|kanoniczna}}, wtedy otrzymujemy te nazwy w postaci nazwy w języku angielskim (kanoniczne) tych przestrzeni nazw, są te same przykłady, co powyżej, tylko jest inna wersja językowa w wyniku tej samej otrzymanej przestrzeni nazw: <syntaxhighlight lang="lua"> local nazwy_modul = require("Module:Nazwy"); -- Gdy nazwą przestrzeni jest nazwa niekanoniczna: ---- Zwraca wartość: "Template": local nazwa_przestrzeni_przedmotowej_1 = nazwy_modul.NpDane{ nazwa = "Dyskusja szablonu", przedmiotowa = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Template talk": local nazwa_przestrzeni_dyskusji_1 = nazwy_modul.NpDane{ nazwa = "Szablon", dyskusja = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", -- Gdy nazwą przestrzeni jest nazwa kanoniczna: ---- Zwraca wartość: Template": local nazwa_przestrzeni_przedmotowej_2 = nazwy_modul.NpDane{ nazwa = "Template talk", przedmiotowa = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Template talk": local nazwa_przestrzeni_dyskusji_2 = nazwy_modul.NpDane{ nazwa = "Template", dyskusja = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; -- Gdy przestrzeń nazw jest w postaci jej numeru id: ---- Zwraca wartość: ""Template": local nazwa_przestrzeni_przedmotowej_3 = nazwy_modul.NpDane{ nazwa = 11, przedmiotowa = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Template talk": local nazwa_przestrzeni_dyskusji_3 = nazwy_modul.NpDane{ nazwa = 10, dyskusja = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; </syntaxhighlight> Przejście z tej samej przestrzeni na tą samą możemy uzyskać to wtedy, tzw. przejście tożsamościowe, poprzez tłumaczenie nazw dyskusji na dysusji, i nazw przedmiotowych na przedmiotowe, dla róznych projektów, nie tylko polskich, a tutaj mamy dla języka polskiego, tylko repezentacja językowa może być inna, tutaj jest ta polska (w wersji niekanonicznej) i angielska (w wersji kanonicznej): <syntaxhighlight lang="lua"> local nazwy_modul = require("Module:Nazwy"); -- Gdy nazwą przestrzeni jest nazwa niekanoniczna, gdy w ty przypadku chcemy uzyskać nazwę charakterystyczną dla danego języka danego projektu: ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_przedmotowej_1 = nazwy_modul.NpDane{ nazwa = "Szablon", przedmiotowa = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_dyskusji_1 = nazwy_modul.NpDane{ nazwa = "Dyskusja szablonu", dyskusja = "tak", ["klucz projektu"] = "pl:w", }; -- Gdy nazwą przestrzeni jest nazwą kanoniczną: ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_przedmotowej_2 = nazwy_modul.NpDane{ nazwa = "Template", przedmiotowa = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_dyskusji_2 = nazwy_modul.NpDane{ nazwa = "Template talk", dyskusja = "tak", ["klucz projektu"] = "pl:w", }; -- Gdy przestrzeń nazw jest w postaci jej numeru id: ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_przedmotowej_3 = nazwy_modul.NpDane{ nazwa = 10, przedmiotowa = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_dyskusji_3 = nazwy_modul.NpDane{ nazwa = 11, dyskusja = "tak", ["klucz projektu"] = "pl:w", }; </syntaxhighlight> Gdy użyjemy dodatkowo parametr {{Code|kanoniczna}}, uzyskamy nazwę angielską danej przestrzeni nazw, nawet gdy to jest przestrzeń podana w języku polskim, dla polskiego projektu, lub w jezyku charakterystycznym dla danego projektu, jeżeli mamy to w bazie przestrzeni nazw w formie pliku {{Code|.json}}, podane w podstronach modułu {{m|Nazwy/}}, to te nazwy wtedy obsługuje: <syntaxhighlight lang="lua"> local nazwy_modul = require("Module:Nazwy"); -- Gdy nazwą przestrzeni jest nazwą niekanoniczną: ---- Zwraca wartość: "Template": local nazwa_przestrzeni_przedmotowej_1 = nazwy_modul.NpDane{ nazwa = "Szablon", przedmiotowa = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Template talk": local nazwa_przestrzeni_dyskusji_1 = nazwy_modul.NpDane{ nazwa = "Dyskusja szablonu", dyskusja = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; -- Gdy nazwą przestrzeni jest nazwą kanoniczną: ---- Zwraca wartość: Template": local nazwa_przestrzeni_przedmotowej_2 = nazwy_modul.NpDane{ nazwa = "Template", przedmiotowa = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Template talk": local nazwa_przestrzeni_dyskusji_2 = nazwy_modul.NpDane{ nazwa = "Template talk", dyskusja = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; -- Gdy przestrzeń nazw jest w postaci jej numeru id: ---- Zwraca wartość: "Template": local nazwa_przestrzeni_przedmotowej_3 = nazwy_modul.NpDane{ nazwa = 10, przedmiotowa = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", } ---- Zwraca wartość: "Template talk": local nazwa_przestrzeni_dyskusji_3 = nazwy_modul.NpDane{ nazwa = 11, dyskusja = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; </syntaxhighlight> ===== Nazwy przestrzeni z myślnikami dolnymi ===== Jeżeli nazwy danych przestrzeni, niezależnie, czy są w postaci niekanonicznej, czy nie, ale jeżeli w nazwie zawierają spację, to one jako w wyniku zamiast nich będą miały dolny myślnik zamiast spacji, gdy użyjemy parametru: {{Code|["z myślnikami dolnymi"] {{=}} "tak"}}, czyli: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Dyskusja_szablonu": local nazwa_przestrzeni_1 = nazwy_modul.NpDane{ nazwa = "Dyskusja szablonu", ["z myślnikami dolnymi"] = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Dyskusja_szablonu": local nazwa_przestrzeni_2 = nazwy_modul.NpDane{ nazwa = "Template talk", ["z myślnikami dolnymi"] = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Template_talk";: local nazwa_przestrzeni_3 = nazwy_modul.NpDane{ nazwa = "Dyskusja szablonu", kanoniczna = "tak", ["z myślnikami dolnymi"] = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Template_talk": local nazwa_przestrzeni_4 = nazwy_modul.NpDane{ nazwa = "Template talk", kanoniczna = "tak", ["z myślnikami dolnymi"] = "tak", ["klucz projektu"] = "pl:w", }; </syntaxhighlight> ===== Uzyskiwanie kanonicznej nazwy projektu, nazwy przedmiotowej i jej dyskusji, z jej odpowiednika nazwy przestrzeni nazw ===== Dla przestrzeni nazw: {{NpDane|Wikipedia|link=tak|klucz projektu=pl:w}}, jej nazwy projektowej: {{NpDane|Wikipedia|link=tak|kanoniczna=tak|nazwij projektem=tak|klucz projektu=pl:w}} możemy uzyskać, gdy dla funkcji {{m|Nazwy|NpDane}} podamy parametr: {{Code|["nazwij projektem"] {{=}} "tak"}}, dla przestrzeni przedmiotowej lub dyskusji: {{NpDane|Wikipedia talk|link=tak|klucz projektu=pl:w}}, jej nazwy projektowej: {{NpDane|Wikipedia talk|link=tak|kanoniczna=tak|nazwij dyskusją projektu=tak|klucz projektu=pl:w}}, gdy podamy parametr {{Code|["nazwij dyskusją projektu"] {{=}} "tak"}}, czyli: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Wikipedia": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "Wikipedia", ["nazwij projektem"] = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Project": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "Wikipedia", ["nazwij projektem"] = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Project": local nazwa_przestrzeni_nazw_3 = nazwy_modul.NpDane{ nazwa = "Dyskusja Wikipedii", ["nazwij projektem"] = "tak", przedmiotowa = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Dyskusja Wikipedii": local nazwa_przestrzeni_nazw_4 = nazwy_modul.NpDane{ nazwa = "Wikipedia", ["nazwij dyskusją projektu"] = "tak", dyskusja = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Project talk": local nazwa_przestrzeni_nazw_5 = nazwy_modul.NpDane{ nazwa = "Dyskusja Wikipedii", ["nazwij dyskusją projektu"] = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Project talk": local nazwa_przestrzeni_nazw_6 = nazwy_modul.NpDane{ nazwa = "Wikipedia", ["nazwij dyskusją projektu"] = "tak", dyskusja = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; </syntaxhighlight> ===== Różne wersje sprawdzania istnienia przestrzeni nazw ===== ====== Sprawdzanie, czy dana przestrzeń jest poprawnie podane, czy istnieje ====== Możemy sprawdzić, istnienie podanej przestrzeni nazw poprzez użycie parametru {{Code|istnieje}} z wartością niepustą, wtedy dla obu jej wartości uzyskujemy wyniki, wskazujać, czy istnieją przestrzenie nazw istniejące i które nie mają prawa istnieć z racji bytu, w pierwszym przypadku otrzymamy treściwy wynik, a w drugim komunikatro błędzie: <syntaxhighlight lang="lua">0 local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "Szablon", istnieje = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Moja przestrzeń": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "Moja przestrzeń", istnieje = "", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "(błąd)": local nazwa_przestrzeni_nazw_3 = nazwy_modul.NpDane{ nazwa = "Moja przestrzeń", istnieje = "tak", ["klucz projektu"] = "pl:w", }; </syntaxhighlight> Gdy dana przestrzeń nie istnieje przy użyciu wartości niepustej parametru {{Code|istnieje}}, wtedy otrzymujemy błąd funkcji w postaci tekstu {{Code|(błąd)}}, a gdy nie podamy tego parametru, to otrzymamy nazwę sformatowaną danej nieznanej przestrzeni nazw po usunięciu wszystkich spacji lub dolnych myślników na początku i końcu ciągu oraz zbędnych wewnątrz tego ciągu i zastąpieniu ich kolejnych jedną spacją. A gdy jednak przestrzeń nazw istnieje, to funkcja zachowuje się tak, jakby nie podano tego parametru. ====== Łatwe sprawdzanie istnienia danej przestrzeni nazw ====== Sprawdzamy tutaj istnienie podanej przestrzeni nazw w parserach wikikodu {{Code|MediaWiki}}, wtedy dla nieistniejącej przestrzeni nazw otrrzymamy wynik pusty, a dla istniejącej już nie, wyjątkiem jest przestrzeń główna, dla której wartość otrzymana jest pusta, co nie trudno jest odróżnić od stanu błędu funkcji, chyba, że użyjemy pewnego parametru opisywanego poniżej: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "Szablon", istnieje = "tak", ["wynik błędu nietekstowy"] = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Moja przestrzeń": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "Moja przestrzeń", istnieje = "", ["wynik błędu nietekstowy"] = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: nil: local nazwa_przestrzeni_nazw_3 = nazwy_modul.NpDane{ nazwa = "Moja przestrzeń", istnieje = "tak", ["wynik błędu nietekstowy"] = "tak", ["klucz projektu"] = "pl:w", }; </syntaxhighlight> W kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}} powyższe wywołanie przy nieznanych przestrzeniach przyjmuje wartość {{Code|nil}} (ostatni przykład), a wikikodzie w szablonach wartość pustą: "". A jeżeli chcemy sprawdzić, za pomocą funkcji parsera wikikodu: {{Code|{{s|#if:coś|wtedy|przeciwnie}}}}, używając odpowiednika szablonowego {{s|NpDane}}, wtedy musimy użyć parametru: {{Code|["wynik błędu nietekstowy"] {{=}} "tak"}}, używany z: {{Code|istnieje {{=}} "tak"}}, gdy dana przestrzeń nie istnieje, wtedy uzyskamy wartość pustą (bo wartość {{Code|nil}} jest tłumaczone na to), a żeby odróżnić ją od nazwy przestrzeni nazw głównej, to należy dodatkowo użyć: {{Code|["wyświetlana"] {{=}} "tak"}}, wtedy dla wartości pustej tej nazwy przestrzeni nazw, uzyskujemy w wyniku czego nie wartość pustą, czyli: {{Code|(główna)}} dla projektów polskich, lub po użyciu parametru {{Code|["po polsku"] {{=}} "tak"}} z wartością niepustą albo {{Code|(main)}} dla przestrzeni angielskich bądź innych, gdy nie ma obsługi w bazie przestrzeni nazw, tę nazwę można uzyskać też przy parametrze {{Code|kanoniczna {{=}} "tak"}} dla każdego obsługiwanego projektu {{Strong|wiki}}, więc przy takich realiach łatwo to odróżnić od komunikatu błędu tej funkcji. ===== Uzyskiwanie uchwytu danej przestrzeni nazw, analogicznie do funkcji {{Code|mw.site.namespaces}} (ale w sposób inny sformułowana), ale też z innym zestawem parametrów ===== Uchwyt niskopoziomowy do danej przestrzeni nazw nie można uzyskać przy pomocy kodu z: {{Code|mw.site.namespaces}}, ponieważ jest on dla przestrzeni na bieżącym projekcie, a tutaj mamy siostrzany. Funkcja uzyskująca uchwyt ignoruje wielkość liter w przestrzeni nazw oraz powtórzone odstępy zrealizowane za pomocą spacji lub dolnych myślników. To wysokopoziomowe uzyskanie uchwytu można utworzyć przy pomocy parametru: {{Code|uchwyt}}: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local uchwyt_1 = nazwy_modul.NpDane{ nazwa = "Szablon", uchwyt = "tak", ["klucz projektu"] = "pl:w", }; local uchwyt_2 = nazwy_modul.NpDane{ nazwa = "Template", uchwyt = "tak", ["klucz projektu"] = "pl:w", }; local uchwyt_3 = nazwy_modul.NpDane{ nazwa = 10, uchwyt = "tak", ["klucz projektu"] = "pl:w", }; </syntaxhighlight> Funkcja {{Code|nazwy_modul.NpDane}} jest bardziej ogólniejsza niż {{Code|mw.site.namespaces}} na projekcie bieżącym, ponieważ ona uwzględnia inne projekty niż polski {{NS|l=tak|w=tak}}, bo uwzględnia większą liczbę nazw przestrzeni nazw, czyli ona obejmuje wszystkie znane przestrzenie nazw, i dlatego należy stosować tę funkcję, a nie dedykowaną tabelę z połączoną z metatabelką za pomocą funkcji {{lpg|Lua}}. == Funkcje nazw serwisowych projektów siostrzanych polskiego {{NS|w=tak|l=tak|pk=d}} == === {{Code|m.NAZWASERWISU()}} === ==== Odpowiednik szablonowy ==== Odpowiednik szablonowy jest pod nazwą {{s|NAZWASERWISU}} (skrót: {{s|NS}}). Jego parametry są podobne do jego wersji bibliotecznej. Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce. ==== Funkcja biblioteczna ==== Szablon jest używany do uzyskania nazwy serwisu danej wiki, ewentualnie w postaci linku do strony głównej projektu danej wiki lub do artykułu o danej wiki na {{lpg|Wikipedia|Wikipedii}}, w jakieś podanej wersji językowej. {{OpisParametrów | 1 = Parametry podstawowe...| nagłówek1=tak | 2 = {{Parametr|wyspecjalizowana|tak}} | _2 = Tylko dla tej funkcji wywołanej w postaci ramki w wikikodzie w szablonach, gdy do niej wsadzamy bezpośrednio jako dzieci, a w przypadku z rodzica to ten parametr jest niepotrzebny lub powinien przyjmować wartość pustą, | 3 = Inne parametry...| nagłówek3=tak | 4 = Ta funkcja dalsze ma takie same parametry, co szablon w jego pełnej nazwie: {{s|NAZWASERWISU}}, lub skrótowej: {{s|NS}}.|nagłówek4=tak | 5 = Wszystkie powyższe zmienne są opcjonalne|nagłówek5=tak }} ===== Opis parametrów użytych razem z parametrem {{Code|link}} ===== Szablon przyjmuje parametr opcjonalny {{Code|link}} ({{s|NS|l{{=}}tak}}), dzięki któremu jest wyświetlany link, do strony głównej tego projektu, w postaci: {{Code|{{NS|l=tak}}}}, o nazwie linku, będącą jednocześnie nazwą serwisu projektu '''{{NS|l=tak}}'''. Gdy dodamy parametr {{Code|wikipedia{{=}}tak}} do wywołania {{Code|{{s|NS|l{{=}}tak|w{{=}}tak}}}}, wtedy uzyskamy wynik: {{Code|{{NS|l=tak|w=tak}}}}, w innym przypadku, gdy linkujemy do angielskiej {{NS|w=tak|l=tak|pk=mj|k=tak}}, wtedy dla wywołania {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|kj{{=}}en}}}} mamy: {{Code|{{NS|l=tak|w=tak|kj=en}}}}, a w przypadku angielskiego {{NS|w=tak|l=tak|pk=d}} dla wikikodu {{Code|{{s|NS|l{{=}}tak|kj{{=}}en}}}} mamy wynik w postaci: {{Code|{{NS|l=tak|kj=en}}}}, a jeśli użyjemy parametru {{Code|kod projektu}}, wtedy wywołanie {{Code|{{s|NS|link{{=}}tak|kp{{=}}s}}}}, to mamy: {{Code|{{NS|l=tak|kp=s}}}}, a gdy dodamy dodatkowo {{Code|wikipedia{{=}}tak}}, zatem {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|kp{{=}}s}}}} jest o wyniku: {{Code|{{NS|l=tak|w=tak|kp=s}}}}. {{OpisParametrów | 1 = Wyniki z parametrem: {{Parametr|link|tak}}, zostały obtoczone znacznikiem: {{Tag|code}}, dla odróżnienia rezultatu od reszty tekstu.|nagłówek1=tak }} ===== Wywołania szablonu z tekstem z małymi literami po linku (parametr: {{Code|po}}) i z dowolnym tekstem w nazwie linku (parametr: {{Code|za}}) ===== {{OpisParametrów | 1 = Parametr: {{Parametr|link|tak}}, w szablonie: {{s|NAZWASERWISU}}, mówi, że ma być podany link do strony głównej projektu lub artykułu na {{NS|l=tak|k=w}}. Można w nie podać parametr: {{Parametr|po|<łańcuch tekstowy>}}, który jest za linkiem, podobnie: {{Parametr|za|<łańcuch tekstowy>}}, który jest w nazwie linku, ale względem jej originalnej nazwy za nim.|nagłówek1=tak }} ====== Proste przykłady użycia, z linkiem do projektu bieżącego, przy użyciu parametru {{Code|link}} ====== Gdy chcemy wyświetlić link do polskiego projektu {{NS|w=tak|l=tak|pk=mj}} do jego strony głównej. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local link_1 = nazwy_modul.NAZWASERWISU{ link = "tak", po = "a", }; local link_2 = nazwy_modul.NAZWASERWISU{ link = "tak", za = "a", }; </syntaxhighlight> ; Analogiczne wywołanie szablonu{{Dk}} * {{Code|{{s|NS|l{{=}}tak|p{{=}}a}}}} → {{Tt|{{NS|l=tak|p=a}}}}, * {{Code|{{s|NS|l{{=}}tak|z{{=}}a}}}} → {{Tt|{{NS|l=tak|z=a}}}}. ; Kod wywołania tych szablonów: ;; Dla wywołania {{Code|{{s|NS|l{{=}}tak|p{{=}}a}}}}{{Dk}} {{PreNowiki|{{NS|l=tak|p=a}}}} ;; Dla wywołania {{Code|{{s|NS|l{{=}}tak|z{{=}}a}}}}{{Dk}} {{PreNowiki|{{NS|l=tak|z=a}}}} ====== Proste przykłady użycia, z linkiem do polskiej {{NS|w=tak|l=tak|k=w|pk=mj}}, przy użyciu parametru {{Code|link}} ====== Gdy chcemy wyświetlić link do artykułu o {{NS|w=tak|l=tak|k=b|pk=mj}} na polskiej {{NS|w=tak|l=tak|k=w|pk=mj}}. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local link_1 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", po = "a", }; local link_2 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", za = "a", }; </syntaxhighlight> ; Analogiczne wywołanie szablonu{{Dk}} * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|p{{=}}a}}}} → {{Tt|{{NS|l=tak|w=tak|p=a}}}}, * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|z{{=}}a}}}} → {{Tt|{{NS|l=tak|w=tak|z=a}}}}. ; Kod wywołania tych szablonów: ;; Dla wywołania {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|p{{=}}a}}}}{{Dk}} {{PreNowiki|{{NS|l=tak|w=tak|p=a}}}} ;; Dla wywołania {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|z{{=}}a}}}}{{Dk}} {{PreNowiki|{{NS|l=tak|w=tak|z=a}}}} ====== Przykłady użycia, z linkiem do obcojęzycznej {{NS|w=tak|l=tak|k=w|pk=mj}}, z polską podanego nazwą projektu, przy użyciu parametru {{Code|link}} ====== Gdy chcemy wyświetlić link do artykułu o {{NS|w=tak|l=tak|k=b|pk=mj}} na podanej obcojęzycznej {{NS|w=tak|l=tak|k=w|pk=mj}} podany za pomocą parametru {{Code|["klucz projektu"] {{=}} "en:s"}}. Jest to projekt: {{NS|l=tak|k=en:s}}, którego językiem jest: {{lpg|{{#invoke:lang|hasło|es}}}}. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local link_1 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", ["klucz projektu"] = "en:s", po = "a", }; local link_2 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", ["klucz projektu"] = "en:s", za = "a", }; </syntaxhighlight> ; Analogiczne wywołanie szablonu{{Dk}} * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|k{{=}}en:s|p{{=}}a}}}} → {{Tt|{{NS|l=tak|w=tak|k=en:s|p=a}}}}, * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|k{{=}}en:s|z{{=}}a}}}} → {{Tt|{{NS|l=tak|w=tak|k=en:s|z=a}}}}. ; Kod wywołania tych szablonów: ;; Dla wywołania {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|k{{=}}en:s|p{{=}}a}}}}{{Dk}} {{PreNowiki|{{NS|l=tak|w=tak|k=en:s|p=a}}}} ;; Dla wywołania {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|k{{=}}en:s|z{{=}}a}}}}{{Dk}} {{PreNowiki|{{NS|l=tak|w=tak|k=en:s|z=a}}}} ====== Przykłady użycia, z linkiem do obcojęzycznej {{NS|w=tak|l=tak|k=w|pk=mj}}, z niepolską podanego nazwą projektu, przy użyciu parametru {{Code|link}} ====== Gdy chcemy wyświetlić link do artykułu o {{NS|w=tak|l=tak|k=b|pk=mj}} do podanej obcojęzycznej {{NS|w=tak|l=tak|k=w|pk=mj}} podany za pomocą parametru {{Code|["klucz projektu"] {{=}} "en:s"}}. A nazwa linku ma być podana w języku tego projektu. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local link_1 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", ["klucz projektu"] = "en:s", ["w języku wiki"] = "tak", po = "a", }; local link_2 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", ["klucz projektu"] = "en:s", ["w języku wiki"] = "tak", za = "a", }; </syntaxhighlight> ; Analogiczne wywołanie szablonu{{Dk}} * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|k{{=}}en:s|jw{{=}}tak|p{{=}}a}}}} → {{Tt|{{NS|l=tak|w=tak|k=en:s|jw=tak|p=a}}}}, * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|k{{=}}en:s|jw{{=}}tak|z{{=}}a}}}} → {{Tt|{{NS|l=tak|w=tak|k=en:s|jw=tak|z=a}}}}. ; Kod wywołania tych szablonów: ;; Dla wywołania {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|k{{=}}en:s|jw{{=}}tak|p{{=}}a}}}}{{Dk}} {{PreNowiki|{{NS|l=tak|w=tak|k=en:s|jw=tak|p=a}}}} ;; Dla wywołania {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|k{{=}}en:s|jw{{=}}tak|z{{=}}a}}}}{{Dk}} {{PreNowiki|{{NS|l=tak|w=tak|k=en:s|jw=tak|za=a}}}} ===== Wywołania szablonu dotyczące, w {{NS|w=tak|l=tak|k=w|pk=mj}} iub nie, kodzie dla projektu {{NS|w=tak|l=tak|pk=m}} dla różnych wersji językowych ===== ====== Przykłady użycia funkcji {{Code|nazwy_modul.NAZWASERWISU()}} ====== Gdy chcemy podać nazwę projektu w postaci linku do artykułu strony głównej na {{NS|w=tak|l=tak|pk=mj}} lub artykułu na polskiej lub obcojęzycznej {{NS|w=tak|l=tak|k=w|pk=mj}}. Do jakiej {{NS|w=tak|l=tak|k=w|pk=mj}} ma być link, to wskazuje kod języka, np.: {{Code|["kod języka"] {{=}} "en"}}. Gdy nie podamy tego kodu, to linkujemy tylko do polskiego {{NS|w=tak|l=tak|pk=mj}} lub do polskiej {{NS|w=tak|l=tak|k=w|pk=mj}} (jeżeli podamy parametr {{Code|wikipedia {{=}} "tak"}}). A gdy podany jest ten kod, to możemy linkować nie tylko do polskich projektów siostrzanych polskiego {{NS|w=tak|l=tak|pk=mj}} (ale tylko różnych jego wersji językowych), ale też można linkować do obcojęzycznych projektów, którym jest Wikipedia do artykułu o tym projekcie. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local link_1 = nazwy_modul.NAZWASERWISSU{}; }; local link_2 = nazwy_modul.NAZWASERWISU{ link = "tak", }; local link_3 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", }; local link_4 = nazwy_modul.NAZWASERWISU{ link = "tak", ["kod języka"] = "pl", }; local link_5 = nazwy_modul.NAZWASERWISU{ link = "tak", ["kod języka"] = "en", }; local link_6 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", ["kod języka"] = "pl", }; local link_7 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", ["kod języka"] = "en", }; </syntaxhighlight> ====== Analogiczne wywołanie szablonu ====== * {{Code|{{s|NS}}}} → {{Tt|{{NS}}}}, * {{Code|{{s|NS|l{{=}}tak}}}} → {{Tt|{{NS|l=tak}}}}, * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak}}}} → {{Tt|{{NS|l=tak|w=tak}}}}, * {{Code|{{s|NS|l{{=}}tak|kj{{=}}pl}}}} → {{Tt|{{NS|l=tak|kj=pl}}}}, * {{Code|{{s|NS|l{{=}}tak|kj{{=}}en}}}} → {{Tt|{{NS|l=tak|kj=en}}}}, * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|kj{{=}}pl}}}} → {{Tt|{{NS|l=tak|w=tak|kj=pl}}}}, * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|kj{{=}}en}}}} → {{Tt|{{NS|l=tak|w=tak|kj=en}}}}. ===== Wywołanie szablonu dotyczące innego projektu niż ten ===== ====== Przykłady użycia funkcji {{Code|nazwy_modul.NAZWASERWISU()}} ====== Ale też możemy linkować do stron głównych innych projektów niż {{NS|w=tak|l=tak|pk=m}}. Robimy to za pomocą parametru: {{Code|["kod projektu"] {{=}} "s"}}, nie licąc parametru języka, ale też możemy linkować do artykułu o danym projekcie na {{NS|w=tak|l=tak|k=w|pk=mj}}. A jeżeli podamy kod języka {{Code|["kod języka"] {{=}} "en"}}, wtedy linkujemy do angielskich projektów, w tym również do {{NS|w=tak|l=tak|k=w|pk=mj}}. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Tutaj linkujemy do Wikiźródeł do jej strony głównej local linki_1 = nazwy_modul.NAZWASERWISU{ link = "tak", ["kod projektu"] = "s", }; --- Co powyżej, tylko do artykułu na Wikipedii o Wikiźródłach local linki_2 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", ["kod projektu"] = "s", }; -- Tutaj linkujemy do Wikibooksa do jej strony głównej w jakieś jej wersji językowej local linki_3 = nazwy_modul.NAZWASERWISU{ link = "tak", ["kod języka"] = "pl", ["kod projektu"] = "s", }; local linki_4 = nazwy_modul.NAZWASERWISU{ link = "tak", ["kod języka"] = "en", ["kod projektu"] = "s", }; -- Jak powyżej, tylko do artykułu Wikipedii w jakieś wersji językowej o Wikiźródłach local linki_5 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", ["kod języka"] = "pl", ["kod projektu"] = "s", }; local linki_6 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", ["kod języka"] = "en", ["kod projektu"] = "s", }; </syntaxhighlight> ====== Analogiczne wywołanie szablonu ====== * {{Code|{{s|NS|l{{=}}tak|kp{{=}}s}}}} → {{Tt|{{NS|l=tak|kp=s}}}}, * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|kp{{=}}s}}}} → {{Tt|{{NS|l=tak|w=tak|kp=s}}}}, * {{Code|{{s|NS|l{{=}}tak|kj{{=}}pl|kp{{=}}s}}}} → {{Tt|{{NS|l=tak|kj=pl|kp=s}}}}, * {{Code|{{s|NS|l{{=}}tak|kj{{=}}en|kp{{=}}s}}}} → {{Tt|{{NS|l=tak|kj=en|kp=s}}}}, * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|kj{{=}}pl|kp{{=}}s}}}} → {{Tt|{{NS|l=tak|w=tak|kj=pl|kp=s}}}}, * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|kj{{=}}en|kp{{=}}s}}}} → {{Tt|{{NS|l=tak|w=tak|kj=en|kp=s}}}}. ===== Wywołania szablonu z nazwą linku danej wiki ===== ====== Przykłady użycia funkcji {{Code|nazwy_modul.NAZWASERWISU()}} ====== Gdy chcemy podać nazwę linku przy pomocy parametru {{Code|["w języku wiki"] {{=}} "tak"}}, w języku danej wiki, którego podajemy przy parametrze {{Code|["kod języka"] {{=}} "en"}}, dla projektu podanego w zmiennej {{Code|["kod projektu"] {{=}} "s"}}. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local linki_1 = nazwy_modul.NAZWASERWISU{ link = "tak", ["kod projektu"] = "s", ["w języku wiki"] = "tak", }; local linki_2 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", ["kod projektu"] = "s",["w języku wiki"] = "tak", }; local linki_3 = nazwy_modul.NAZWASERWISU{ link = "tak", ["kod języka"] = "pl", ["kod projektu"] = "s", ["w języku wiki"] = "tak", }; local linki_4 = nazwy_modul.NAZWASERWISU{ link = "tak", ["kod języka"] = "en", ["kod projektu"] = "s", ["w języku wiki"] = "tak", }; local linki_5 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", ["kod języka"] = "pl", ["kod projektu"] = "s", ["w języku wiki"] = "tak", }; local linki_6 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", ["kod języka"] = "en", ["kod projektu"] = "s", ["w języku wiki"] = "tak", }; </syntaxhighlight> ====== Analogiczne wywołanie szablonu ====== * {{Code|{{s|NS|l{{=}}tak|kp{{=}}s|jw{{=}}tak}}}} → {{Tt|{{NS|l=tak|kp=s|jw=tak}}}}, * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|kp{{=}}s|jw{{=}}tak}}}} → {{Tt|{{NS|l=tak|w=tak|kp=s|jw=tak}}}}, * {{Code|{{s|NS|l{{=}}tak|kj{{=}}pl|kp{{=}}s|jw{{=}}tak}}}} → {{Tt|{{NS|l=tak|kj=pl|kp=s|jw=tak}}}}, * {{Code|{{s|NS|l{{=}}tak|kj{{=}}en|kp{{=}}s|jw{{=}}tak}}}} → {{Tt|{{NS|l=tak|kj=en|kp=s|jw=tak}}}}, * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|kj{{=}}pl|kp{{=}}s|jw{{=}}tak}}}} → {{Tt|{{NS|l=tak|w=tak|kj=pl|kp=s|jw=tak}}}}, * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|kj{{=}}en|kp{{=}}s|jw{{=}}tak}}}} → {{Tt|{{NS|l=tak|w=tak|kj=en|kp=s|jw=tak}}}}. ===== Wywołanie szablonu z podaną nazwą linku ===== ====== Przykłady użycia funkcji {{Code|nazwy_modul.NAZWASERWISU()}} ====== Jeżeli chcemy podać ściśle określony ciąg, który jest nazwą linku, do linkowania do strony głównej lub artykułu na {{NS|w=tak|l=tak|k=w|pk=mj}} o danym projekcie, np. inną niż nazwa projektu. Tutaj nazwą linku jest {{Code|[1] {{=}} "Biblioteka książek"}}. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local link_1 = nazwy_modul.NAZWASERWISU{ [1] = "Biblioteka książek", link = "tak", }; local link_2 = nazwy_modul.NAZWASERWISU{ [1] = "Biblioteka książek", link = "tak", wikipedia = "tak", }; local link_3 = nazwy_modul.NAZWASERWISU{ [1] = "Biblioteka książek", link = "tak", ["kod projektu"] = "s",["kod języka"] = "en", }; local link_4 = nazwy_modul.NAZWASERWISU{ [1] = "Biblioteka książek", link = "tak", wikipedia = "tak", ["kod projektu"] = "s",["kod języka"] = "en", }; </syntaxhighlight> ====== Analogiczne wywołanie szablonu ====== * {{Code|{{s|NS|Biblioteka książek|l{{=}}tak}}}} → {{Tt|{{NS|Biblioteka książek|l=tak}}}}, * {{Code|{{s|NS|Biblioteka książek|l{{=}}tak|w{{=}}tak}}}} → {{Tt|{{NS|Biblioteka książek|l=tak|w=tak}}}}, * {{Code|{{s|NS|Biblioteka wikiźródeł|l{{=}}tak|kp{{=}}s|kj{{=}}en}}}} → {{Tt|{{NS|Biblioteka wikiźródeł|l=tak|kp=s|kj=en}}}}, * {{Code|{{s|NS|Biblioteka wikiźródeł|l{{=}}tak|w{{=}}tak|kp{{=}}s|kj{{=}}en}}}} → {{Tt|{{NS|Biblioteka wikiźródeł|l=tak|w=tak|kp=s|kj=en}}}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 1fc80ghb7s15rowdis0frj7mulz6hwr 555726 555715 2026-09-11T16:54:02Z Persino 2851 /* Funkcja biblioteczna */ 555726 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Nazwy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == Funkcje nazw nazwy przestrzeni nazw == Należy przeczytać wiadomości ze strony {{lru|Moduły/Nazwy}}, które są informacjami wstępnymi, by używać funkcji bibliotecznych: {{m|Nazwy|Np}} i {{m|Nazwy|NpDane}}, i z nimi skojarzonych szablonów, tzn.: {{s|Np}} i {{s|NpDane}}. Wiadomosci też stąd są bardzo potrzebne do dalszych modułów tomów tej publikacji, to znaczy do funkcji, czy szablonów, nazw. === {{Code|m.Np}} === ==== Odpowiednik szablonowy ==== Odpowiednik szablonowy jest pod nazwą {{s|Np}}, odpowiednik funkcji, w mechanizmie '''MediaWiki''', tzn.: {{Span|styl=color:blue;|<nowiki>{{ns:<nazwa przestrzeni kanoniczna lub nie, albo jej id>}}</nowiki>}}, format tego, bo to nie jest szablon, czy funkcja, tylko wywołanie parserowe, tego, w którym jej parametr, tylko przestrzeny w nim występuje, jej element jest podobny do jej wersji bibliotecznej, opisywanej funkcji. Format wersji bibliotecznej tej funkcji jest bardzo bodobny do jej wersji szablonowej, tylko jest inne uruchomienie, tam jest ramka, a tutaj wywołanie szablonowe. Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce. * Szablon {{s|Np}} korzysta z funkcji bibliotecznej {{m|Nazwy|Np}}, więc parametry obu są wręcz takie same, a nawet podobne. Chociaż ta sama nazwa funkcji w ramce i kodzie {{lpg|Lua}}, to używanie ich nie jest dokładnie takie samo, funkcja biblioteczna nie potrzebuje parametru {{Parametr|wyspecjalizowana|tak}}, a ramka już tak, a szablon {{s|Np}}, który korzysta z tej ramki, to nieobecność, lub obecność z wartością pustą, tego parametru powoduje, że przyjmowane są parametry rodzica, a nie dziecka, które wymagają jego niepustość. ==== Funkcja biblioteczna ==== Zestaw parametrów tej funkcji są to parametry nazwane podawane, w wersji tabelkowej,, w nawiasach klamerkowej, jak się to podaje w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. ; Paramery funkcji{{dk}} {{nobold|{{Code|{{m|Nazwy|Np|...|wyspecjalizowana{{=}}tak}}}}}}, lub funkcji bibliotecznej wykorzystującej opisywaną funkcję{{Dk}} {{OpisParametrów | 1 = Parametry podstawowe | nagłówek1=tak | 2 = {{Code|nazwa}} lub {{Code|1}} | _2 = Nazwa przestrzeni nazw, kanoniczna lub nie, lub {{Code|id}} danej przestrzeni. | 3 = {{Parametr|wyspecjalizowana|tak}} | _3 = Tylko dla tej funkcji wywołanej w postaci ramki w wikikodzie w szablonach, gdy do niej wsadzamy bezpośrednio jako dzieci, a w przypadku z rodzica to ten parametr jest niepotrzebny lub powinien przyjmować wartość pustą, | 4 = Zmienne puste lub nie, np. o wartości: {{Code|tak}}, lub nie, podawane do tej funkcji są:| nagłówek4=tak | 5 = {{Code|przedmiotowa}} | _5 = Zamienia daną przestrzeń na jej nazwę przedmiotową, tzn. na przestrzenie o numerach {{Code|id}} parzyste. | 6 = {{Code|dyskusja}} | _6 = Zamienia daną przestrzeń na jej wersję dyskusji, tzn. na przestrzenie o numerach {{Code|id}} nieparzyste. | 7 = {{Code|kanoniczna}} | _7 = Zamienia nazwę przestrzeni lub {{Code|id}} danej przestrzeni na jej nazwę kanoniczną, tzn. na jej wersję angielską. | 8 = {{Code|z myślnikami dolnymi}} | _8 = Zamienia spację w nazwach przestrzenie nazw na dolne myślniki, | 9 = {{Code|wyświetlana}} | _9 = Ten parametr nie wpływa na sposób wyświetlania nazw przestrzeni, oprócz jednej przestrzeni nazw, której jest przestrzeń główna o nazwie kanonicznej {{Code|(main)}} lub niekanonicznej {{Code|(główna)}}, wtedy są wyświetlane zamiast ciągu pustego te nazwy w zależności od podanego parametru {{Code|kanoniczna}}, tj. czy ona jest pusta lub nie, lub niepodana. | 10 = {{Code|link}} | _10 = Drukuje link o nazwie referencji, którą jest nazwa wyświetlana danej przestrzeni nazw, lub jej {{Code|id}}, o adresie strony przekierowującej, której jest adres odniesienia podanej w tabeli powyżej dla tej funkcji lub szablonu {{s|Np}}. | 11 = {{Code|id}} | _11 = wyświetla id danej przestrzeni nazw. | 12 = {{Code|nazwij projektem}} | _12 = Powoduje, że wyświetlana jest nazwa projektu {{Code|Wikibooks}} w postaci rzeczywistej nazwy kanonicznej (używany wraz z parametrem {{Code|kanoniczna}}), tzn. w postaci nazwy {{Code|Project}}, lub bez tego parametru, w postaci nazwy nierzeczywistej niekanonicznej {{Code|Projekt}}. | 13 = {{Code|nazwij dyskusją projektu}} | _13 = Powoduje, że wyświetlana jest nazwa projektu {{Code|Dyskusja wikibooks}} w postaci rzeczywistej nazwy kanonicznej (używany wraz z parametrem {{Code|kanoniczna}}), tzn. w postaci nazwy {{Code|Project talk}}, lub bez tego parametru, w postaci nazwy nierzeczywistej niekanonicznej {{Code|Dyskusja projektu}}. | 14 = Inne zmienne niepuste:|nagłówek14=tak | 15 = {{Code|istnieje}} | _15 = Zwraca wartość tekstową {{Code|(bląd)}}, gdy przestrzeń jest nieprawidłowa lub nie istnieje, w innym przypadku zwraca normalną wartość. | 16 = {{Code|wynik błędu nietekstowy}} | _16 = Używany z {{Code|istnieje}}, zwraca wartość w języku {{lpg|Lua}} wartość {{Code|nil}}, gdy wartość nazwy przestrzeni nazw lub {{Code|id}} jest nieprawidłowa lub nieznana. | 17 = Zwracana zmienna w postaci tabeli ze składowymi z pewnymi podzmiennymi:|nagłówek17=tak | 18 = {{Code|uchwyt}} | _18 = Zwraca uchwyt przestrzeni nazw do danej przestrzeni nazw. }} ===== Przykłady używania ===== ====== Podstawowe wywołanie ====== Podstawowe przykłady podstawowego wywołania funkcji, czyli uzyskiwania nazwy niekanonicznej z dowolnej nazwy przestrzeni kanonicznej, czy jej numeru {{Code|id}} (kodu danej przestrzeni nazw, który reprezentuje daną przestrzeń nazw przedmiotową, czy dyskusji), a więc: <syntaxhighlight lang="lua"> local nazwy_modul = require("Module:Nazwy"); ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_1 = nazwy_modul.Np{ [1] = "Szablon", }; ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_2 = nazwy_modul.Np{ [1] = "Template", }; ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_3 = nazwy_modul.Np{ [1] = 10, }; ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_4 = nazwy_modul.Np{ nazwa = "Szablon", }; ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_5 = nazwy_modul.Np{ nazwa = "Template", }; ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_6 = nazwy_modul.Np{ nazwa = 10, }; </syntaxhighlight> Te trzy pary wywołania wyświetlają ten sam wynik tzn. o takiej samej wartości, bo parametr {{Code|nazwa}} wskazuje na tą samą przestrzeń nazw, tylko one są rożnie wskazane. Został ta użyty parametr: {{Code|1}} lub {{Code|nazwa}}, które oznaczają to samo, czyli przestrzeń nazw w postaci kanonicznej, niekanonicznej, czy numeru {{Code|id}}, czyli identyfikatora przestrzeni nazw. Jako wartość uzyskujemy tam nazwę kanoniczną przestrzenina polskiem {{NS|l=tak|p=ie}}. Przestrzeń nazw może zawierać dowolnej wielkości litery, z dowolną liczbą odstępów z dolnymi spacjami lub normalnymi, jeżeli w nim one występują,wtedy zawsze oznaczają one tą samą przestrzeń, niezależnie jak ją zapiszemy, przykłady poniżej. Równie dobrze dowolną nazwę niekanoniczną możemy napisać, co jest uwidocznione w parametrze {{Code|nazwa}}, na wyjściu otrzymujemy w pełni sformatowaną nazwę niekanoniczną, która odpowiada jej odpowiednikowi niesformatowanemu: <syntaxhighlight lang="lua"> local nazwy_modul = require("Module:Nazwy"); -- Zwraca wartość: "Szablon": local nazwa_przestrzeni_1 = nazwy_modul.Np{ nazwa = "SZABLON", }; -- Zwraca wartość: "Szablon": local nazwa_przestrzeni_2 = nazwy_modul.Np{ nazwa = "TEMPLATE", }; -- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_3 = nazwy_modul.Np{ nazwa = "DYSKUSJA ___ ___ _ SZABLONU", }; -- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_4 = nazwy_modul.Np{ nazwa = "TEMPLATE_________TALK", }; </syntaxhighlight> ====== Nazwy kanoniczne i niekanoniczna oraz zamiana z jednej na drugą ====== Aby uzyskać nazwę z dowolnej nazwy, nawet też kanonicznej, czynie, czy też z numeru {{Code|id}} (identyfikatora przestrzeni nazw), wtedy należy podać parametr przestrzeni nazw, z dodatkowym parametrem {{Code|kanoniczna}}, w takim razie: <syntaxhighlight lang="lua"> local nazwy_modul = require("Module:Nazwy"); -- Uzyskujemy wartość: "Template": local nazwa_kanoniczna_1 = nazwy_modul.Np{ nazwa = "Szablon", kanoniczna = "tak", }; -- Uzyskujemy wartość: "Template": local nazwa_kanoniczna_2 = nazwy_modul.Np{ nazwa = "Template", kanoniczna = "tak", }; -- Uzyskujemy wartość: "Template": local nazwa_kanoniczna_3 = nazwy_modul.Np{ nazwa = 10, kanoniczna = "tak", }; </syntaxhighlight> * Według powyższego przykładu, ona, czyli przestrzeń nazw, jest zamieniana na sformatowaną nazwę kanoniczną, jako parametr może być nazwa niekanoniczna, kanoniczna, czy identyfikator przestrzeni nazw. Dowolną nazwę kanoniczną, czy nie, można zamienić na niekanoniczną, niezależnie w jakiej formie podamy przestrzeń nazw, może być to przekształcenie tożsamościowe, może być to w postaci identyfikatora tej przestrzeni, niezależnie jaką ją mamy na myśli, więc: <syntaxhighlight lang="lua"> local nazwy_modul = require("Module:Nazwy"); -- Uzyskujemy wartość: "Szablon": local nazwa_niekanoniczna = nazwy_modul.Np{ nazwa = "Template", }; </syntaxhighlight> * Wystarczy wtedy użyć tylko jednego parametru, nie trzeba używać większej liczby innych parametrów. ====== Nazwy przedmiotowe i dyskusji oraz przejścia pomiędzy nimi ====== Można też przechodzić z tej samej przestrzeni nazw w nią samą, lub do niego skojarzoną, tzn. z przedmiotowej do dyskusji lub odwrotnie, przykłady poniżej. Do tego celu używamy parametru {{Code|przedmiotowa}}, czyli do tłumaczenia nazwy przestrzeni nazw na jej wersję przedmiotową, tzn. na przestrzeń nazw o identyfikatorze parzystym. Można też użyć parametru {{Code|dyskusja}}, robiąca tłumaczenia na wersje dyskusji, o identyfikatorze nazwy przestrzeni nazw nieparzystym. Nie wolno używać tych parametrów, tych dwóch w jednym wywołaniu, bo może dojść do błędu funkcji w postaci komunikatu {{Code|(błąd)}}. Tłumaczona nazwa może być zarówno niekanoniczna, jak i kanoniczna, lub być zawarta w postaci identyfikatora przestrzeni nazw. Tutaj bez użycia żadnego parametru dodatkowego, wtedy otrzymujemy na wyjściu nazwę niekanoniczną. <syntaxhighlight lang="lua"> local nazwy_modul = require("Module:Nazwy"); -- Gdy nazwą przestrzeni jest nazwa niekanoniczna: ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_przedmotowej_1 = nazwy_modul.Np{ nazwa = "Dyskusja szablonu", przedmiotowa = "tak", }; ---- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_dyskusji_1 = nazwy_modul.Np{ nazwa = "Szablon", dyskusja = "tak", }; -- Gdy nazwą przestrzeni jest nazwa kanoniczna: ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_przedmotowej_2 = nazwy_modul.Np{ nazwa = "Template talk", przedmiotowa = "tak", }; ---- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_dyskusji_2 = nazwy_modul.Np{ nazwa = "Template", dyskusja = "tak", }; -- Gdy prrzestrzeń nazw jest w postaci numeru id: ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_przedmotowej_3 = nazwy_modul.Np{ nazwa = 11, przedmiotowa = "tak", }; ---- Zwraca wartość: szablon "Dyskusja szablonu": local nazwa_przestrzeni_dyskusji_3 = nazwy_modul.Np{ nazwa = 10, dyskusja = "tak", }; </syntaxhighlight> Gdy użyjemy dodatkowo parametr {{Code|kanoniczna}}, zamieniający dowolne przestrzenie nazw, niezależnie, czy jest zapisana w postaci identyfikatora, czy nie, gdy nazwą przestrzeni jest nazwa niekanoniczna (lub kanoniczna), to uzyskana nazwa przedmiotowa, czy dyskusji, jest nazwą kanoniczną, jako w wyniku: <syntaxhighlight lang="lua"> local nazwy_modul = require("Module:Nazwy"); -- Gdy nazwą przestrzeni jest nazwa niekanoniczna: ---- Zwraca wartość: "Template": local nazwa_przestrzeni_przedmotowej_1 = nazwy_modul.Np{ nazwa = "Dyskusja szablonu", przedmiotowa = "tak", kanoniczna = "tak", }; ---- Zwraca wartość: "Template talk": local nazwa_przestrzeni_dyskusji_1 = nazwy_modul.Np{ nazwa = "Szablon", dyskusja = "tak", kanoniczna = "tak", }; -- Gdy nazwą przestrzeni jest nazwa kanoniczna: ---- Zwraca wartość: "Template": local nazwa_przestrzeni_przedmotowej_2 = nazwy_modul.Np{ nazwa = "Template talk", przedmiotowa = "tak", kanoniczna = "tak", }; ---- Zwraca wartość: "Template talk": local nazwa_przestrzeni_dyskusji_2 = nazwy_modul.Np{ nazwa = "Template", dyskusja = "tak", kanoniczna = "tak", }; -- Gdy przestrzeń nazw jest w postaci numeru id: ---- Zwraca wartość: "Template": local nazwa_przestrzeni_przedmotowej_3 = nazwy_modul.Np{ nazwa = 11, przedmiotowa = "tak", kanoniczna = "tak", }; ---- Zwraca wartość: "Template talk": local nazwa_przestrzeni_dyskusji_3 = nazwy_modul.Np{ nazwa = 10, dyskusja = "tak", kanoniczna = "tak", }; </syntaxhighlight> Przejście z tej samej przestrzeni na tą samą możemy uzyskać, gdy nazwę przedmiotową tłumaczymy na przedmiotową, dyskusji na dyskusji, wtedy tłumaczenie z przestrzeni do przestrzeni jest tożsamościowe, niezależnie w jakiej formie podamy nazwę przestrzeni nazw jako parametr, tłumaczymy nazwę polską na tą samą nazwę też polską, o tej samej wartości lub jej odpowiednik angielski w wersji kanonicznej na jej wersję niekanoniczną, czy z numeru identyfikatorana jej odpowiednik nazwowy, ale nadal takie przejście jest tożsamosciowe, bo chodzi o tą samą przestrzeń nazw, mimo że użyliśmy tych parametrów: <syntaxhighlight lang="lua"> local nazwy_modul = require("Module:Nazwy"); -- Gdy nazwą przestrzeni jest nazwa niekanoniczna: ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_przedmotowej_1 = nazwy_modul.Np{ nazwa = "Szablon", przedmiotowa = "tak", }; ---- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_dyskusji_1 = nazwy_modul.Np{ nazwa = "Dyskusja szablonu", dyskusja = "tak",}; -- Gdy nazwą przestrzeni jest nazwa kanoniczna: ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_przedmotowej_2 = nazwy_modul.Np{ nazwa = "Template", przedmiotowa = "tak", }; ---- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_dyskusji_2 = nazwy_modul.Np{ nazwa = "Template talk", dyskusja = "tak",}; -- Gdy przestrzeń nazw jest w postaci numeru id: ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_przedmotowej_3 = nazwy_modul.Np{ nazwa = 10, przedmiotowa = "tak", }; ---- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_dyskusji_3 = nazwy_modul.Np{ nazwa = 11, dyskusja = "tak",}; </syntaxhighlight> Gdy użyjemy dodatkowo parametr {{Code|kanoniczna}}, to uzyskana nazwa przedmiotowa, czy dyskusji, wtedy mamy tłumaczenie tozsamościowe, jeśli chodzi o przestrzeń nazw, co one oznaczają, jeśli ona jest niekanoniczna, to uzyskamy jej nazwę, ale po angielsku, a jeśli jednak jest kanoniczna, to otrzymamy ten sam wynik: <syntaxhighlight lang="lua"> local nazwy_modul = require("Module:Nazwy"); -- Gdy nazwą przestrzeni jest nazwa niekanoniczna: ---- Zwraca wartość: "Template": local nazwa_przestrzeni_przedmotowej_1 = nazwy_modul.Np{ nazwa = "Szablon", przedmiotowa = "tak", kanoniczna = "tak", }; ---- Zwraca wartość: "Template talk": local nazwa_przestrzeni_dyskusji_1 = nazwy_modul.Np{ nazwa = "Dyskusja szablonu", dyskusja = "tak", kanoniczna = "tak", }; -- Gdy nazwą przestrzeni jest nazwa kanoniczna: ---- Zwraca wartość: Template": local nazwa_przestrzeni_przedmotowej_2 = nazwy_modul.Np{ nazwa = "Template", przedmiotowa = "tak", kanoniczna = "tak", }; ---- Zwraca wartość: "Template talk": local nazwa_przestrzeni_dyskusji_2 = nazwy_modul.Np{ nazwa = "Template talk", dyskusja = "tak", kanoniczna = "tak", }; -- Gdy przestrzeń nazw jest w postaci numeru id: ---- Zwraca wartość: ""Template": local nazwa_przestrzeni_przedmotowej_3 = nazwy_modul.Np{ nazwa = 10, przedmiotowa = "tak", kanoniczna = "tak", }; ---- Zwraca wartość: "Template talk": local nazwa_przestrzeni_dyskusji_3 = nazwy_modul.Np{ nazwa = 11, dyskusja = "tak", kanoniczna = "tak", }; </syntaxhighlight> ====== Nazwy przestrzeni z myślnikami dolnymi ====== Gdy używamy przestrzeni nazw, czy to w postaci kanonicznej, czy niekanonicznej, ze spacjami, to spacje są w nim zamieniane na dolne myślniki. Jeżeli parametr zawiera spacje lub dolne myślniki na końcach nazwy, to ona jest trimowana, wewnątrz, wtedy powtórzone spacje, lub myślniki dolne, są zamieniane na jeden dolny myślnik, jeżeli zamieniamy nazwę niekanoniczną na niekanoniczną, kanoniczną na kanoniczną. Gdy tak nie jest, tzn. gdy zamieniamy kanoniczną na niekanoniczną, niekanoniczną na kanoniczną, to wtedy jest podobnie. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Dyskusja_szablonu": local nazwa_przestrzeni_1 = nazwy_modul.Np{ nazwa = "Dyskusja szablonu", ["z myślnikami dolnymi"] = "tak", }; ---- Zwraca wartość: "Dyskusja_szablonu": local nazwa_przestrzeni_2 = nazwy_modul.Np{ nazwa = "Template talk", ["z myślnikami dolnymi"] = "tak", }; ---- Zwraca wartość: "Template_talk";: local nazwa_przestrzeni_3 = nazwy_modul.Np{ nazwa = "Dyskusja szablonu", kanoniczna = "tak", ["z myślnikami dolnymi"] = "tak", }; ---- Zwraca wartość: "Template_talk": local nazwa_przestrzeni_4 = nazwy_modul.Np{ nazwa = "Template talk", kanoniczna = "tak", ["z myślnikami dolnymi"] = "tak", }; </syntaxhighlight> ====== Nazwy wyświetlane przestrzeni nazw ====== Gdy nazwą przestrzeni nazw jest nazwa o charakterze niepustym, to przy parametrze {{Code|wyświetlana {{=}} "tak"}}, jest zamieniana ona na tą samą nazwę, gdy ona jest pusta, to jest zamieniana na szereg: {{Code|(główna)}} bez parametru {{Code|kanoniczna}}, a z tym parametrem na {{Code|(main)}}. Przykłady jak jest, jest powiedziane: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_1 = nazwy_modul.Np{ nazwa = "Szablon", wyświetlana = "", }; ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_2 = nazwy_modul.Np{ nazwa = "Szablon", wyświetlana = "tak", }; ---- Zwraca wartość: "": local nazwa_przestrzeni_3 = nazwy_modul.Np{ nazwa = "", wyświetlana = "", }; ---- Zwraca wartość: "(główna)": local nazwa_przestrzeni_4 = nazwy_modul.Np{ nazwa = "", wyświetlana = "tak", }; ---- Zwraca wartość: "(main)": local nazwa_przestrzeni_5 = nazwy_modul.Np{ nazwa = "", kanoniczna = "tak", wyświetlana = " tak", }; </syntaxhighlight> Na podstawie ramki powyżej w przestrzeniach nazw wyświetlanych dowiadujemy się, że jedyna różnica, w nazwach wyświetlanych lub nie, jest dla przestrzeni głównej, czyli dla przestrzeni nazw, której nazwa przestrzeni jest ciągiem pustym. ====== Wersja funkcji z wyświetlaną nazwą przestrzeni nazw z linkiem opisującej tą przestrzeń ====== Nazwę przestrzeni nazw zamieniamy na link z opisem, co robi dana przestrzeń nazw, z nazwą wyświetlaną niekanoniczną, bez parametru {{Code|kanoniczna}}, lub z tym,wtedy nazwę wyświetlaną jest kanoniczna. Gdy przestrzeń nazw jest główna, to wtedy nazwą linku jest {{Code|(główna)}} ({{Code|(main)}} z parametrem {{Code|kanoniczna}}). <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local nazwa_przestrzeni_nazw_1 = nazwy_modul.Np{ nazwa = "Szablon", link = "tak", }; local nazwa_przestrzeni_nazw_2 = nazwy_modul.Np{ nazwa = "Szablon", link = "tak", kanoniczna = "tak", }; local nazwa_przestrzeni_nazw_3 = nazwy_modul.Np{ nazwa = "", link = "tak", }; local nazwa_przestrzeni_nazw_4 = nazwy_modul.Np{ nazwa = "", link = "tak", kanoniczna = "tak", }; </syntaxhighlight> Przykłady funkcji w wyniku są w przykładach szablonowych: # {{Code|{{s|Np|nazwa{{=}}Szablon|link{{=}}tak}}}} → {{Tt|{{Np|nazwa=Szablon|link=tak}}}} # {{Code|{{s|Np|nazwa{{=}}Szablon|link{{=}}tak|kanoniczna{{=}}tak}}}} → {{Tt|{{Np|nazwa=Szablon|link=tak|kanoniczna=tak}}}} # {{Code|{{s|Np|nazwa{{=}}|link{{=}}tak}}}} → {{Tt|{{Np|nazwa=|link=tak}}}} # {{Code|{{s|Np|nazwa{{=}}|link{{=}}tak|kanoniczna{{=}}tak}}}} → {{Tt|{{Np|nazwa=|link=tak|kanoniczna=tak}}}} ====== Uzyskiwanie numeru {{Code|id}} danej przestrzeni nazw ====== Gdy chcemy uzyskać numer identyfikatora przestrzeni nazw, czy to z użyciem parametru {{Code|kanoniczna}}, czy nie, wtedy ten parametr jest w tym przypadku ignorowany, przy parametrze {{Code|id {{=}} "tak"}} na jej odpowiednik w postaci numeru, który charakteryzuje przestrzenie przedmiotowe i dyskusji, inna jest dla tych dwóch typów przestrzeni. Dla przestrzeni przedmiotowej {{Code|id}} jest parzyste, a dla dyskusji nieparzyste. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Uzyskany numer id nazwy przestrzeni nazw jest 10: local id_1 = nazwy_modul.Np{ nazwa = "Szablon", id = "tak", }; ---- Uzyskany numer id nazwy przestrzeni nazw jest 10: local id_2 = nazwy_modul.Np{ nazwa = "Szablon", kanoniczna = "tak", id = "tak", }; ---- Uzyskany numer id nazwy przestrzeni nazw jest 11: local id_3 = nazwy_modul.Np{ nazwa = "Dyskusja szablonu", id = "tak", }; ---- Uzyskany numer id nazwy przestrzeni nazw jest 11: local id_4 = nazwy_modul.Np{ nazwa = "Dyskusja szablonu", kanoniczna = "tak", id = "tak", }; </syntaxhighlight> ====== Uzyskiwanie nazwy projektu nazwy przedmiotowej i jej dyskusji, z kanonicznej lub nie, przestrzeni nazw ====== Gdy używamy przestrzeni nazw {{Np|Wikibooks|link=tak}} lub {{Np|Wikibooks|link=tak|dyskusja=tak}}, to je można tłumaczyć na je wersje czysto kanoniczne, tzn.: {{Np|Wikibooks|link=tak}} tłumaczymy na {{Np|Wikibooks|link=tak|nazwij projektem=tak}}, a {{Np|Wikibooks|link=tak|dyskusja=tak}} na {{Np|Wikibooks|link=tak|dyskusja=tak|nazwij dyskusją projektu=tak}}, gdy translacja jest na nazwę polską niekanoniczną, a gdy użyjemy parametru {{Code|kanoniczna}}, wtedy sytuacja jest inna: {{Np|Wikibooks|link=tak|kanoniczna=tak}} tłumaczymy na {{Np|Wikibooks|link=tak|nazwij projektem=tak|kanoniczna=tak}}, a {{Np|Wikibooks|link=tak|dyskusja=tak|kanoniczna=tak}} na {{Np|Wikibooks|link=tak|dyskusja=tak|nazwij dyskusją projektu=tak|kanoniczna=tak}}. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Projekt": local nazwa_przestrzeni_nazw_1 = nazwy_modul.Np{ nazwa = "Wikibooks", ["nazwij projektem"] = "tak", }; ---- Zwraca wartość: "Project": local nazwa_przestrzeni_nazw_2 = nazwy_modul.Np{ nazwa = "Wikibooks", ["nazwij projektem"] = "tak", kanoniczna = "tak", }; ---- Zwraca wartość: "Dyskusja projektu": local nazwa_przestrzeni_nazw_3 = nazwy_modul.Np{ nazwa = "Wikibooks", ["nazwij dyskusją projektu"] = "tak", dyskusja = "tak", }; ---- Zwraca wartość: "Project talk": local nazwa_przestrzeni_nazw_4 = nazwy_modul.Np{ nazwa = "Wikibooks", ["nazwij dyskusją projektu"] = "tak", kanoniczna = "tak", }; </syntaxhighlight> ====== Sprawdzanie, czy dana przestrzeń jest poprawnie podane, czy istnieje ====== Gdy używamy przestrzeni nieistniejącej bez parametru {{Code|istnieje {{=}} "tak" }}, wtedy na wyjściu otrzymamy to samo, tylko w wersji sformatowanej, a gdy użyjemy, wtedy pojawia tam się napis {{Code|(błąd)}}. Gdy parametrem jest znana funkcji przestrzeń nazw, to nie uzyskujemy błędu, tylko przepisaną sformatowaną nazwę. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_nazw_1 = nazwy_modul.Np{ nazwa = "Szablon", istnieje = "tak", }; ---- Zwraca wartość: "Moja przestrzeń": local nazwa_przestrzeni_nazw_2 = nazwy_modul.Np{ nazwa = "Moja przestrzeń", istnieje = "", }; ---- Zwraca wartość: "(błąd)": local nazwa_przestrzeni_nazw_3 = nazwy_modul.Np{ nazwa = "Moja przestrzeń", istnieje = "tak", }; </syntaxhighlight> ====== Łatwe sprawdzanie istnienia danej przestrzeni nazw ====== Gdy oprócz parametru {{Code|istnieje {{=}} "tak"}}, użyjemy {{Code|["wynik błędu nietekstowy"] {{=}} "tak"}}, wtedy dla nieznanej przestrzeni uzyskujemy wartość w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, czyli: {{Code|nil}}, a w wikikodzie natomiast uzyskujemy wartość pustą, co pomaga w sprawdzeniu, czy dana przestrzeń istnieje, ale dodatkowo trzeba użyć parametru {{Code|["wyświetlana"] {{=}} "tak"}}, by nie pomylić parametru błędu z przestrzenią główną, wtedy ta przestrzeń ma nazwę niepustą przy tych parametrach, bo wtedy mamy nazwę niekanoniczną {{Code|(główna)}}, kanoniczną, przy specjalnym parametrze, czyli: {{Code|(main)}}, wtedy możemy użyć parsera {{Code|{{s|#if:coś|wtedy|przeciwnie}}}}. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_nazw_1 = nazwy_modul.Np{ nazwa = "Szablon", istnieje = "tak", ["wynik błędu nietekstowy"] = "tak", }; ---- Zwraca wartość: "Moja przestrzeń": local nazwa_przestrzeni_nazw_2 = nazwy_modul.Np{ nazwa = "Moja przestrzeń", istnieje = "", ["wynik błędu nietekstowy"] = "tak", }; ---- Zwraca wartość: nil: local nazwa_przestrzeni_nazw_3 = nazwy_modul.Np{ nazwa = "Moja przestrzeń", istnieje = "tak", ["wynik błędu nietekstowy"] = "tak", }; </syntaxhighlight> ====== Uzyskiwanie uchwytu danej przestrzeni nazw analogicznie do funkcji {{LzLua|mw.site.namespaces}} ====== Uchwyt niskopoziomowy do danej przestrzeni nazw można uzyskać przy pomocy kodu, uzyskujemy dla tej tablicy przestrzennej, która jest połączona z metatabelką, dzięki której możemy podawać przestrzenie nazw w wersji niezależnie jakimi literami, z dowolną kliczbą odstępów, nawet zapisana dolnymi myślnikami: <syntaxhighlight lang="lua"> local uchwyt_1 = mw.site.namespaces["Szablon"]; local uchwyt_2 = mw.site.namespaces["Template"]; local uchwyt_3 = mw.site.namespaces[10]; </syntaxhighlight> Funkcja powyżej ignoruje wielkość liter w przestrzeni nazw oraz powtórzone odstępy zrealizowane za pomocą spacji lub dolnych myślników. To samo, ale wysokopoziomowe, można utworzyć przy pomocy parametru: {{Code|uchwyt}}, wtedy szablon z rzuci odwołanie do tej tabeli, ale nie zawsze tak jest, czasami, gdy jakieś przestrzenie nie istnieją na polskim {{NS|w=tak|l=tak|pk=mj}}, wtedy odwołujemy się do jej wersji pseudo tej tabeli: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local uchwyt_1 = nazwy_modul.Np{ nazwa = "Szablon", uchwyt = "tak", }; local uchwyt_2 = nazwy_modul.Np{ nazwa = "Template", uchwyt = "tak", }; local uchwyt_3 = nazwy_modul.Np{ nazwa = 10, uchwyt = "tak", }; </syntaxhighlight> Funkcja {{Code|nazwy_modul.Np}} jest bardziej ogólniejsza niż {{LzLua|mw.site.namespaces}}, ponieważ uwzględnia większą liczbę nazw przestrzeni nazw, bo ona uwzględnia nieznane przestrzenie i znane o nieznanych nazwach, i dlatego należy stosować tę funkcję, a nie dedykowaną tabelę z połączoną z metatabelką za pomocą funkcji {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. === {{Code|m.NpDane}} === ==== Odpowiednik szablonowy ==== Odpowiednik szablonowy jest pod nazwą {{s|NpDane}}. Jego parametry są podobne do jego wersji bibliotecznej. Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce. * Szablon {{s|NpDane}} korzysta z funkcji bibliotecznej {{m|Nazwy|NpDane}}, więc parametry obu są wręcz takie same, a nawet podobne. Chociaż ta sama nazwa funkcji w ramce i kodzie {{lpg|Lua}}, to używanie ich nie jest dokładnie takie samo, funkcja biblioteczna nie potrzebuje parametru {{Parametr|wyspecjalizowana|tak}}, a ramka już tak, a szablon {{s|NpDane}}, który korzysta z tej ramki, to nieobecność, lub obecność z wartością pustą, tego parametru powoduje, że przyjmowane są parametry rodzica, a nie dziecka, które wymagają jego niepustość. ==== Funkcja biblioteczna ==== Szablon służy przede wszystkim do tłumaczenia angielskich nazw przestrzeni nazw na ich wersję w jakimś języku i operacji odwrotnej, a także numer przestrzeni nazw na jej nazwę w nim angielską lub w jakimś języku, lub odwrotnie, umożliwia też na przetłumaczenie nazwy przestrzeni nazw lub identyfikatora przestrzeni na jej nazwę polską, jeżeli istnieje. Funkcja {{m|Nazwy|NpDane}} przyjmuje te same parametry, co {{m|Nazwy|Np}}, oprócz wywołania ramkowego: {{Code|uchwyt}} (która w tej funkcji w sposób inny jest zdefiniowana, nie jak w funkcji: {{m|Nazwy|Np}}), jak oba, którego tutaj w nim nie ma, a jako zwykła funkcja biblioteczna może przyjmować ten parametr. Te zmienne działają podobnie w obu procedurach, z tą różnicą, że mamy inny zestaw nazw przestrzeni nazw (czasami bez numerów {{Code|id}} - identyfikatorów tych obsługiwanych przestrzeni nazw, a te podstawowe one je mają, jeżeli da się je powiązać z pierwszą funkcją w drugiej, jedynie w takim przypadku one występują) i można też użyć parametrów dodatkowych, które są niedostępne w pierwszej funkcji, a w drugiej już tak. Dodatkowo on przyjmuje argumenty: {{OpisParametrów | 1 = Adres kodowy projektu siostrzanego lub lokalnego polskiego: {{Code|Wikibooks}}:|nagłówek1=tak | 2 = {{Code|klucz projektu}} | _2 = Kody języka i projektu podana w jednej zmiennej oddzielone od siebie dwukropkami, może być dowolna liczba tych kodów. | 3 = {{Code|kod projektu}} | _3 = Kod projektu danego wiki. | 4 = {{Code|kod języka}} | _4 = Kod języka danego wiki. | 5 = {{Code|po polsku}} |_5 = Tłumaczy nazwę kanoniczną danej przestrzeni nazw na jej wersję polską, tzn. na język polski, a jeżeli jej wersja polska nie istnieje, to pisze jej wersję w języku angielskim, czyli w postaci nazwy kanonicznej. | 6 = {{Code|awaryjnie}} | _6 = Za pomocą projektu {{NS|l=tak|k=d}} tłumaczy daną nazwę przestrzeni nazw w jednym języku (jej nazwę kanoniczną jakieś przestrzeni nazw) na drugi, gdy wartość jest pusta, to tłumaczy na jej nazwę kanoniczną, jeżeli, przy tym parametrze lub bez, jej wersja w innym danym języku nie istnieje zdefiniowana w module {{m|Nazwy/przestrzenie}}. | 7 = Parametry: {{Code|nazwij projektem}} i {{Code|nazwij dyskusją projektu}}, używa się tak samo jak dla funkcji: {{m|Nazwy|Np}}, tylko z różnicą, że w funkcji: {{m|Nazwy|NpDane}} musimy skorzystać koniecznie z parametru: {{Code|kanoniczna}}, z wartością niepustą, a wtedy wydrukowane wartości są w postaci wersji kanonicznej w języku angielskim, tak jak z ostatnim szablonem.|nagłówek7=tak }} ===== Używanie kluczy projektu, kodów projektu i kodów języka ===== Kody nazw piszemy, jak zwykle, z małej litery, co jest zalecane, ale można je pisać z liter o dowolnej wielkości. ====== Użycie różnych kodów i ich równoważność ====== Kody projektu i języka możemy pisać ze względu na dwa sposoby, w zależności jakich zmiennych używamy, możemy pisać tzw. grupę tych kodów w jednej zmiennej, wtedy się liczy ostateczny adres do danego projektu w jakieś wersji językowej, tylko jeden, a nie n-wersji danego języka i m-wersji danego projektu, czyli: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local wynik = nazwy_modul.NpDane{ ..., ["klucz projektu"] = "en:de:w:ru:en:q:pt", ... }; </syntaxhighlight> * Najważniejsze są kody projektu końcowe, podobnie ma się sprawa z kodami języków, tutaj kodami projektów są: {{Code|w}} ({{NS|l=tak|k=w}}) i {{Code|q}} ({{NS|l=tak|k=q}}), a kodami języków są: {{Code|en}} ({{lpg|{{#invoke:lang|hasło|en}}}}), {{Code|de}} ({{lpg|{{#invoke:lang|hasło|de}}}}), {{Code|ru}} ({{lpg|{{#invoke:lang|hasło|ru}}}}), {{Code|en}} ({{lpg|{{#invoke:lang|hasło|en}}}}) i {{Code|pt}} ({{lpg|{{#invoke:lang|hasło|pt}}}}), czy końcowy kod projektu jest: {{Code|q}} ({{NS|l=tak|k=q}}) i kod języka {{Code|pt}} ({{lpg|{{#invoke:lang|hasło|pt}}}}). W powyższym przykładzie napisaliśmy mnóstwo kodów w postaci jednej zmiennej, to jest równoważne zapisowi, czyli ostatecznej wersji wspomnianej powyższego zapisu, też zapisaną za pomocą tej samej zmiennej: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local wynik_1 = nazwy_modul.NpDane{ ..., ["klucz projektu"] = "pt:q", ... }; local wynik_2 = nazwy_modul.NpDane{ ..., ["klucz projektu"] = "q:pt", ... }; </syntaxhighlight> Powyższy wynik rozpisujemy na dwie zmienne, w których podajemy tylko pojedyncze kody, a nie grupy, więc widziemy, ża zamiast podawania jednego parametru z interwiki, to możemy to rozbić na dwa parametry kodu projektu i języka, a nie używać to w jednej zmiennej, należy pamiętać, że w tych kodach, może być jedno interwiki, specjalnie dla projektu lub języka, do którego dana zmienna jest przystosowana: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local wynik = nazwy_modul.NpDane{ ..., ["kod projektu"] = "q", ["kod języka"] = "pt", ... }; </syntaxhighlight> ====== Nazwy wyświetlane przy użyciu tych kodów dla przestrzeni głównej ====== Nazwy bez użycia zmiennej powodujące wyświetlanie nazwy przestrzeni nazw '''głównej''' na różnych projektach w postaci nieprzetłumaczonej na język polski, wtedy uzyskujemy niezależnie od projektu wartość pustą, bo takie jest przedstawienie wartości niewyświetlanej przestrzeni głównej na każdym projekcie obsługujący przestrzenie nazw, czyli: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość równą ciągowi pustemu: "": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "", ["klucz projektu"] = "commons", }; ---- Zwraca wartość równą ciągowi pustemu: "": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "", ["kod projektu"] = "commons", }; </syntaxhighlight> A przy użyciu identyfikatora przestrzeni nazw przestrzeni głównej, wtedy uzyskujemy na wyjściu to samo, co powyżej, czyli wartość pustą, bo wartość {{Code|0}} jest odpowiednikiem przestrzeni głównej, czyli poniższe przykłady są odpowiedniami tych powyższych, czyli te dwa przykład, tak można powiedzieć, że to samo robią: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość równą ciągowi pustemu: "": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = 0, ["klucz projektu"] = "commons", }; ---- Zwraca wartość równą ciągowi pustemu: "": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = 0, ["kod projektu"] = "commons", }; </syntaxhighlight> 0 Przy użyciu zmiennej generującej wyświetlanie w postaci znaków o charakterze niepustej, wtedy jeżeli nie ma wartości kanonicznej dla danego języka projektu, to wyswietlana jest wartość {{Np|(main)|link=tak|kanoniczna=tak}}, a dla polskigo projektu {{Np|(main)|link=tak}}, a dla innych języków jest nazwa charakterystyczna dla danego języka pod warunkiem, jeżeli doda się tego obsługę, więc tego przykłady przy użyciu zmiennej {{Code|["wyświetlana"] {{=}} "tak"}}, więc: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość nazwy przestrzeni głównej: "(main)": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "", ["klucz projektu"] = "commons", ["wyświetlana"] = "tak", }; ---- Zwraca wartość nazwy przestrzeni głównej: "(main)": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "", ["kod projektu"] = "commons", ["wyświetlana"] = "tak", }; </syntaxhighlight> Przy użyciu identyfikatora przestrzeni nazw przestrzeni głównej, w takim przypadku uzyskujemy to samo co powyżej, tylko jest inaczej, oznaczana jest wtedy przestrzeń główna, dla tego samego projektu siostrzanego, w wersji charakterystycznej dla danego języka, tutaj dla angielskiego: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość nazwy przestrzeni głównej: "(main)": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = 0, ["klucz projektu"] = "commons", ["wyświetlana"] = "tak", }; ---- Zwraca wartość nazwy przestrzeni głównej: "(main)": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = 0, ["kod projektu"] = "commons", ["wyświetlana"] = "tak", }; </syntaxhighlight> ====== Nazwy wyświetlane przy użyciu tych kodów przetłumaczone je na język polski dla przestrzeni głównej ====== Z wyświetlaniem na ekranie przestrzeni nazw charakteryzujące się ciągiem niepustym mamy podobne wyniki, jak powyżej bez parametry {{Code|["wyświetlana"] {{=}} "tak"}}, tylko nazwa wyświetlana przestrzeni nazw jest po polsku (odpowiednia nazwa w języku polskim), a nie po angielsku (w języku danego projektu): Przy użyciu zmiennej generującej wyświetlanie w postaci znaków o charakterze niepustej, nazw przestrzeni nazw mający nazwy puste, ale zamienione na nazwy wyświetlane, ale w postaci języka polskiego, używając parametru {{Code|["po polsku"] {{=}} "tak"}}: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość nazwy przestrzeni głównej: "(główna)": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "", ["klucz projektu"] = "commons", ["wyświetlana"] = "tak", ["po polsku"] = "tak", }; ---- Zwraca wartość nazwy przestrzeni głównej: "(główna)": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "", ["kod projektu"] = "commons", ["wyświetlana"] = "tak", ["po polsku"] = "tak", }; </syntaxhighlight> Przy użyciu identyfikatora przestrzeni nazw głównej, czyli dla tej samej przestrzeni nazw, co powyżej, tylko ona jest inaczej oznaczana, to możemy zrobić to samo, co powyżej, tylko nazwa główna przestrzeni nazw jest inaczej zapisana, w postaci numerycznej, wtedy otrzymamy wynik taki sam, jak w powyższym przykładzie, bo w obu używaliśmy takiej samej przestrzeni, tylko różnie przepisaną: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość nazwy przestrzeni głównej: "(główna)": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = 0, ["klucz projektu"] = "commons", ["wyświetlana"] = "tak", ["po polsku"] = "tak", }; ---- Zwraca wartość nazwy przestrzeni głównej: "(główna)": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = 0, ["kod projektu"] = "commons", ["wyświetlana"] = "tak", ["po polsku"] = "tak", }; </syntaxhighlight> ====== Nazwy wyświetlane przy użyciu tych kodów dla przestrzeni innej niż główna ====== Nazwy bez użycia zmiennej powodujące wyświetlanie nazwy przestrzeni nazw '''niegłównej''' na różnych projektach w postaci nieprzetłumaczonej na język polski, tylko w wersji charakterystucznej dla języka danego projektu używaną w odwołaniu: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość równą ciągowi niepustemu: "Template": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "Template", ["klucz projektu"] = "commons", }; ---- Zwraca wartość równą ciągowi niepustemu: "Template": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "Template", ["kod projektu"] = "commons", }; </syntaxhighlight> A przy zamianie tej przestrzeni nazw w powyższym przykładzie na numer - identyfikator nazw, czyli {{Code|id}}, to identyfikator przestrzeni nazw, innej niż główna, z jej wersji nazwowej, otrzymamy wynik w postaci nazwy niepustej, bo to nie jest przestrzeń główna, oznaczana zerowy tym identyfikatorem, czyli w postaci tej liczby: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość równą ciągowi niepustemu: "Template": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = 10, ["klucz projektu"] = "commons", }; ---- Zwraca wartość równą ciągowi niepustemu: "Template": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = 10, ["kod projektu"] = "commons", }; </syntaxhighlight> Przy użyciu zmiennej generującej wyświetlanie w postaci znaków, o charakterze niepustości, przy użyciu tego parametru, otrzymujemy wynik, jak powyżej, bo nazwa wyświetlana przestrzeni jest od razu niepusta, bo przestrzeni nazw mają wartość niepustą, więc nie trzeba ich uznawać, że są inne: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość równą nazwie przestrzeni niegłównej: "Template": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "Template", ["klucz projektu"] = "commons", ["wyświetlana"] = "tak", }; ---- Zwraca wartość równą nazwie przestrzeni niegłównej: "Template": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "Template", ["kod projektu"] = "commons", ["wyświetlana"] = "tak", }; </syntaxhighlight> A gdy parametr {{Code|nazwa}} przyjmuje wartość liczbową w postaci identyfikatora {{Code|id}}, innej niż dla przestrzeni głównej, ale zapisaną dla tych samych przestrzeni nazw, jak powyżej, co czyni, że tutaj jest też podobnie, otzrymamy te same wartości, tylko jest inna reprezentacja parametrów wchodzących do funkcji, jak powyżej: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość równą nazwie przestrzeni niegłównej: "Template": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = 10, ["klucz projektu"] = "commons", ["wyświetlana"] = "tak", }; ---- Zwraca wartość równą nazwie przestrzeni niegłównej: "Template": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = 10, ["kod projektu"] = "commons", ["wyświetlana"] = "tak", }; </syntaxhighlight> Widzimy, jedynie dla przestrzeni niepustej, że użycie tego parametru, według przykładów powyżej, jest opcjonalne, a nawet zbędne, bo ten parametr w tym przypadku nic nie zmienia, zmienia tylko dla przestrzeni głównej, którego ciąg charakteryzujący tą przestrzeń jest pusty, a jej wersja wyświetlana posiada za to ciąg niepusty, o jej wersji kanonicznej {{Code|{{Np|(main)|link=tak|kanoniczna=tak}}}}, a w wersji polskiej {{Code|{{Np|(main)|link=tak}}}}, te nazwy można pomiędzy sobą tłumaczyć za pomocą funkcji {{m|Nazwy|NpDane}} lub szablonu {{s|NpDane}}. ====== Nazwy wyświetlane przy użyciu tych kodów przetłumaczone je na język polski dla przestrzeni innej niż główna ====== Z wyświetlaniem na ekranie przestrzeni nazw charakteryzujące ciągiem niepustym mamy podobne wyniki jak powyżej bez parametru {{Code|["wyświetlana"] {{=}} "tak"}}: Przy użyciu zmiennej generującej wyświetlanie w postaci znaków o charakterze niepustej przetłumaczonej na język polski, używając parametrów w postaci pewnych nazw niepusstych, dla projektów innych niż wq języku polskim, ale te przestrzenie nazw tłumaczymyna ich odpowiedniki polskie, jakie istnieją, na projektach właśnie, że polskich: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość równą nazwie przestrzeni niegłównej: "Szablon": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "Template", ["klucz projektu"] = "commons", ["po polsku"] = "tak", }; ---- Zwraca wartość równą nazwie przestrzeni niegłównej: "Szablon": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "Template", ["kod projektu"] = "commons", ["po polsku"] = "tak", }; </syntaxhighlight> Albo przy użyciu numeru {{Code|id}} (identyfikatora przestrzeni nazw), wtedy właśnie robimy to samo, co powyżej, tylko jest inna reprezentacja parametrów, ale ta sama przestrzeń, więc uzyskujemy te same wyniki, czyli o tej samej wartości, mimo, że wizulanie,a by inne parametry: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość równą nazwie przestrzeni niegłównej: "Szablon": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = 10, ["klucz projektu"] = "commons", ["po polsku"] = "tak", }; ---- Zwraca wartość równą nazwie przestrzeni niegłównej: "Szablon": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = 10, ["kod projektu"] = "commons", ["po polsku"] = "tak", }; </syntaxhighlight> Przy użyciu zmiennej generującej wyświetlanie, użzywając parametru wspoianego powyżej, w postaci znaków o charakterze niepustej przy użyciu tego parametru, co sugeruje, że ten argiment nic nie zmienia, ale jedynie wyświetla się to samo, co bez tego parametru: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość równą nazwie przestrzeni niegłównej: "Szablon": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "Template", ["klucz projektu"] = "commons", ["wyświetlana"] = "tak", ["po polsku"] = "tak", }; ---- Zwraca wartość równą nazwie przestrzeni niegłównej: "Szablon": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "Template", ["kod projektu"] = "commons", ["wyświetlana"] = "tak", ["po polsku"] = "tak", }; </syntaxhighlight> A tutaj przy użyciu identyfikatora przestrzeni nazw przestrzeni nazw niegłównej, czyli przestrzeni nazw charakteryzującej się jej wersją niewyświetlaną niepustą, z tymi samymi parametrami, co powyżej, z tymi samymi wartościami, tylko jest inna reprezentacja przestrzeni nazw: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość równą nazwie przestrzeni niegłównej: "Szablon": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = 10, ["klucz projektu"] = "commons", ["wyświetlana"] = "tak", ["po polsku"] = "tak", }; ---- Zwraca wartość równą nazwie przestrzeni niegłównej: "Szablon": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = 10, ["kod projektu"] = "commons", ["wyświetlana"] = "tak", ["po polsku"] = "tak", }; </syntaxhighlight> Widzimy, jedynie dla tej przestrzeni, że użycie wspomnianego tego parametru jest opcjonalne, bo nic w tym przypadki nie zmienia, bo przestrzeń nazw nie jest pusta, lub nie jest reprezentowana inaczej, niż przez liczbę {{Code|0}}. ===== Tłumaczenie nazw przestrzeni nazw z jednego języka na drugi ===== ====== Tłumaczenie nazw obcojęzycznych nazw przestrzeni nazw na jej wersję polską, tzn. jej język polski, i na język angielski, tzn. jej wersje angielską w postaci nazwy kanonicznej, albo identyfikator przestrzeni nazw lub operację przeciwną ====== Tłumaczenie na nazwę kanoniczną w języku angielskim, z nazwy polskiej, czy nazwy w innym języku, tutaj w języku polskim, w jakim ona jest jedynie dostępna, przy użyciu parametru {{Code|kanoniczna {{=}} "tak"}}: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Template": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "Szablon", ["klucz projektu"] = "pl:w", kanoniczna = "tak", }; ---- Zwraca wartość: "Template": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "Szablon", ["kod projektu"] = "w", ["kod języka"] = "pl", kanoniczna = "tak", }; </syntaxhighlight> Tłumaczenie identyfikatora przestrzeni nazw na nazwę kanoniczną, ale przestrzeni nazw są te same, co powyżej, tylko zamiast przestrzeni nazw: "Szablon", mamy to jej idenntyfiator, którym jest liczba: {{Code|10}}, wtedy otrzymamy te same wyniki, co powyżej: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Template": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = 10, ["klucz projektu"] = "pl:w", kanoniczna = "tak", }; ---- Zwraca wartość: "Template": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = 10, ["kod projektu"] = "w", ["kod języka"] = "pl", kanoniczna = "tak", }; </syntaxhighlight> Przypadek odwrotny, do poprzednich, dla tego samego projektu, gdy nie używamy tego parametru, ale przestrzenie nazw są tym razem po angielsku, jako nazwy kanoniczne, które są zamieniane na jej wersją charakterystyczną dla danego projektu, tutaj polską: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "Template", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "Template", ["kod projektu"] = "w", ["kod języka"] = "pl", }; </syntaxhighlight> Identyfikator przestrzeni nazw tłumaczymy na jego nazwę polską - ewentualnie, na wersję języka projektu, i dlatego tutaj używamy języka polskiego, ponieważ mamy do czynienia z projektem polskojęzycznym, bo kod języka projektu wskazuje tutaj na ten język: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = 10, ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = 10, ["kod projektu"] = "w", ["kod języka"] = "pl", }; </syntaxhighlight> ====== Tłumaczenie nazw przestrzeni na jej wersję w innych języku w jakikolwiek projekcie ====== Do tłumaczenia używamy parametru {{Code|awaryjnie}}, której użycie w funkcji {{m|Nazwy|NpDane}}, powoduje skorzystanie z bazy danym projektów {{Code|MediaWiki}}, czyli {{Code|{{NS|l=tak|w=tak|k=en:d|jw=tak}}}} (po angielsku), a inaczej {{Code|{{NS|l=tak|w=tak|k=d}}}} (po polsku): * Przy użyciu nazw przestrzeni nazw w postaci, nie identyfikatorów, nazwanej łańcuchem znaków,możemy daną przestrzeń przetłomaczyć na dany język, nie używając przy tym żadnych stron: {{Code|.json}}, w podstronach modułu {{Code|{{m|Nazwy/}}}}: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "Kategorie", ["klucz projektu"] = "de:w", awaryjnie = "tak", kanoniczna = "tak", }; local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "Category", ["klucz projektu"] = "de:w", awaryjnie = "tak", }; local nazwa_przestrzeni_nazw_3 = nazwy_modul.NpDane{ nazwa = "Категория", ["klucz projektu"] = "ru:w", awaryjnie = "tak", kanoniczna = "tak", }; local nazwa_przestrzeni_nazw_4 = nazwy_modul.NpDane{ nazwa = "Category", ["klucz projektu"] = "ru:w", awaryjnie = "tak", }; </syntaxhighlight> * Jako z ich wersją numeryczną, czyli w postaci identyfikatorów, nazwanej w postaci pewnego numeru, ale przestrzenie nazw są te same, co powyżej, tylko inaczej zapisane, a inne parametry są takie same, czyli z czterech przykładów generują się jedynie dwa, ale wyniki są te same: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = 14, ["klucz projektu"] = "de:w", awaryjnie = "tak", }; local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa 14, ["klucz projektu"] = "ru:w", awaryjnie = "tak", }; </syntaxhighlight> Przykłady tłumaczenia z jednej wersji językowej w danym języku na angielski (wersję kanoniczną) i odwrotnie # {{Code|{{s|NpDane|Kategorie|klucz projektu{{=}}de:w|awaryjnie{{=}}tak|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|Kategorie|klucz projektu=de:w|awaryjnie=tak|kanoniczna=tak}}}} # {{Code|{{s|NpDane|Category|klucz projektu{{=}}de:w|awaryjnie{{=}}tak}}}} → {{Tt|{{NpDane|Category|klucz projektu=de:w|awaryjnie=tak}}}} # {{Code|{{s|NpDane|Категория|klucz projektu{{=}}ru:w|awaryjnie{{=}}tak|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|Категория|klucz projektu=ru:w|awaryjnie=tak|kanoniczna=tak}}}} # {{Code|{{s|NpDane|Category|klucz projektu{{=}}ru:w|awaryjnie{{=}}tak}}}} → {{Tt|{{NpDane|Category|klucz projektu=ru:w|awaryjnie=tak}}}} Przykłady przy użyciu identyfikatorów: # {{Code|{{s|NpDane|14|klucz projektu{{=}}de:w|awaryjnie{{=}}tak}}}} → {{Tt|{{NpDane|Category|klucz projektu=de:w|awaryjnie=tak}}}} # {{Code|{{s|NpDane|14|klucz projektu{{=}}ru:w|awaryjnie{{=}}tak}}}} → {{Tt|{{NpDane|Category|klucz projektu=ru:w|awaryjnie=tak}}}} ===== Użycie parametru {{Code|link}} oraz zależność od projektu i języka, wyświetlanie nazw przestrzeni nazw po polsku ===== Przykłady poniżej i niektóre wywołania funkcji {{m|Nazwy|NpDane}} piszemy przy pomocy parametru {{Code|link}}, który posiłkujemy z {{Code|klucz projektu}}, przykładowo z pomożeniem użycia zmiennej {{Code|po polsku}}, ewentualnie z użyciem argumentu {{Code|kanoniczna}}, co powoduje wyświetlanie się linku do pewnej strony naa tym samym projekcie lub innym,a jeśli mamy nazwę kanoniczną, to otrzymamy w linku nazwę linku właśnie że wyświetlaną, np. w postaci: {{Np|(main)|link=tak}}: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "Szablon", link = "tak", ["klucz projektu"] = "pl:w", }; local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "Szablon", link = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; local nazwa_przestrzeni_nazw_3 = nazwy_modul.NpDane{ nazwa = "Template", link = "tak", ["klucz projektu"] = "en:w", ["po polsku"] = "tak", }; ---- Tutaj nazwa przestrzeni zostanie wyświetlona, jako nazwa linku, po angielsku, czyli w wersji kanonicznej local nazwa_przestrzeni_nazw_4 = nazwy_modul.NpDane{ nazwa = "Template", link = "tak", kanoniczna = "tak", ["klucz projektu"] = "en:w", ["po polsku"] = "tak", }; local nazwa_przestrzeni_nazw_5 = nazwy_modul.NpDane{ nazwa = "", link = "tak", ["klucz projektu"] = "en:w", }; local nazwa_przestrzeni_nazw_6 = nazwy_modul.NpDane{ nazwa = "", link = "tak", kanoniczna = "tak", ["klucz projektu"] = "en:w", }; local nazwa_przestrzeni_nazw_7 = nazwy_modul.NpDane{ nazwa = "", link = "tak", ["klucz projektu"] = "en:w", ["po polsku"] = "tak", }; ---- Tutaj nazwa przestrzeni zostanie wyświetlona, jako nazwa linku, po angielsku, czyli w wersji kanonicznej local nazwa_przestrzeni_nazw_8 = nazwy_modul.NpDane{ nazwa = "", link = "tak", kanoniczna = "tak", ["klucz projektu"] = "en:w", ["po polsku"] = "tak", }; </syntaxhighlight> Teraz będziemy, to robili przy użyciu identyfikatorów przestrzeni nazw, który będziemy tłumaczyć na jego wersję charakterystyczną dla danego projektu, nazwę kanoniczną lub na jego odpowiednik polski, ale mamy te same przykłady, co powyżej, bo te same przestrzenie nazw, tylko z tą różnicą, że ona jest inaczej zapisana, więc otrzymamy te same wyniki, więc: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = 10, link = "tak", ["klucz projektu"] = "pl:w", }; local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = 10, link = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; local nazwa_przestrzeni_nazw_3 = nazwy_modul.NpDane{ nazwa = 10, link = "tak", ["klucz projektu"] = "en:w", ["po polsku"] = "tak", }; ---- Tutaj nazwa przestrzeni zostanie wyświetlona, jako nazwa linku, po angielsku, czyli w wersji kanonicznej local nazwa_przestrzeni_nazw_4 = nazwy_modul.NpDane{ nazwa = 10, link = "tak", kanoniczna = "tak", ["klucz projektu"] = "en:w", ["po polsku"] = "tak", }; local nazwa_przestrzeni_nazw_5 = nazwy_modul.NpDane{ nazwa = 0, link = "tak", ["klucz projektu"] = "en:w", }; local nazwa_przestrzeni_nazw_6 = nazwy_modul.NpDane{ nazwa = 0, link = "tak", kanoniczna = "tak", ["klucz projektu"] = "en:w", }; local nazwa_przestrzeni_nazw_7 = nazwy_modul.NpDane{ nazwa = 0, link = "tak", ["klucz projektu"] = "en:w", ["po polsku"] = "tak", }; ---- Tutaj nazwa przestrzeni zostanie wyświetlona, jako nazwa linku, po angielsku, czyli w wersji kanonicznej local nazwa_przestrzeni_nazw_8 = nazwy_modul.NpDane{ nazwa = 0, link = "tak", kanoniczna = "tak", ["klucz projektu"] = "en:w", ["po polsku"] = "tak", }; </syntaxhighlight> ---- Przykłady funkcji w wyniku są: # {{Code|{{s|NpDane|nazwa{{=}}Szablon|link{{=}}tak|klucz projektu{{=}}pl:w}}}} → {{Tt|{{NpDane|nazwa=Szablon|link=tak|klucz projektu=pl:w}}}} # {{Code|{{s|NpDane|nazwa{{=}}Szablon|link{{=}}tak|klucz projektu{{=}}pl:w|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=Szablon|link=tak|klucz projektu=pl:w|kanoniczna=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}|link{{=}}tak|klucz projektu{{=}}pl:w}}}} → {{Tt|{{NpDane|nazwa=|link=tak|klucz projektu=pl:w}}}} # {{Code|{{s|NpDane|nazwa{{=}}|link{{=}}tak|klucz projektu{{=}}pl:w|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=|link=tak|klucz projektu=pl:w|kanoniczna=tak}}}} Gdy parametr {{Code|nazwa}} jest liczbą, odpowiedniki tych samych przykładów, co powyżej, tylko przestrzeń nazw jest w postaci numerycznej: # {{Code|{{s|NpDane|nazwa{{=}}10|link{{=}}tak|klucz projektu{{=}}pl:w}}}} → {{Tt|{{NpDane|nazwa=10|link=tak|klucz projektu=pl:w}}}} # {{Code|{{s|NpDane|nazwa{{=}}10|link{{=}}tak|klucz projektu{{=}}pl:w|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=10|link=tak|klucz projektu=pl:w|kanoniczna=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}0|link{{=}}tak|klucz projektu{{=}}pl:w}}}} → {{Tt|{{NpDane|nazwa=0|link=tak|klucz projektu=pl:w}}}} # {{Code|{{s|NpDane|nazwa{{=}}0|link{{=}}tak|klucz projektu{{=}}pl:w|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=0|link=tak|klucz projektu=pl:w|kanoniczna=tak}}}} ---- ---- Inne przykłady, projektu niepolskiego, ale mającej jego wersje polską: # {{Code|{{s|NpDane|nazwa{{=}}Template|link{{=}}tak|klucz projektu{{=}}en:w|po polsku{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=Template|link=tak|klucz projektu=en:w|po polsku=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}Template|link{{=}}tak|klucz projektu{{=}}en:w|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=Template|link=tak|klucz projektu=en:w|kanoniczna=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}|link{{=}}tak|klucz projektu{{=}}en:w|po polsku{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=|link=tak|klucz projektu=en:w|po polsku=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}|link{{=}}tak|klucz projektu{{=}}en:w|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=|link=tak|klucz projektu=pl:w|kanoniczna=tak}}}} Gdy parametr {{Code|nazwa}} jest liczbą, odpowiedniki przykładów powyższych z innym przedstawieniem przestrzeni nazw: # {{Code|{{s|NpDane|nazwa{{=}}10|link{{=}}tak|klucz projektu{{=}}en:w|po polsku{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=10|link=tak|klucz projektu=en:w|po polsku=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}10|link{{=}}tak|klucz projektu{{=}}en:w|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=10|link=tak|klucz projektu=en:w|kanoniczna=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}0|link{{=}}tak|klucz projektu{{=}}en:w|po polsku{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=0|link=tak|klucz projektu=en:w|po polsku=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}0|link{{=}}tak|klucz projektu{{=}}en:w|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=0|link=tak|klucz projektu=pl:w|kanoniczna=tak}}}} ---- ---- A dla projektu niemającej wersji polskiej, np. tylko wersję angielską: # {{Code|{{s|NpDane|nazwa{{=}}Template|link{{=}}tak|klucz projektu{{=}}commons|po polsku{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=Template|link=tak|klucz projektu=commons|po polsku=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}Template|link{{=}}tak|klucz projektu{{=}}commons|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=Template|link=tak|klucz projektu=commons|kanoniczna=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}|link{{=}}tak|klucz projektu{{=}}commons|po polsku{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=|link=tak|klucz projektu=commons|po polsku=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}|link{{=}}tak|klucz projektu{{=}}commons|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=|link=tak|klucz projektu=commons|kanoniczna=tak}}}} Gdy parametr {{Code|nazwa}} jest liczbą, wtedy mamy te same przykłady, co powyżej, tylko ta sama przestrzeń nazw jest w innej postaci przedstawiona: # {{Code|{{s|NpDane|nazwa{{=}}10|link{{=}}tak|klucz projektu{{=}}commons|po polsku{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=10|link=tak|klucz projektu=commons|po polsku=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}10|link{{=}}tak|klucz projektu{{=}}commons|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=10|link=tak|klucz projektu=commons|kanoniczna=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}0|link{{=}}tak|klucz projektu{{=}}commons|po polsku{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=0|link=tak|klucz projektu=commons|po polsku=tak}}}} # {{Code|{{s|NpDane|nazwa{{=}}0|link{{=}}tak|klucz projektu{{=}}commons|kanoniczna{{=}}tak}}}} → {{Tt|{{NpDane|nazwa=0|link=tak|klucz projektu=commons|kanoniczna=tak}}}} ===== Zamiana przestrzeni nazw przedmiotowej na dyskusji lub przeciwnie, i transformacje tożsame ===== * Używać tu będziemy dodatkowo parametrów: {{Code|przedmiotowa}} - zamiany przestrzeni nazw na przedmiotową, czy: {{Code|dyskusja}} - na dyskusji. Można też przechodzić z tej samej przestrzeni nazw w nią samą, lub do niego skojarzonej, tzn. z przedmiotowej do dyskusji lub odwrotnie, wtedy w tym przypadku otrzymujemy nazwę po polsku, dla poskich projektów, dla projektów w danym języku, na nazwę w danym języku, przykłady: <syntaxhighlight lang="lua"> local nazwy_modul = require("Module:Nazwy"); -- Gdy nazwą przestrzeni jest nazwa niekanoniczna: ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_przedmotowej_1 = nazwy_modul.NpDane{ nazwa = "Dyskusja szablonu", przedmiotowa = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_dyskusji_1 = nazwy_modul.NpDane{ nazwa = "Szablon", dyskusja = "tak", ["klucz projektu"] = "pl:w", }; -- Gdy nazwą przestrzeni jest nazwa kanoniczna ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_przedmotowej_2 = nazwy_modul.NpDane{ nazwa = "Template talk", przedmiotowa = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_dyskusji_2 = nazwy_modul.NpDane{ nazwa = "Template", dyskusja = "tak", ["klucz projektu"] = "pl:w", }; -- Gdy prrzestrzeń nazw jest w postaci jej numeru id ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_przedmotowej_3 = nazwy_modul.NpDane{ nazwa = 11, przedmiotowa = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_dyskusji_3 = nazwy_modul.NpDane{ nazwa = 10, dyskusja = "tak", ["klucz projektu"] = "pl:w", }; </syntaxhighlight> Gdy użyjemy dodatkowo parametr {{Code|kanoniczna}}, wtedy otrzymujemy te nazwy w postaci nazwy w języku angielskim (kanoniczne) tych przestrzeni nazw, są te same przykłady, co powyżej, tylko jest inna wersja językowa w wyniku tej samej otrzymanej przestrzeni nazw: <syntaxhighlight lang="lua"> local nazwy_modul = require("Module:Nazwy"); -- Gdy nazwą przestrzeni jest nazwa niekanoniczna: ---- Zwraca wartość: "Template": local nazwa_przestrzeni_przedmotowej_1 = nazwy_modul.NpDane{ nazwa = "Dyskusja szablonu", przedmiotowa = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Template talk": local nazwa_przestrzeni_dyskusji_1 = nazwy_modul.NpDane{ nazwa = "Szablon", dyskusja = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", -- Gdy nazwą przestrzeni jest nazwa kanoniczna: ---- Zwraca wartość: Template": local nazwa_przestrzeni_przedmotowej_2 = nazwy_modul.NpDane{ nazwa = "Template talk", przedmiotowa = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Template talk": local nazwa_przestrzeni_dyskusji_2 = nazwy_modul.NpDane{ nazwa = "Template", dyskusja = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; -- Gdy przestrzeń nazw jest w postaci jej numeru id: ---- Zwraca wartość: ""Template": local nazwa_przestrzeni_przedmotowej_3 = nazwy_modul.NpDane{ nazwa = 11, przedmiotowa = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Template talk": local nazwa_przestrzeni_dyskusji_3 = nazwy_modul.NpDane{ nazwa = 10, dyskusja = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; </syntaxhighlight> Przejście z tej samej przestrzeni na tą samą możemy uzyskać to wtedy, tzw. przejście tożsamościowe, poprzez tłumaczenie nazw dyskusji na dysusji, i nazw przedmiotowych na przedmiotowe, dla róznych projektów, nie tylko polskich, a tutaj mamy dla języka polskiego, tylko repezentacja językowa może być inna, tutaj jest ta polska (w wersji niekanonicznej) i angielska (w wersji kanonicznej): <syntaxhighlight lang="lua"> local nazwy_modul = require("Module:Nazwy"); -- Gdy nazwą przestrzeni jest nazwa niekanoniczna, gdy w ty przypadku chcemy uzyskać nazwę charakterystyczną dla danego języka danego projektu: ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_przedmotowej_1 = nazwy_modul.NpDane{ nazwa = "Szablon", przedmiotowa = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_dyskusji_1 = nazwy_modul.NpDane{ nazwa = "Dyskusja szablonu", dyskusja = "tak", ["klucz projektu"] = "pl:w", }; -- Gdy nazwą przestrzeni jest nazwą kanoniczną: ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_przedmotowej_2 = nazwy_modul.NpDane{ nazwa = "Template", przedmiotowa = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_dyskusji_2 = nazwy_modul.NpDane{ nazwa = "Template talk", dyskusja = "tak", ["klucz projektu"] = "pl:w", }; -- Gdy przestrzeń nazw jest w postaci jej numeru id: ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_przedmotowej_3 = nazwy_modul.NpDane{ nazwa = 10, przedmiotowa = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Dyskusja szablonu": local nazwa_przestrzeni_dyskusji_3 = nazwy_modul.NpDane{ nazwa = 11, dyskusja = "tak", ["klucz projektu"] = "pl:w", }; </syntaxhighlight> Gdy użyjemy dodatkowo parametr {{Code|kanoniczna}}, uzyskamy nazwę angielską danej przestrzeni nazw, nawet gdy to jest przestrzeń podana w języku polskim, dla polskiego projektu, lub w jezyku charakterystycznym dla danego projektu, jeżeli mamy to w bazie przestrzeni nazw w formie pliku {{Code|.json}}, podane w podstronach modułu {{m|Nazwy/}}, to te nazwy wtedy obsługuje: <syntaxhighlight lang="lua"> local nazwy_modul = require("Module:Nazwy"); -- Gdy nazwą przestrzeni jest nazwą niekanoniczną: ---- Zwraca wartość: "Template": local nazwa_przestrzeni_przedmotowej_1 = nazwy_modul.NpDane{ nazwa = "Szablon", przedmiotowa = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Template talk": local nazwa_przestrzeni_dyskusji_1 = nazwy_modul.NpDane{ nazwa = "Dyskusja szablonu", dyskusja = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; -- Gdy nazwą przestrzeni jest nazwą kanoniczną: ---- Zwraca wartość: Template": local nazwa_przestrzeni_przedmotowej_2 = nazwy_modul.NpDane{ nazwa = "Template", przedmiotowa = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Template talk": local nazwa_przestrzeni_dyskusji_2 = nazwy_modul.NpDane{ nazwa = "Template talk", dyskusja = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; -- Gdy przestrzeń nazw jest w postaci jej numeru id: ---- Zwraca wartość: "Template": local nazwa_przestrzeni_przedmotowej_3 = nazwy_modul.NpDane{ nazwa = 10, przedmiotowa = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", } ---- Zwraca wartość: "Template talk": local nazwa_przestrzeni_dyskusji_3 = nazwy_modul.NpDane{ nazwa = 11, dyskusja = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; </syntaxhighlight> ===== Nazwy przestrzeni z myślnikami dolnymi ===== Jeżeli nazwy danych przestrzeni, niezależnie, czy są w postaci niekanonicznej, czy nie, ale jeżeli w nazwie zawierają spację, to one jako w wyniku zamiast nich będą miały dolny myślnik zamiast spacji, gdy użyjemy parametru: {{Code|["z myślnikami dolnymi"] {{=}} "tak"}}, czyli: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Dyskusja_szablonu": local nazwa_przestrzeni_1 = nazwy_modul.NpDane{ nazwa = "Dyskusja szablonu", ["z myślnikami dolnymi"] = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Dyskusja_szablonu": local nazwa_przestrzeni_2 = nazwy_modul.NpDane{ nazwa = "Template talk", ["z myślnikami dolnymi"] = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Template_talk";: local nazwa_przestrzeni_3 = nazwy_modul.NpDane{ nazwa = "Dyskusja szablonu", kanoniczna = "tak", ["z myślnikami dolnymi"] = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Template_talk": local nazwa_przestrzeni_4 = nazwy_modul.NpDane{ nazwa = "Template talk", kanoniczna = "tak", ["z myślnikami dolnymi"] = "tak", ["klucz projektu"] = "pl:w", }; </syntaxhighlight> ===== Uzyskiwanie kanonicznej nazwy projektu, nazwy przedmiotowej i jej dyskusji, z jej odpowiednika nazwy przestrzeni nazw ===== Dla przestrzeni nazw: {{NpDane|Wikipedia|link=tak|klucz projektu=pl:w}}, jej nazwy projektowej: {{NpDane|Wikipedia|link=tak|kanoniczna=tak|nazwij projektem=tak|klucz projektu=pl:w}} możemy uzyskać, gdy dla funkcji {{m|Nazwy|NpDane}} podamy parametr: {{Code|["nazwij projektem"] {{=}} "tak"}}, dla przestrzeni przedmiotowej lub dyskusji: {{NpDane|Wikipedia talk|link=tak|klucz projektu=pl:w}}, jej nazwy projektowej: {{NpDane|Wikipedia talk|link=tak|kanoniczna=tak|nazwij dyskusją projektu=tak|klucz projektu=pl:w}}, gdy podamy parametr {{Code|["nazwij dyskusją projektu"] {{=}} "tak"}}, czyli: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Wikipedia": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "Wikipedia", ["nazwij projektem"] = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Project": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "Wikipedia", ["nazwij projektem"] = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Project": local nazwa_przestrzeni_nazw_3 = nazwy_modul.NpDane{ nazwa = "Dyskusja Wikipedii", ["nazwij projektem"] = "tak", przedmiotowa = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Dyskusja Wikipedii": local nazwa_przestrzeni_nazw_4 = nazwy_modul.NpDane{ nazwa = "Wikipedia", ["nazwij dyskusją projektu"] = "tak", dyskusja = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Project talk": local nazwa_przestrzeni_nazw_5 = nazwy_modul.NpDane{ nazwa = "Dyskusja Wikipedii", ["nazwij dyskusją projektu"] = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Project talk": local nazwa_przestrzeni_nazw_6 = nazwy_modul.NpDane{ nazwa = "Wikipedia", ["nazwij dyskusją projektu"] = "tak", dyskusja = "tak", kanoniczna = "tak", ["klucz projektu"] = "pl:w", }; </syntaxhighlight> ===== Różne wersje sprawdzania istnienia przestrzeni nazw ===== ====== Sprawdzanie, czy dana przestrzeń jest poprawnie podane, czy istnieje ====== Możemy sprawdzić, istnienie podanej przestrzeni nazw poprzez użycie parametru {{Code|istnieje}} z wartością niepustą, wtedy dla obu jej wartości uzyskujemy wyniki, wskazujać, czy istnieją przestrzenie nazw istniejące i które nie mają prawa istnieć z racji bytu, w pierwszym przypadku otrzymamy treściwy wynik, a w drugim komunikatro błędzie: <syntaxhighlight lang="lua">0 local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "Szablon", istnieje = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Moja przestrzeń": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "Moja przestrzeń", istnieje = "", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "(błąd)": local nazwa_przestrzeni_nazw_3 = nazwy_modul.NpDane{ nazwa = "Moja przestrzeń", istnieje = "tak", ["klucz projektu"] = "pl:w", }; </syntaxhighlight> Gdy dana przestrzeń nie istnieje przy użyciu wartości niepustej parametru {{Code|istnieje}}, wtedy otrzymujemy błąd funkcji w postaci tekstu {{Code|(błąd)}}, a gdy nie podamy tego parametru, to otrzymamy nazwę sformatowaną danej nieznanej przestrzeni nazw po usunięciu wszystkich spacji lub dolnych myślników na początku i końcu ciągu oraz zbędnych wewnątrz tego ciągu i zastąpieniu ich kolejnych jedną spacją. A gdy jednak przestrzeń nazw istnieje, to funkcja zachowuje się tak, jakby nie podano tego parametru. ====== Łatwe sprawdzanie istnienia danej przestrzeni nazw ====== Sprawdzamy tutaj istnienie podanej przestrzeni nazw w parserach wikikodu {{Code|MediaWiki}}, wtedy dla nieistniejącej przestrzeni nazw otrrzymamy wynik pusty, a dla istniejącej już nie, wyjątkiem jest przestrzeń główna, dla której wartość otrzymana jest pusta, co nie trudno jest odróżnić od stanu błędu funkcji, chyba, że użyjemy pewnego parametru opisywanego poniżej: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Zwraca wartość: "Szablon": local nazwa_przestrzeni_nazw_1 = nazwy_modul.NpDane{ nazwa = "Szablon", istnieje = "tak", ["wynik błędu nietekstowy"] = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: "Moja przestrzeń": local nazwa_przestrzeni_nazw_2 = nazwy_modul.NpDane{ nazwa = "Moja przestrzeń", istnieje = "", ["wynik błędu nietekstowy"] = "tak", ["klucz projektu"] = "pl:w", }; ---- Zwraca wartość: nil: local nazwa_przestrzeni_nazw_3 = nazwy_modul.NpDane{ nazwa = "Moja przestrzeń", istnieje = "tak", ["wynik błędu nietekstowy"] = "tak", ["klucz projektu"] = "pl:w", }; </syntaxhighlight> W kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}} powyższe wywołanie przy nieznanych przestrzeniach przyjmuje wartość {{Code|nil}} (ostatni przykład), a wikikodzie w szablonach wartość pustą: "". A jeżeli chcemy sprawdzić, za pomocą funkcji parsera wikikodu: {{Code|{{s|#if:coś|wtedy|przeciwnie}}}}, używając odpowiednika szablonowego {{s|NpDane}}, wtedy musimy użyć parametru: {{Code|["wynik błędu nietekstowy"] {{=}} "tak"}}, używany z: {{Code|istnieje {{=}} "tak"}}, gdy dana przestrzeń nie istnieje, wtedy uzyskamy wartość pustą (bo wartość {{Code|nil}} jest tłumaczone na to), a żeby odróżnić ją od nazwy przestrzeni nazw głównej, to należy dodatkowo użyć: {{Code|["wyświetlana"] {{=}} "tak"}}, wtedy dla wartości pustej tej nazwy przestrzeni nazw, uzyskujemy w wyniku czego nie wartość pustą, czyli: {{Code|(główna)}} dla projektów polskich, lub po użyciu parametru {{Code|["po polsku"] {{=}} "tak"}} z wartością niepustą albo {{Code|(main)}} dla przestrzeni angielskich bądź innych, gdy nie ma obsługi w bazie przestrzeni nazw, tę nazwę można uzyskać też przy parametrze {{Code|kanoniczna {{=}} "tak"}} dla każdego obsługiwanego projektu {{Strong|wiki}}, więc przy takich realiach łatwo to odróżnić od komunikatu błędu tej funkcji. ===== Uzyskiwanie uchwytu danej przestrzeni nazw, analogicznie do funkcji {{Code|mw.site.namespaces}} (ale w sposób inny sformułowana), ale też z innym zestawem parametrów ===== Uchwyt niskopoziomowy do danej przestrzeni nazw nie można uzyskać przy pomocy kodu z: {{Code|mw.site.namespaces}}, ponieważ jest on dla przestrzeni na bieżącym projekcie, a tutaj mamy siostrzany. Funkcja uzyskująca uchwyt ignoruje wielkość liter w przestrzeni nazw oraz powtórzone odstępy zrealizowane za pomocą spacji lub dolnych myślników. To wysokopoziomowe uzyskanie uchwytu można utworzyć przy pomocy parametru: {{Code|uchwyt}}: <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local uchwyt_1 = nazwy_modul.NpDane{ nazwa = "Szablon", uchwyt = "tak", ["klucz projektu"] = "pl:w", }; local uchwyt_2 = nazwy_modul.NpDane{ nazwa = "Template", uchwyt = "tak", ["klucz projektu"] = "pl:w", }; local uchwyt_3 = nazwy_modul.NpDane{ nazwa = 10, uchwyt = "tak", ["klucz projektu"] = "pl:w", }; </syntaxhighlight> Funkcja {{Code|nazwy_modul.NpDane}} jest bardziej ogólniejsza niż {{Code|mw.site.namespaces}} na projekcie bieżącym, ponieważ ona uwzględnia inne projekty niż polski {{NS|l=tak|w=tak}}, bo uwzględnia większą liczbę nazw przestrzeni nazw, czyli ona obejmuje wszystkie znane przestrzenie nazw, i dlatego należy stosować tę funkcję, a nie dedykowaną tabelę z połączoną z metatabelką za pomocą funkcji {{lpg|Lua}}. == Funkcje nazw serwisowych projektów siostrzanych polskiego {{NS|w=tak|l=tak|pk=d}} == === {{Code|m.NAZWASERWISU()}} === ==== Odpowiednik szablonowy ==== Odpowiednik szablonowy jest pod nazwą {{s|NAZWASERWISU}} (skrót: {{s|NS}}). Jego parametry są podobne do jego wersji bibliotecznej. Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce. ==== Funkcja biblioteczna ==== Szablon jest używany do uzyskania nazwy serwisu danej wiki, ewentualnie w postaci linku do strony głównej projektu danej wiki lub do artykułu o danej wiki na {{lpg|Wikipedia|Wikipedii}}, w jakieś podanej wersji językowej. {{OpisParametrów | 1 = Parametry podstawowe...| nagłówek1=tak | 2 = {{Parametr|wyspecjalizowana|tak}} | _2 = Tylko dla tej funkcji wywołanej w postaci ramki w wikikodzie w szablonach, gdy do niej wsadzamy bezpośrednio jako dzieci, a w przypadku z rodzica to ten parametr jest niepotrzebny lub powinien przyjmować wartość pustą, | 3 = Inne parametry...| nagłówek3=tak | 4 = Ta funkcja dalsze ma takie same parametry, co szablon w jego pełnej nazwie: {{s|NAZWASERWISU}}, lub skrótowej: {{s|NS}}.|nagłówek4=tak | 5 = Wszystkie powyższe zmienne są opcjonalne|nagłówek5=tak }} ===== Opis parametrów użytych razem z parametrem {{Code|link}} ===== Szablon przyjmuje parametr opcjonalny {{Code|link}} ({{s|NS|l{{=}}tak}}), dzięki któremu jest wyświetlany link, do strony głównej tego projektu, w postaci: {{Code|{{NS|l=tak}}}}, o nazwie linku, będącą jednocześnie nazwą serwisu projektu '''{{NS|l=tak}}'''. Gdy dodamy parametr {{Code|wikipedia{{=}}tak}} do wywołania {{Code|{{s|NS|l{{=}}tak|w{{=}}tak}}}}, wtedy uzyskamy wynik: {{Code|{{NS|l=tak|w=tak}}}}, w innym przypadku, gdy linkujemy do angielskiej {{NS|w=tak|l=tak|pk=mj|k=tak}}, wtedy dla wywołania {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|kj{{=}}en}}}} mamy: {{Code|{{NS|l=tak|w=tak|kj=en}}}}, a w przypadku angielskiego {{NS|w=tak|l=tak|pk=d}} dla wikikodu {{Code|{{s|NS|l{{=}}tak|kj{{=}}en}}}} mamy wynik w postaci: {{Code|{{NS|l=tak|kj=en}}}}, a jeśli użyjemy parametru {{Code|kod projektu}}, wtedy wywołanie {{Code|{{s|NS|link{{=}}tak|kp{{=}}s}}}}, to mamy: {{Code|{{NS|l=tak|kp=s}}}}, a gdy dodamy dodatkowo {{Code|wikipedia{{=}}tak}}, zatem {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|kp{{=}}s}}}} jest o wyniku: {{Code|{{NS|l=tak|w=tak|kp=s}}}}. {{OpisParametrów | 1 = Wyniki z parametrem: {{Parametr|link|tak}}, zostały obtoczone znacznikiem: {{Tag|code}}, dla odróżnienia rezultatu od reszty tekstu.|nagłówek1=tak }} ===== Wywołania szablonu z tekstem z małymi literami po linku (parametr: {{Code|po}}) i z dowolnym tekstem w nazwie linku (parametr: {{Code|za}}) ===== {{OpisParametrów | 1 = Parametr: {{Parametr|link|tak}}, w szablonie: {{s|NAZWASERWISU}}, mówi, że ma być podany link do strony głównej projektu lub artykułu na {{NS|l=tak|k=w}}. Można w nie podać parametr: {{Parametr|po|<łańcuch tekstowy>}}, który jest za linkiem, podobnie: {{Parametr|za|<łańcuch tekstowy>}}, który jest w nazwie linku, ale względem jej originalnej nazwy za nim.|nagłówek1=tak }} ====== Proste przykłady użycia, z linkiem do projektu bieżącego, przy użyciu parametru {{Code|link}} ====== Gdy chcemy wyświetlić link do polskiego projektu {{NS|w=tak|l=tak|pk=mj}} do jego strony głównej. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local link_1 = nazwy_modul.NAZWASERWISU{ link = "tak", po = "a", }; local link_2 = nazwy_modul.NAZWASERWISU{ link = "tak", za = "a", }; </syntaxhighlight> ; Analogiczne wywołanie szablonu{{Dk}} * {{Code|{{s|NS|l{{=}}tak|p{{=}}a}}}} → {{Tt|{{NS|l=tak|p=a}}}}, * {{Code|{{s|NS|l{{=}}tak|z{{=}}a}}}} → {{Tt|{{NS|l=tak|z=a}}}}. ; Kod wywołania tych szablonów: ;; Dla wywołania {{Code|{{s|NS|l{{=}}tak|p{{=}}a}}}}{{Dk}} {{PreNowiki|{{NS|l=tak|p=a}}}} ;; Dla wywołania {{Code|{{s|NS|l{{=}}tak|z{{=}}a}}}}{{Dk}} {{PreNowiki|{{NS|l=tak|z=a}}}} ====== Proste przykłady użycia, z linkiem do polskiej {{NS|w=tak|l=tak|k=w|pk=mj}}, przy użyciu parametru {{Code|link}} ====== Gdy chcemy wyświetlić link do artykułu o {{NS|w=tak|l=tak|k=b|pk=mj}} na polskiej {{NS|w=tak|l=tak|k=w|pk=mj}}. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local link_1 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", po = "a", }; local link_2 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", za = "a", }; </syntaxhighlight> ; Analogiczne wywołanie szablonu{{Dk}} * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|p{{=}}a}}}} → {{Tt|{{NS|l=tak|w=tak|p=a}}}}, * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|z{{=}}a}}}} → {{Tt|{{NS|l=tak|w=tak|z=a}}}}. ; Kod wywołania tych szablonów: ;; Dla wywołania {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|p{{=}}a}}}}{{Dk}} {{PreNowiki|{{NS|l=tak|w=tak|p=a}}}} ;; Dla wywołania {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|z{{=}}a}}}}{{Dk}} {{PreNowiki|{{NS|l=tak|w=tak|z=a}}}} ====== Przykłady użycia, z linkiem do obcojęzycznej {{NS|w=tak|l=tak|k=w|pk=mj}}, z polską podanego nazwą projektu, przy użyciu parametru {{Code|link}} ====== Gdy chcemy wyświetlić link do artykułu o {{NS|w=tak|l=tak|k=b|pk=mj}} na podanej obcojęzycznej {{NS|w=tak|l=tak|k=w|pk=mj}} podany za pomocą parametru {{Code|["klucz projektu"] {{=}} "en:s"}}. Jest to projekt: {{NS|l=tak|k=en:s}}, którego językiem jest: {{lpg|{{#invoke:lang|hasło|es}}}}. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local link_1 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", ["klucz projektu"] = "en:s", po = "a", }; local link_2 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", ["klucz projektu"] = "en:s", za = "a", }; </syntaxhighlight> ; Analogiczne wywołanie szablonu{{Dk}} * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|k{{=}}en:s|p{{=}}a}}}} → {{Tt|{{NS|l=tak|w=tak|k=en:s|p=a}}}}, * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|k{{=}}en:s|z{{=}}a}}}} → {{Tt|{{NS|l=tak|w=tak|k=en:s|z=a}}}}. ; Kod wywołania tych szablonów: ;; Dla wywołania {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|k{{=}}en:s|p{{=}}a}}}}{{Dk}} {{PreNowiki|{{NS|l=tak|w=tak|k=en:s|p=a}}}} ;; Dla wywołania {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|k{{=}}en:s|z{{=}}a}}}}{{Dk}} {{PreNowiki|{{NS|l=tak|w=tak|k=en:s|z=a}}}} ====== Przykłady użycia, z linkiem do obcojęzycznej {{NS|w=tak|l=tak|k=w|pk=mj}}, z niepolską podanego nazwą projektu, przy użyciu parametru {{Code|link}} ====== Gdy chcemy wyświetlić link do artykułu o {{NS|w=tak|l=tak|k=b|pk=mj}} do podanej obcojęzycznej {{NS|w=tak|l=tak|k=w|pk=mj}} podany za pomocą parametru {{Code|["klucz projektu"] {{=}} "en:s"}}. A nazwa linku ma być podana w języku tego projektu. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local link_1 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", ["klucz projektu"] = "en:s", ["w języku wiki"] = "tak", po = "a", }; local link_2 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", ["klucz projektu"] = "en:s", ["w języku wiki"] = "tak", za = "a", }; </syntaxhighlight> ; Analogiczne wywołanie szablonu{{Dk}} * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|k{{=}}en:s|jw{{=}}tak|p{{=}}a}}}} → {{Tt|{{NS|l=tak|w=tak|k=en:s|jw=tak|p=a}}}}, * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|k{{=}}en:s|jw{{=}}tak|z{{=}}a}}}} → {{Tt|{{NS|l=tak|w=tak|k=en:s|jw=tak|z=a}}}}. ; Kod wywołania tych szablonów: ;; Dla wywołania {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|k{{=}}en:s|jw{{=}}tak|p{{=}}a}}}}{{Dk}} {{PreNowiki|{{NS|l=tak|w=tak|k=en:s|jw=tak|p=a}}}} ;; Dla wywołania {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|k{{=}}en:s|jw{{=}}tak|z{{=}}a}}}}{{Dk}} {{PreNowiki|{{NS|l=tak|w=tak|k=en:s|jw=tak|za=a}}}} ===== Wywołania szablonu dotyczące, w {{NS|w=tak|l=tak|k=w|pk=mj}} iub nie, kodzie dla projektu {{NS|w=tak|l=tak|pk=m}} dla różnych wersji językowych ===== ====== Przykłady użycia funkcji {{Code|nazwy_modul.NAZWASERWISU()}} ====== Gdy chcemy podać nazwę projektu w postaci linku do artykułu strony głównej na {{NS|w=tak|l=tak|pk=mj}} lub artykułu na polskiej lub obcojęzycznej {{NS|w=tak|l=tak|k=w|pk=mj}}. Do jakiej {{NS|w=tak|l=tak|k=w|pk=mj}} ma być link, to wskazuje kod języka, np.: {{Code|["kod języka"] {{=}} "en"}}. Gdy nie podamy tego kodu, to linkujemy tylko do polskiego {{NS|w=tak|l=tak|pk=mj}} lub do polskiej {{NS|w=tak|l=tak|k=w|pk=mj}} (jeżeli podamy parametr {{Code|wikipedia {{=}} "tak"}}). A gdy podany jest ten kod, to możemy linkować nie tylko do polskich projektów siostrzanych polskiego {{NS|w=tak|l=tak|pk=mj}} (ale tylko różnych jego wersji językowych), ale też można linkować do obcojęzycznych projektów, którym jest Wikipedia do artykułu o tym projekcie. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local link_1 = nazwy_modul.NAZWASERWISSU{}; }; local link_2 = nazwy_modul.NAZWASERWISU{ link = "tak", }; local link_3 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", }; local link_4 = nazwy_modul.NAZWASERWISU{ link = "tak", ["kod języka"] = "pl", }; local link_5 = nazwy_modul.NAZWASERWISU{ link = "tak", ["kod języka"] = "en", }; local link_6 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", ["kod języka"] = "pl", }; local link_7 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", ["kod języka"] = "en", }; </syntaxhighlight> ====== Analogiczne wywołanie szablonu ====== * {{Code|{{s|NS}}}} → {{Tt|{{NS}}}}, * {{Code|{{s|NS|l{{=}}tak}}}} → {{Tt|{{NS|l=tak}}}}, * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak}}}} → {{Tt|{{NS|l=tak|w=tak}}}}, * {{Code|{{s|NS|l{{=}}tak|kj{{=}}pl}}}} → {{Tt|{{NS|l=tak|kj=pl}}}}, * {{Code|{{s|NS|l{{=}}tak|kj{{=}}en}}}} → {{Tt|{{NS|l=tak|kj=en}}}}, * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|kj{{=}}pl}}}} → {{Tt|{{NS|l=tak|w=tak|kj=pl}}}}, * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|kj{{=}}en}}}} → {{Tt|{{NS|l=tak|w=tak|kj=en}}}}. ===== Wywołanie szablonu dotyczące innego projektu niż ten ===== ====== Przykłady użycia funkcji {{Code|nazwy_modul.NAZWASERWISU()}} ====== Ale też możemy linkować do stron głównych innych projektów niż {{NS|w=tak|l=tak|pk=m}}. Robimy to za pomocą parametru: {{Code|["kod projektu"] {{=}} "s"}}, nie licąc parametru języka, ale też możemy linkować do artykułu o danym projekcie na {{NS|w=tak|l=tak|k=w|pk=mj}}. A jeżeli podamy kod języka {{Code|["kod języka"] {{=}} "en"}}, wtedy linkujemy do angielskich projektów, w tym również do {{NS|w=tak|l=tak|k=w|pk=mj}}. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); ---- Tutaj linkujemy do Wikiźródeł do jej strony głównej local linki_1 = nazwy_modul.NAZWASERWISU{ link = "tak", ["kod projektu"] = "s", }; --- Co powyżej, tylko do artykułu na Wikipedii o Wikiźródłach local linki_2 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", ["kod projektu"] = "s", }; -- Tutaj linkujemy do Wikibooksa do jej strony głównej w jakieś jej wersji językowej local linki_3 = nazwy_modul.NAZWASERWISU{ link = "tak", ["kod języka"] = "pl", ["kod projektu"] = "s", }; local linki_4 = nazwy_modul.NAZWASERWISU{ link = "tak", ["kod języka"] = "en", ["kod projektu"] = "s", }; -- Jak powyżej, tylko do artykułu Wikipedii w jakieś wersji językowej o Wikiźródłach local linki_5 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", ["kod języka"] = "pl", ["kod projektu"] = "s", }; local linki_6 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", ["kod języka"] = "en", ["kod projektu"] = "s", }; </syntaxhighlight> ====== Analogiczne wywołanie szablonu ====== * {{Code|{{s|NS|l{{=}}tak|kp{{=}}s}}}} → {{Tt|{{NS|l=tak|kp=s}}}}, * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|kp{{=}}s}}}} → {{Tt|{{NS|l=tak|w=tak|kp=s}}}}, * {{Code|{{s|NS|l{{=}}tak|kj{{=}}pl|kp{{=}}s}}}} → {{Tt|{{NS|l=tak|kj=pl|kp=s}}}}, * {{Code|{{s|NS|l{{=}}tak|kj{{=}}en|kp{{=}}s}}}} → {{Tt|{{NS|l=tak|kj=en|kp=s}}}}, * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|kj{{=}}pl|kp{{=}}s}}}} → {{Tt|{{NS|l=tak|w=tak|kj=pl|kp=s}}}}, * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|kj{{=}}en|kp{{=}}s}}}} → {{Tt|{{NS|l=tak|w=tak|kj=en|kp=s}}}}. ===== Wywołania szablonu z nazwą linku danej wiki ===== ====== Przykłady użycia funkcji {{Code|nazwy_modul.NAZWASERWISU()}} ====== Gdy chcemy podać nazwę linku przy pomocy parametru {{Code|["w języku wiki"] {{=}} "tak"}}, w języku danej wiki, którego podajemy przy parametrze {{Code|["kod języka"] {{=}} "en"}}, dla projektu podanego w zmiennej {{Code|["kod projektu"] {{=}} "s"}}. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local linki_1 = nazwy_modul.NAZWASERWISU{ link = "tak", ["kod projektu"] = "s", ["w języku wiki"] = "tak", }; local linki_2 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", ["kod projektu"] = "s",["w języku wiki"] = "tak", }; local linki_3 = nazwy_modul.NAZWASERWISU{ link = "tak", ["kod języka"] = "pl", ["kod projektu"] = "s", ["w języku wiki"] = "tak", }; local linki_4 = nazwy_modul.NAZWASERWISU{ link = "tak", ["kod języka"] = "en", ["kod projektu"] = "s", ["w języku wiki"] = "tak", }; local linki_5 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", ["kod języka"] = "pl", ["kod projektu"] = "s", ["w języku wiki"] = "tak", }; local linki_6 = nazwy_modul.NAZWASERWISU{ link = "tak", wikipedia = "tak", ["kod języka"] = "en", ["kod projektu"] = "s", ["w języku wiki"] = "tak", }; </syntaxhighlight> ====== Analogiczne wywołanie szablonu ====== * {{Code|{{s|NS|l{{=}}tak|kp{{=}}s|jw{{=}}tak}}}} → {{Tt|{{NS|l=tak|kp=s|jw=tak}}}}, * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|kp{{=}}s|jw{{=}}tak}}}} → {{Tt|{{NS|l=tak|w=tak|kp=s|jw=tak}}}}, * {{Code|{{s|NS|l{{=}}tak|kj{{=}}pl|kp{{=}}s|jw{{=}}tak}}}} → {{Tt|{{NS|l=tak|kj=pl|kp=s|jw=tak}}}}, * {{Code|{{s|NS|l{{=}}tak|kj{{=}}en|kp{{=}}s|jw{{=}}tak}}}} → {{Tt|{{NS|l=tak|kj=en|kp=s|jw=tak}}}}, * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|kj{{=}}pl|kp{{=}}s|jw{{=}}tak}}}} → {{Tt|{{NS|l=tak|w=tak|kj=pl|kp=s|jw=tak}}}}, * {{Code|{{s|NS|l{{=}}tak|w{{=}}tak|kj{{=}}en|kp{{=}}s|jw{{=}}tak}}}} → {{Tt|{{NS|l=tak|w=tak|kj=en|kp=s|jw=tak}}}}. ===== Wywołanie szablonu z podaną nazwą linku ===== ====== Przykłady użycia funkcji {{Code|nazwy_modul.NAZWASERWISU()}} ====== Jeżeli chcemy podać ściśle określony ciąg, który jest nazwą linku, do linkowania do strony głównej lub artykułu na {{NS|w=tak|l=tak|k=w|pk=mj}} o danym projekcie, np. inną niż nazwa projektu. Tutaj nazwą linku jest {{Code|[1] {{=}} "Biblioteka książek"}}. <syntaxhighlight lang="lua"> local nazwy_modul=require("Module:Nazwy"); local link_1 = nazwy_modul.NAZWASERWISU{ [1] = "Biblioteka książek", link = "tak", }; local link_2 = nazwy_modul.NAZWASERWISU{ [1] = "Biblioteka książek", link = "tak", wikipedia = "tak", }; local link_3 = nazwy_modul.NAZWASERWISU{ [1] = "Biblioteka książek", link = "tak", ["kod projektu"] = "s",["kod języka"] = "en", }; local link_4 = nazwy_modul.NAZWASERWISU{ [1] = "Biblioteka książek", link = "tak", wikipedia = "tak", ["kod projektu"] = "s",["kod języka"] = "en", }; </syntaxhighlight> ====== Analogiczne wywołanie szablonu ====== * {{Code|{{s|NS|Biblioteka książek|l{{=}}tak}}}} → {{Tt|{{NS|Biblioteka książek|l=tak}}}}, * {{Code|{{s|NS|Biblioteka książek|l{{=}}tak|w{{=}}tak}}}} → {{Tt|{{NS|Biblioteka książek|l=tak|w=tak}}}}, * {{Code|{{s|NS|Biblioteka wikiźródeł|l{{=}}tak|kp{{=}}s|kj{{=}}en}}}} → {{Tt|{{NS|Biblioteka wikiźródeł|l=tak|kp=s|kj=en}}}}, * {{Code|{{s|NS|Biblioteka wikiźródeł|l{{=}}tak|w{{=}}tak|kp{{=}}s|kj{{=}}en}}}} → {{Tt|{{NS|Biblioteka wikiźródeł|l=tak|w=tak|kp=s|kj=en}}}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> je4f913wwz9xiu9rhw2376tl0j44gsm Wikibooks:Moduły/Parametry/Tom I 4 63967 555808 555632 2026-09-12T11:41:20Z Persino 2851 555808 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} Są tutaj przedstawione funkcje liczb elementów w tabeli lub szablonów, w wersji mnogiej lub normalnej. == {{Code|p["LiczbaElementówNumerowanychTablicy"]}} == Funkcja liczy liczbę numerowanych elementów tablicy od {{Code|1}}, one nie mogą mieć miedzy sobą przerw, zaczynające się właśnie od niej, czyli: {{Code|1,2,3,4,...}}. Można podać, czy oczekujemy wartości tylko niepustych. Można wskazać, czy liczba elementów jest mnoga (większa od {{Code|1}}, ale równa {{Code|2}}, w tym przypadku, a jeżeli nie jest taka, to zrzucony wynik jest {{Code|0}}, {{Code|1}}, ale nie {{Code|2}}). Ona liczy liczbę parametrów numerowanych niepustych, tzn. elementy tam są od {{Code|1}}, bez przerw, a jeżeli są przerwy, jeżeli taki przykład sformułować, to do jej pierwszej, a w tym przypadku nie ma takich. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["LiczbaElementówNumerowanychTablicy"]=function(tabela, wliczac,mnoga)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tabela}} | _1 = Tabela, na którym operujemy. | 2 = {{Code|wliczac}} | _2 = Czy szukamy niepuste elementy numerowane tabeli, jeżeli {{Code|true}}. | 3 = {{Code|mnoga}} | _3 = Czy liczba tych numerowanych elementów jest mnoga, jeżeli {{Code|true}}. }} === Przykład kodu na stronie modułów z przykładami na stronie ich opisów === Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Parametry/LiczbaElementówNumerowanychTablicy/}}. == {{Code|p["LiczbaElementówNumerowanychSzablonu"]}} == Funkcja wywoływana w ramce w wikikodzie, wykorzystująca funkcję z definicji: {{Code|{{sr|#p["LiczbaElementówNumerowanychTablicy"]|p=Parametry}}}}, i robiąca to samo, co ona, tylko wykorzystywana na innym poziomie, tzn. jako wywołana ramka w szablonie, a nie powinna być uruchamiana w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. <syntaxhighlight lang="lua"> p["LiczbaElementówNumerowanychSzablonu"]=function(frame)...end; </syntaxhighlight> Parametrami funkcji ramki tablicy transportu, które z dwóch odpowiadają parametrom: {{Code|wliczac}} i {{Code|mnoga}}, wykorzystywanej funkcji, są kolejno: {{OpisParametrów | 1 = {{Code|niepuste}} | _1 = Czy szukamy niepuste elementy numerowane parametrów szablonu, w którym ta ramka została wywołana, w postaci tej funkcji, jeżeli ta zmienna niepusta. | 2 = {{Code|mnoga}} | _2 = Czy liczba takich wyszukań jest mnoga, jeżeli niepusta. }} Odpowiednikiem zmiennej {{Code|tabela}}: {{OpisParametrów | 1 = {{Code|frame:getParent().args}} | _1 = Parametry szablonu rodzica, policzona za pomocą tablicy ramki, jej funkcji, tablicy transportu. }} Funkcje wywołuje się w ramce w szablonie, jako dziecko, w postaci, np., gdy rozważamy parametry niepuste szablonu, z ustawionym niepustym parametrem mnogości, wtedy ona powinna zwrócić liczbę {{Code|0}}, {{Code|1}} lub {{Code|2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|LiczbaElementówNumerowanychSzablonu|niepuste=tak|mnoga=tak}} </syntaxhighlight> Szablon, w którym jest wywołane to przedstawienie, można napisać: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|nazwa1|nazwa2|nazwa3|nazwa4|nazwa5|nazwa6|nazwa7|nazwa8|nazwa9}} </syntaxhighlight> Powyższe wywołanie zrzuca wynik wyliczony, a ponieważ ustawiony został parametr mnogości w dziecku tego szablonu, wtedy zwraca liczbę {{Code|2}}, a gdyby nie był, to zobaczylibyśmy liczbę tych elementów. Jak można zauważyć, że ma on parametry numerowane (zaczynające się od jedynki), które można znaleźć w parametrach szablonu, jeżeli tam w ogóle istnieją. == {{Code|p["LiczbaElementówNienazwanychTablicy"]}} == Funkcja liczy liczbę nienazwanych elementów niekoniecznie od {{Code|1}}, ale mogą zaczynać się od pewnej liczby, mogą między sobą, nie zawsze, mieć przerwy, np. mogą być podane tak: {{Code|3,10,15,..}}. Można podać, czy oczekujemy wartości tylko niepustych. Można wskazać, czy liczba elementów jest mnoga (większa od {{Code|1}}, ale równa {{Code|2}}, w tym przypadku, a jeżeli nie jest taka, to zrzucony wynik jest {{Code|0}}, {{Code|1}}, ale nie {{Code|2}}). Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["LiczbaElementówNienazwanychTablicy"]=function(tabela, wliczac,mnoga)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tabela}} | _1 = Tabela, na którym operujemy. | 2 = {{Code|wliczac}} | _2 = Czy szukamy niepuste elementy numerowane tabeli, ma wartosć nieodpowiadająca {{Code|false}}, | 3 = {{Code|mnoga}} | _3 = Czy liczba tych numerowanych elementów jest mnoga, wartość jak powyżej. }} Funkcja z użytym parametrem {{Code|mnoga}} z wartością {{Code|true}} jest taka, że zawsze zwracana jest wartość {{Code|2}} przez nią. === Przykład kodu na stronie modułów z przykładami na stronie ich opisów === Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Parametry/LiczbaElementówNienazwanychTablicy/}}. == {{Code|p["LiczbaParametrówNienazwanychSzablonu"]}} == Funkcja wywoływana w ramce w wikikodzie, wykorzystująca funkcję z definicji: {{Code|{{sr|#p["LiczbaElementówNienazwanychTablicy"]|p=Parametry}}}}, i robiąca to samo, co ona, tylko wykorzystywana na innym poziomie, tzn. jako wywołana ramka w szablonie, a nie powinna być uruchamiana w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["LiczbaParametrówNienazwanychSzablonu"]=function(frame)...end; </syntaxhighlight> Parametrami funkcji tablicy ramki, odpowiedniki parametrów: {{Code|wliczac}} i {{Code|mnoga}} funkcji wykorzystywanej z definicji, są kolejno: {{OpisParametrów | 1 = {{Code|niepuste}} | _1 = Czy szukamy niepuste elementy numerowane parametrów szablonu, w którym ta ramka została wywołana, w postaci tej funkcji, jeżeli ten argument niepusty. | 2 = {{Code|mnoga}} | _2 = Czy liczba takich wyszukań jest mnoga, jeżeli niepusty. }} Odpowiednikiem parametru {{Code|tabela}} jest: {{OpisParametrów | 1 = {{Code|frame:getParent().args}} | _1 = Parametry szablonu rodzica, policzona za pomocą tablicy ramki, jej funkcji, tablicy transportu. }} Funkcje wywołuje się w ramce w szablonie, jako dziecko, w postaci, np., gdy rozważamy parametry niepuste szablonu, z ustawieniem parametrem mnogości, wtedy funkcja ta powinna zwrócić liczbę {{Code|0}}, {{Code|1}} lub {{Code|2}}: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|LiczbaParametrówNienazwanychSzablonu|niepuste=tak|mnoga=tak}} </syntaxhighlight> Szablon, w którym jest wywołane to przedstawienie, można napisać: <syntaxhighlight lang="mediawiki"> {{Nazwa szablonu|2=nazwa1|10=nazwa2|15=nazwa3|18=nazwa4}} </syntaxhighlight> Powyższe wywołanie liczy liczbę parametrów nienazwanych niepustych w liczbie mnogie, tzn. gdy ten parametr jest podany. Powyższa funkcja zrzuca wynik wyliczony, ze względu na to ustawienie w dziecku, jako liczbę {{Code|2}}, a nie {{Code|4}}. == {{Code|p["LiczbaElementówTablicy"]}} == Funkcja liczy liczbę nienazwanych (numerowanych) i nazwanych elementów tablicy. Można podać, czy oczekujemy wartości tylko niepustych. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["LiczbaElementówTablicy"]=function(tabela,wliczac)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tabela}} | _1 = Tabela do rozważań na problemy tej funkcji. | 2 = {{Code|wliczac}} | _2 = Czy ma liczyć liczbę elementów niepustych, jeżeli {{Code|true}}. }} === Przykład kodu na stronie modułów z przykładami na stronie ich opisów === Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Parametry/LiczbaElementówTablicy/}}. == {{Code|p["LiczbaElementówNienazwanychZPrzedrostkiemLubNieTablicy"]}} == Funkcja liczy liczbę nienazwanych elementów od {{Code|1}}, ale mogą zaczynać się od pewnej liczby, mogą między sobą mieć przerwy, np.: {{Code|3,10,15,..}}, liczbę elementów tablicy odpowiednio skonstruowanych, charakterystycznych dla tej funkcji. Można podać, czy oczekujemy wartości tylko niepustych. Można wskazać, czy liczba elementów jest mnoga (większa od {{Code|1}}, wtedy ta funkcja zwraca wynik {{Code|2}}, a jeżeli nie jest taka, to wtedy zwracany wynik jest {{Code|0}} lub {{Code|1}}). Należy też podać niepusty przedrostek, niebędący liczbą zakodowaną w łańcuchu znakowym. Należy wskazać w funkcji, czy oczekujemy formy numerkowe, ale nie muszą to być liczby, ale mogą być one łańcuchami znakowymi, a jeżeli nie są takie, to one muszą być w postaci czystych liczb. Definicja form numerkowych jest taka, że one po przekształceniu na liczbę funkcją {{LzLua|tonumber}} stają się normalnymi liczbami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["LiczbaElementówNienazwanychZPrzedrostkiemLubNieTablicy"]=function(tabela,przedrostek,wliczac,czy_formy_numerkowe)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tabela}} | _1 = Tabela, na którym operujemy. | 2 = {{Code|przedrostek}} | _2 = Niepusty, niebędący liczbą łańcuchową, przedrostek, który ma być przed liczbą. | 3 = {{Code|wliczac}} | _3 = Czy szukamy niepuste elementy numerowane tabeli. | 4 = {{Code|czy_formy_numerkowe}} | _4 = Czy wyszukiwane liczby przy pomocy funkcji {{Code|pairs}}, czy są czystymi liczbami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. }} Funkcja liczy liczbę parametrów nienazwanych i nazwanych, ale z podanym przedrostkiem, lub nie, skonstruowanych z tych pierwszych. === Przykład kodu na stronie modułów z przykładami na stronie ich opisów === Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Parametry/LiczbaElementówNienazwanychZPrzedrostkiemLubNieTablicy/}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> r6teyhm72uqdu038z5lb28k5y7zsr37 Wikibooks:Moduły/Parametry/Tom VI 4 63972 555783 555639 2026-09-12T01:16:49Z Persino 2851 /* p["Odstępy"] */ 555783 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} Są tutaj przedstawione funkcje manipulowania formatami łańcuchów znakowych. == {{Śródtytuł|p["Odstępy"]}}{{Code|p["Odstępy"]}} == === Odpowiednik szablonowy === Odpowiednik szablonowy {{s|Odstępy}} ma te same parametry, co jej odpowiednik ramkowy funkcyjny: {{Code|{{m|Parametry|Odstępy}}}}. Przykładami wywołania funkcji: Poniższe przykłady są pokazane przy pomocy szablonu {{s|Pre}}. ; Przykład pierwszy {{Pre|{{s|Odstępy| Oto jest łańcuch. }}}} ; Wynik {{Pre|{{Odstępy| Oto jest łańcuch. }}}} Widzimy, że odstępy na końcach łańcucha zostały usunięte, a wewnątrz już nie. ---- ; Przykład drugi {{Pre|{{s|Odstępy|wewnątrz{{=}}tak| Oto jest łańcuch. }}}} ; Wynik {{Pre|{{Odstępy|wewnątrz=tak| Oto jest łańcuch. }}}} Widzimy, że odstępy na końcach łańcucha zostały usunięte, a wewnątrz łańcucha każdy odstęp został zastąpiony spacją. ---- ; Przykład trzeci {{Pre|{{s|Odstępy|wewnątrz{{=}}tak|dolny-myślnik{{=}}tak| Oto jest łańcuch. }}}} ; Wynik {{Pre|{{Odstępy|wewnątrz=tak|dolny-myślnik=tak| Oto jest łańcuch. }}}} Widzimy, że odstępy na końcach łańcucha zostały usunięte, a wewnątrz łańcucha każdy odstęp został zastąpiony na dolny myślnik. === Funkcja biblioteczna === Funkcja usuwa białe znaki i dolne myślniki na końcach podanego ciągu, ale też ewentualnie można przy pomocy tej funkcji zamieniać też te znaki wewnątrz ciągu, o ile nie jest już pusty po poprzedniej operacji, i zamienia ich na jedną spację lub dolny myślnik. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["Odstępy"] = function(frame)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów| | 1 = {{Code|1}} lub {{Code|nazwa}} | _1 = Określa podany ciąg, któremu domyślnie są usuwane białe znaki lub dolne myślniki na końcach łańcucha. | 2 = {{Code|2}} lub {{Code|wewnątrz}} | _2 = Czy ma również robić podobne operacje, co powyżej, tylko że wewnątrz ciągu, z różnicą, że zaamieniając na jeden znak. | 3 = {{Code|3}} lub {{Code|dolny-myślnik}} | _3 = Czy ma zamieniać, spacje i dolne myślniki (jeżeli je wykrywa, patrz parametr poniżej), na dolne myślniki. | 4 = {{Code|4}} lub {{Code|spacje}} | _4 = Czy na końcach i wewnątrz ciągu ma wykrywać, do zamieniania, tylko odstępy, a nie również dolne myślniki. }} Funkcja zwraca przekształcony ciąg powyższymi metodami. Przykłady użycia: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local nazwa2=parametry_modul["Odstępy"]{nazwa=" Oto jest łańcuch. ",}; local nazwa3=parametry_modul["Odstępy"]{nazwa=" Oto jest łańcuch. ", ["wewnątrz"]="tak",}; local nazwa4=parametry_modul["Odstępy"]{nazwa=" Oto jest łańcuch. ", ["wewnątrz"]="tak",["dolny-myślnik"]="tak",}; </syntaxhighlight> Od pierwszego do trzeciego przykładu w naszym wypadku funkcja ta zwróci wartości: <syntaxhighlight lang="lua"> local nazwa2="Oto jest łańcuch."; local nazwa3="Oto jest łańcuch."; local nazwa4="Oto_jest_łańcuch."; </syntaxhighlight> {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 7tlr3b5o4rq9unazjg695g7dx7r32f5 Wikibooks:Moduły/Parametry/Tom IX 4 63975 555672 555643 2026-09-11T13:04:13Z Persino 2851 555672 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} Są tutaj przedstawione funkcje łączenia wielu tabel. == {{Code|p["ŁączDwieTabele"]}} == Funkcja łączy dwie tabele przy pomocy: {{Code|{{sr|#p["ŁączNumerowaneTabele"]|p=Parametry}}}}, które tam są ustawione w sposób ponumerowany, natomiast te tabele zawierają elementy nazwane jak i nienazwane. Te elementy tych tabel łączymy ze sobą, w ten sposób powstanie wynikowa tabela końcowa. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["ŁączDwieTabele"]=function(tabela1,tabela2)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów| | 1 = {{Code|tabela1}} i {{Code|tabela2}} | _1 = tabele do połączenia w jedną tablicę. }} Przykłady użycia: <syntaxhighlight lang="lua"> local tabela1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",[2]="wartość13",[4]="wartość14",[7]="wartość15",[8]="wartość16",}; local tabela2={["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",[3]="wartość17",[10]="wartość18",[12]="wartość19",[15]="wartość20",[16]="wartość21",}; local parametry_modul=require("Module:Parametry"); local tabela_polaczona=parametry_modul["ŁączDwieTabele"](tabela1,tabela2); </syntaxhighlight> Uzyskaną tabelą w wyniku wywołania tej funkcji jest: <syntaxhighlight lang="lua"> local tabela_polaczona={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",[2]="wartość13",[4]="wartość14",[7]="wartość15",[8]="wartość16",[3]="wartość17",[10]="wartość18",[12]="wartość19",[15]="wartość20",[16]="wartość21",}; </syntaxhighlight> == {{Code|p["ŁączZbioryElementówNumerowanychDwóchTabel"]}} == Funkcja łączy dwie tabele przy pomocy: {{Code|{{sr|#p["ŁączZbioryNumerowanychElementówNumerowanychTabel"]|p=Parametry}}}}, które tam są ustawione w sposób ponumerowany, natomiast te tabele zawierają elementy ponumerowane. Te elementy tych tabel łączymy ze sobą, w ten sposób powstanie wynikowa tabela końcowa. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["ŁączZbioryElementówNumerowanychDwóchTabel"]=function(tabela1,tabela2)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów| | 1 = {{Code|tabela1}}, {{Code|tabela2}} | _1 = Tabele do połączenia w jedną tablicę. }} Przykładem działania funkcji jest: <syntaxhighlight lang="lua"> local tabela1={"wartość1","wartość2","wartość3","wartość4",}; local tabela2={"wartość5","wartość6","wartość7","wartość8","wartość9",}; local parametry_modul=require("Module:Parametry"); local tabela_polaczona=parametry_modul["ŁączZbioryElementówNumerowanychDwóchTabel"](tabela1,tabela2); </syntaxhighlight> Uzyskaną tabelą w wyniku wywołania tej funkcji jest: <syntaxhighlight lang="lua"> local tabela_polaczona={"wartość1","wartość2","wartość3","wartość4","wartość5","wartość6","wartość7","wartość8","wartość9",}; </syntaxhighlight> == {{Code|p["ŁączZbioryElementówNienazwanychDwóchTabel"]}} == Funkcja łączy dwie tabele przy pomocy: {{Code|{{sr|#p["ŁączZbioryNienazwanychElementówNumerowanychTabel"]|p=Parametry}}}}, które tam są ustawione w sposób ponumerowany, natomiast te tabele zawierają elementy nienazwane. Te elementy tych tabel łączymy ze sobą, w ten sposób powstanie wynikowa tabela końcowa. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["ŁączZbioryElementówNienazwanychDwóchTabel"]=function(tabela1,tabela2)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów| | 1 = {{Code|tabela1}}, {{Code|tabela2}} | _1 = Tabele do połączenia w jedną tablicę. }} Przykłady użycia: <syntaxhighlight lang="lua"> local tabela1={[2]="wartość1",[4]="wartość2",[7]="wartość3",[8]="wartość4",}; local tabela2={[3]="wartość5",[10]="wartość6",[12]="wartość7",[15]="wartość8",[16]="wartość9",}; local parametry_modul=require("Module:Parametry"); local tabela_polaczona=parametry_modul["ŁączZbioryElementówNienazwanychDwóchTabel"](tabela1,tabela2); </syntaxhighlight> Uzyskaną tabelą w wyniku wywołania tej funkcji jest: <syntaxhighlight lang="lua"> local tabela_polaczona={"wartość4","wartość1","wartość2","wartość3","wartość8","wartość5","wartość7","wartość9","wartość6",}; </syntaxhighlight> == {{Code|p["ŁączZbioryElementówNazwanychDwóchTabel"]}} == Funkcja łączy dwie tabele przy pomocy: {{Code|{{sr|#p["ŁączZbioryNazwanychElementówNumerowanychTabel"]|p=Parametry}}}}, które tam są ustawione w sposób ponumerowany, natomiast te tabele zawierają elementy nazwane. Te elementy tych tabel łączymy ze sobą, w ten sposób powstanie wynikowa tabela końcowa. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["ŁączZbioryElementówNazwanychDwóchTabel"]=function(tabela1,tabela2)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów| | 1 = {{Code|args}} | _1 = Tablica elementów będących elementami. }} Przykłady użycia: <syntaxhighlight lang="lua"> local tabela1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",}; local tabela2={["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",}; local parametry_modul=require("Module:Parametry"); local tabela_polaczona=parametry_modul["ŁączZbioryElementówNazwanychDwóchTabel"](tabela1,tabela2); </syntaxhighlight> Uzyskaną tabelą w wyniku wywołania tej funkcji jest: <syntaxhighlight lang="lua"> local tabela_polaczona={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",}; </syntaxhighlight> == {{Code|p["ŁączZbioryNumerowanychElementówNienazwanychTabel"]}} == Funkcja wykorzystuje: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Funkcja łączy ponumerowane elementy tabel, tabel nazwanych liczbami naturalnymi, które są pod zmienną {{Code|args}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["ŁączZbioryNumerowanychElementówNienazwanychTabel"]=function(args) local parametry_modul=require("Module:Parametry"); local args2={CzyPairsTablic=true,["CzyPairsElementówTablic"]=false,CzyNazwaneElementyTabel=false,CzyTylkoNazwaneElementyTabel=false,}; return parametry_modul["ŁączTabele"](args,args2); end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów| | 1 = {{Code|args}} | _1 = Tablica elementów będących elementami. }} Przykłady użycia: <syntaxhighlight lang="lua"> local tabela1={"wartość1","wartość2","wartość3","wartość4",}; local tabela2={"wartość5","wartość6","wartość7","wartość8","wartość9",}; local tabela3={"wartość10","wartość11","wartość12",}; local args={[2]=tabela1,[10]=tabela2,[13]=tabela3,}; local parametry_modul=require("Module:Parametry"); local tabela_polaczona=parametry_modul["ŁączZbioryNumerowanychElementówNienazwanychTabel"](args); </syntaxhighlight> Uzyskaną tabelą w wyniku wywołania tej funkcji: <syntaxhighlight lang="lua"> local tabela_polaczona={"wartość1","wartość2","wartość3","wartość4","wartość10","wartość11","wartość12","wartość5","wartość6","wartość17","wartość8","wartość9",}; </syntaxhighlight> == {{Code|p["ŁączZbioryNienazwanychElementówNienazwanychTabel"]}} == Funkcja wykorzystuje: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Funkcja łączy nazwane tylko liczbami naturalnymi elementy tabel, tabel nazwanych liczbami naturalnymi. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["ŁączZbioryNienazwanychElementówNienazwanychTabel"]=function(args) local parametry_modul=require("Module:Parametry"); local args2={CzyPairsTablic=true,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=false,CzyTylkoNazwaneElementyTabel=false,}; return parametry_modul["ŁączTabele"](args,args2); end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów| | 1 = {{Code|args}} | _1 = Tablica elementów będących elementami. }} Przykłady użycia: <syntaxhighlight lang="lua"> local tabela1={[2]="wartość1",[4]="wartość2",[7]="wartość3",[8]="wartość4",}; local tabela2={[3]="wartość5",[10]="wartość6",[12]="wartość7",[15]="wartość8",[16]="wartość9",}; local tabela3={[1]="wartość10",[7]="wartość11",[9]="wartość12",}; local args={[2]=tabela1,[10]=tabela2,[13]=tabela3,}; local parametry_modul=require("Module:Parametry"); local tabela_polaczona=parametry_modul["ŁączZbioryNienazwanychElementówNienazwanychTabel"](args); </syntaxhighlight> Uzyskaną tabelą w wyniku wywołania tej funkcji: <syntaxhighlight lang="lua"> local tabela_polaczona={"wartość4","wartość1","wartość2","wartość3","wartość10","wartość11","wartość12","wartość8","wartość5","wartość7","wartość9","wartość6",}; </syntaxhighlight> == {{Code|p["ŁączZbioryNazwanychElementówNienazwanychTabel"]}} == Funkcja wykorzystuje: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Funkcja łączy tylko elementy nazwane tabel, tabel określonych liczbami naturalnymi, które są pod zmienną {{Code|args}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["ŁączZbioryNazwanychElementówNienazwanychTabel"]=function(args) local parametry_modul=require("Module:Parametry"); local args2={CzyPairsTablic=true,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=true,CzyTylkoNazwaneElementyTabel=true,}; return parametry_modul["ŁączTabele"](args,args2); end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów| | 1 = {{Code|args}} | _1 = Tablica elementów będących elementami. }} Przykłady użycia: <syntaxhighlight lang="lua"> local tabela1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",}; local tabela2={["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",}; local tabela3={["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",}; local args={[2]=tabela1,[10]=tabela2,[13]=tabela3,}; local parametry_modul=require("Module:Parametry"); local tabela_polaczona=parametry_modul["ŁączZbioryNazwanychElementówNienazwanychTabel"](args); </syntaxhighlight> Uzyskaną tabelą w wyniku wywołania tej funkcji jest: <syntaxhighlight lang="lua"> local tabela_polaczona={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",}; </syntaxhighlight> == {{Code|p["ŁączZbioryNumerowanychElementówNumerowanychTabel"]}} == Funkcja wykorzystuje: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Funkcja łączy elementy ponumerowane tabel, tabel ponumerowanych liczbami naturalnymi, które są pod zmienną {{Code|args}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["ŁączZbioryNumerowanychElementówNumerowanychTabel"]=function(args) local parametry_modul=require("Module:Parametry"); local args2={CzyPairsTablic=false,["CzyPairsElementówTablic"]=false,CzyNazwaneElementyTabel=false,CzyTylkoNazwaneElementyTabel=false,}; return parametry_modul["ŁączTabele"](args,args2); end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów| | 1 = {{Code|args}} | _1 = Tablica elementów będących elementami. }} Przykłady użycia: <syntaxhighlight lang="lua"> local tabela1={"wartość1","wartość2","wartość3","wartość4",}; local tabela2={"wartość5","wartość6","wartość7","wartość8","wartość9",}; local tabela3={"wartość10","wartość11","wartość12",}; local args={tabela1,tabela2,tabela3,}; local parametry_modul=require("Module:Parametry"); local tabela_polaczona=parametry_modul["ŁączZbioryNumerowanychElementówNumerowanychTabel"](args); </syntaxhighlight> Uzyskaną tabelą w wyniku wywołania tej funkcji jest: <syntaxhighlight lang="lua"> local tabela_polaczona={"wartość1","wartość2","wartość3","wartość4","wartość5","wartość6","wartość7","wartość8","wartość9","wartość10","wartość11","wartość12",}; </syntaxhighlight> == {{Code|p["ŁączZbioryNienazwanychElementówNumerowanychTabel"]}} == Funkcja wykorzystuje: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Funkcja łączy elementy nazwane tylko liczbami naturalnymi tabel, tabel ponumerowanych, które są pod zmienną {{Code|args}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["ŁączZbioryNienazwanychElementówNumerowanychTabel"]=function(args) local parametry_modul=require("Module:Parametry"); local args2={CzyPairsTablic=false,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=false,CzyTylkoNazwaneElementyTabel=false,}; return parametry_modul["ŁączTabele"](args,args2); end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów| | 1 = {{Code|args}} | _1 = Tablica elementów będących elementami. }} Przykładem działania funkcji jest: <syntaxhighlight lang="lua"> local tabela1={[2]="wartość1",[4]="wartość2",[7]="wartość3",[8]="wartość4",}; local tabela2={[3]="wartość5",[10]="wartość6",[12]="wartość7",[15]="wartość8",[16]="wartość9",}; local tabela3={[1]="wartość10",[7]="wartość11",[9]="wartość12",}; local args={tabela1,tabela2,tabela3,}; local parametry_modul=require("Module:Parametry"); local tabela_polaczona=parametry_modul["ŁączZbioryNienazwanychElementówNumerowanychTabel"](args); </syntaxhighlight> Uzyskaną tabelą w wyniku wywołania tej funkcji jest: <syntaxhighlight lang="lua"> local tabela_polaczona={"wartość4","wartość1","wartość2","wartość3","wartość8","wartość5","wartość7","wartość9","wartość6","wartość10","wartość11","wartość12",}; </syntaxhighlight> == {{Code|p["ŁączZbioryNazwanychElementówNumerowanychTabel"]}} == Funkcja wykorzystuje: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Te tabele są łączone w pewien ściśle określony sposób. Funkcja łączy tylko elementy nazwane tabel, tabel ponumerowanych, które są pod zmienną {{Code|args}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["ŁączZbioryNazwanychElementówNumerowanychTabel"]=function(args) local parametry_modul=require("Module:Parametry"); local args2={CzyPairsTablic=false,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=true,CzyTylkoNazwaneElementyTabel=true,}; return parametry_modul["ŁączTabele"](args,args2); end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów| | 1 = {{Code|args}} | _1 = Tablica elementów będących elementami. }} Przykładem działania funkcji: <syntaxhighlight lang="lua"> local tabela1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",}; local tabela2={["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",}; local tabela3={["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",}; local args={tabela1,tabela2,tabela3,}; local parametry_modul=require("Module:Parametry"); local tabela_polaczona=parametry_modul["ŁączZbioryNazwanychElementówNumerowanychTabel"](args); </syntaxhighlight> Uzyskaną tabelą w wyniku wywołania tej funkcji jest: <syntaxhighlight lang="lua"> local tabela_polaczona={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",}; </syntaxhighlight> == {{Code|p["ŁączNumerowaneTabele"]}} == Funkcja wykorzystuje: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Te tabele są łączone dokładnie w taki sposób, aby elementy się nie powtarzały, i elementy w nowo powstałej tabeli są powtórzeniem elementów w podanych tabeli z dokładnościa do tej informacji. Funkcja łączy tabele ponumerowane, które są pod zmienną {{Code|args}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["ŁączNumerowaneTabele"]=function(args) local parametry_modul=require("Module:Parametry"); local args2={CzyPairsTablic=false,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=true,CzyTylkoNazwaneElementyTabel=false,NazwijElementyNumerowane=true,}; return parametry_modul["ŁączTabele"](args,args2); end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów| | 1 = {{Code|args}} | _1 = Tablica elementów będących elementami. }} Przykładem działania funkcji jest: <syntaxhighlight lang="lua"> local tabela1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",[2]="wartość13",[4]="wartość14",[7]="wartość15",[8]="wartość16",}; local tabela2={["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",[3]="wartość17",[10]="wartość18",[12]="wartość19",[15]="wartość20",[16]="wartość21",}; local tabela3={["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",[1]="wartość22",[7]="wartość23",[9]="wartość24",}; local args={tabela1,tabela2,tabela3,}; local parametry_modul=require("Module:Parametry"); local tabela_polaczona=parametry_modul["ŁączNumerowaneTabele"](args); </syntaxhighlight> Uzyskaną tabelą w wyniku wywołania tej funkcji jest: <syntaxhighlight lang="lua"> local tabela_polaczona={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",[2]="wartość13",[4]="wartość14",[7]="wartość15",[8]="wartość16",[3]="wartość17",[10]="wartość18",[12]="wartość19",[15]="wartość20",[16]="wartość21",[1]="wartość22",[7]="wartość23",[9]="wartość24",}; </syntaxhighlight> == {{Code|p["ŁączNienazwaneTabele"]}} == Funkcja wykorzystuje: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Te tabele są łączone dokładnie w taki sposób, aby elementy się nie powtarzały, i elementy w nowo powstałej tabeli są powtórzeniem elementów w podanych tabeli z dokładnościa do tej informacji. Funkcja łączy tabele określone liczbami naturalnymi, które są pod zmienną {{Code|args}}. Definicja skrótowa fukcji: <syntaxhighlight lang="lua"> p["ŁączNienazwaneTabele"]=function(args) local parametry_modul=require("Module:Parametry"); local args2={CzyPairsTablic=true,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=true,CzyTylkoNazwaneElementyTabel=false,NazwijElementyNumerowane=true,}; return parametry_modul["ŁączTabele"](args,args2); end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów| | 1 = {{Code|args}} | _1 = Tablica elementów będących elementami. }} Przykładem działania funkcji jest: <syntaxhighlight lang="lua"> local tabela1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",[2]="wartość13",[4]="wartość14",[7]="wartość15",[8]="wartość16",}; local tabela2={["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",[3]="wartość17",[10]="wartość18",[12]="wartość19",[15]="wartość20",[16]="wartość21",}; local tabela3={["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",[1]="wartość22",[7]="wartość23",[9]="wartość24",}; local args={[2]=tabela1,[10]=tabela2,[13]=tabela3,}; local parametry_modul=require("Module:Parametry"); local tabela_polaczona=parametry_modul["ŁączNienazwaneTabele"](args); </syntaxhighlight> Uzyskaną tabelą w wyniku wywołania tej funkcji jest: <syntaxhighlight lang="lua"> local tabela_polaczona={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",[2]="wartość13",[4]="wartość14",[7]="wartość15",[8]="wartość16",[3]="wartość17",[10]="wartość18",[12]="wartość19",[15]="wartość20",[16]="wartość21",[1]="wartość22",[9]="wartość24",}; </syntaxhighlight> == {{Code|p["ŁączTabele"]}} == Funkcja łączy tabele ogólnie nazwane, określone w tablicy: {{Code|args2}}, względem parametrów określonych w tablicy {{Code|args2}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["ŁączTabele"] = function(args,args2)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów| | 1 = {{Code|args}} | _1 = Tabela elementów będących tabelami. | 2 = {{Code|args2}} | _2 = Tablica z kluczami o wartościach {{Code|true}}, jeśli to ustawienie włączone, w przeciwnym wypadku wyłączone. }} Funkcja łączy jedynie tabele ponumerowane liczbami naturalnymi, czy to w sposób nienazwany, też za pomocą tych liczb, ale wtedy numeracja nie musi być od jedynki i ona może mieć przerwy. Parametry (elementy) tabeli {{Code|args2}} są: {{OpisParametrów | 1 = {{Code|args2.CzyPairsTablic}} | _1 = Jeśli prawdziwa, to określa nazwane elementy tabel w tabeli, w przeciwnym wypadku numerowane. | 2 = {{Code|args2["CzyPairsElementówTablic"]}} | _2 = Jeśli prawdziwa, to określa nazwane elementy poszczególnych tabel w tablicy ogólnie nazwanej, w przeciwnym wypadku numerowane. | 3 = {{Code|args2.CzyNazwaneElementyTabel}} | _3 = Jeśli prawdziwe, łączy nazwane elementy tabel, mogą być określone liczbami naturalnymi, lub nie, w jedną tablicę. | 4 = {{Code|args2.CzyTylkoNazwaneElementyTabel}} | _4 = Jeśli niepuste, łączy tylko nazwane elementy tabel. | 5 = {{Code|args2.NazwijElementyNumerowane}} | _5 = Jeśli prawdziwe, to wśród elementów nienazwanych elementy numerowane traktuje je, jako nazwane, w przeciwnym wypadku takie elementy dodaje do zbioru elementów numerowanych łączonych tablic. }} Funkcje łączenia tabel w przweróźny sposób, zdefiniowane w: {{OpisParametrów | 1 = {{Code|{{sr|#p["ŁączZbioryNumerowanychElementówNienazwanychTabel"]|p=Parametry}}}} | _1 = Łączy ponumerowane elementy tabel, tabel nazwanych liczbami naturalnymi. | 2 = {{Code|{{sr|#p["ŁączZbioryNienazwanychElementówNienazwanychTabel"]|p=Parametry}}}} | _2 = Łaczy nazwane tylko liczbami naturalnymi elementy tabel, tabel nazwanych liczbami naturalnymi. | 3 = {{Code|{{sr|#p["ŁączZbioryNazwanychElementówNienazwanychTabel"]|p=Parametry}}}} | _3 = Łączy tylko elementy nazwane tabel, tabel określonych liczbami naturalnymi. | 4 = {{Code|{{sr|#p["ŁączZbioryNumerowanychElementówNumerowanychTabel"]|p=Parametry}}}} | _4 = Łączy elementy ponumerowane tabel, tabel ponumerowanych liczbami naturalnymi. | 5 = {{Code|{{sr|#p["ŁączZbioryNienazwanychElementówNumerowanychTabel"]|p=Parametry}}}} | _5 = Łączy elementy nazwane tylko liczbami naturalnymi tabel, tabel ponumerowanych. | 6 = {{Code|{{sr|#p["ŁączZbioryNazwanychElementówNumerowanychTabel"]|p=Parametry}}}} | _6 = Łączy tylko elementy nazwane tabel, tabel ponumerowanych. }} Powyższe funkcje elementy nienazwane łączy w zbiory, ale nie jako elementy nazwane, tylko jako ponumerowane. {{Hr}} {{OpisParametrów | 1 = {{Code|{{sr|#p["ŁączNumerowaneTabele"]|p=Parametry}}}} | _1 = Łączy tabele ponumerowane,. | 2 = {{Code|{{sr|#p["ŁączNienazwaneTabele"]|p=Parametry}}}} | _2 = Łączy tabele określone liczbami naturalnymi. }} Powyższe funkcje łączą w sposób dokładny wiele tabel, niezależnie z jak nazwanymi elementami, te nazwane jest nie tylko określone liczbami naturalnymi (one nie muszą być ponumerowane), ale też łańcuchami. {{Hr}} Działanie tych funkcji w powyższej wyliczance można rozszyfrować na podstawie ich nazw podanych w nawiasach kwadratowych w cudzysłowach. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> s2n38d60xzs4ea9w5tnfqzje9vwspdi 555676 555672 2026-09-11T13:14:24Z Persino 2851 /* {{Code|p["ŁączTabele"]}} */ 555676 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} Są tutaj przedstawione funkcje łączenia wielu tabel. == {{Code|p["ŁączDwieTabele"]}} == Funkcja łączy dwie tabele przy pomocy: {{Code|{{sr|#p["ŁączNumerowaneTabele"]|p=Parametry}}}}, które tam są ustawione w sposób ponumerowany, natomiast te tabele zawierają elementy nazwane jak i nienazwane. Te elementy tych tabel łączymy ze sobą, w ten sposób powstanie wynikowa tabela końcowa. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["ŁączDwieTabele"]=function(tabela1,tabela2)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów| | 1 = {{Code|tabela1}} i {{Code|tabela2}} | _1 = tabele do połączenia w jedną tablicę. }} Przykłady użycia: <syntaxhighlight lang="lua"> local tabela1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",[2]="wartość13",[4]="wartość14",[7]="wartość15",[8]="wartość16",}; local tabela2={["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",[3]="wartość17",[10]="wartość18",[12]="wartość19",[15]="wartość20",[16]="wartość21",}; local parametry_modul=require("Module:Parametry"); local tabela_polaczona=parametry_modul["ŁączDwieTabele"](tabela1,tabela2); </syntaxhighlight> Uzyskaną tabelą w wyniku wywołania tej funkcji jest: <syntaxhighlight lang="lua"> local tabela_polaczona={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",[2]="wartość13",[4]="wartość14",[7]="wartość15",[8]="wartość16",[3]="wartość17",[10]="wartość18",[12]="wartość19",[15]="wartość20",[16]="wartość21",}; </syntaxhighlight> == {{Code|p["ŁączZbioryElementówNumerowanychDwóchTabel"]}} == Funkcja łączy dwie tabele przy pomocy: {{Code|{{sr|#p["ŁączZbioryNumerowanychElementówNumerowanychTabel"]|p=Parametry}}}}, które tam są ustawione w sposób ponumerowany, natomiast te tabele zawierają elementy ponumerowane. Te elementy tych tabel łączymy ze sobą, w ten sposób powstanie wynikowa tabela końcowa. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["ŁączZbioryElementówNumerowanychDwóchTabel"]=function(tabela1,tabela2)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów| | 1 = {{Code|tabela1}}, {{Code|tabela2}} | _1 = Tabele do połączenia w jedną tablicę. }} Przykładem działania funkcji jest: <syntaxhighlight lang="lua"> local tabela1={"wartość1","wartość2","wartość3","wartość4",}; local tabela2={"wartość5","wartość6","wartość7","wartość8","wartość9",}; local parametry_modul=require("Module:Parametry"); local tabela_polaczona=parametry_modul["ŁączZbioryElementówNumerowanychDwóchTabel"](tabela1,tabela2); </syntaxhighlight> Uzyskaną tabelą w wyniku wywołania tej funkcji jest: <syntaxhighlight lang="lua"> local tabela_polaczona={"wartość1","wartość2","wartość3","wartość4","wartość5","wartość6","wartość7","wartość8","wartość9",}; </syntaxhighlight> == {{Code|p["ŁączZbioryElementówNienazwanychDwóchTabel"]}} == Funkcja łączy dwie tabele przy pomocy: {{Code|{{sr|#p["ŁączZbioryNienazwanychElementówNumerowanychTabel"]|p=Parametry}}}}, które tam są ustawione w sposób ponumerowany, natomiast te tabele zawierają elementy nienazwane. Te elementy tych tabel łączymy ze sobą, w ten sposób powstanie wynikowa tabela końcowa. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["ŁączZbioryElementówNienazwanychDwóchTabel"]=function(tabela1,tabela2)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów| | 1 = {{Code|tabela1}}, {{Code|tabela2}} | _1 = Tabele do połączenia w jedną tablicę. }} Przykłady użycia: <syntaxhighlight lang="lua"> local tabela1={[2]="wartość1",[4]="wartość2",[7]="wartość3",[8]="wartość4",}; local tabela2={[3]="wartość5",[10]="wartość6",[12]="wartość7",[15]="wartość8",[16]="wartość9",}; local parametry_modul=require("Module:Parametry"); local tabela_polaczona=parametry_modul["ŁączZbioryElementówNienazwanychDwóchTabel"](tabela1,tabela2); </syntaxhighlight> Uzyskaną tabelą w wyniku wywołania tej funkcji jest: <syntaxhighlight lang="lua"> local tabela_polaczona={"wartość4","wartość1","wartość2","wartość3","wartość8","wartość5","wartość7","wartość9","wartość6",}; </syntaxhighlight> == {{Code|p["ŁączZbioryElementówNazwanychDwóchTabel"]}} == Funkcja łączy dwie tabele przy pomocy: {{Code|{{sr|#p["ŁączZbioryNazwanychElementówNumerowanychTabel"]|p=Parametry}}}}, które tam są ustawione w sposób ponumerowany, natomiast te tabele zawierają elementy nazwane. Te elementy tych tabel łączymy ze sobą, w ten sposób powstanie wynikowa tabela końcowa. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["ŁączZbioryElementówNazwanychDwóchTabel"]=function(tabela1,tabela2)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów| | 1 = {{Code|args}} | _1 = Tablica elementów będących elementami. }} Przykłady użycia: <syntaxhighlight lang="lua"> local tabela1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",}; local tabela2={["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",}; local parametry_modul=require("Module:Parametry"); local tabela_polaczona=parametry_modul["ŁączZbioryElementówNazwanychDwóchTabel"](tabela1,tabela2); </syntaxhighlight> Uzyskaną tabelą w wyniku wywołania tej funkcji jest: <syntaxhighlight lang="lua"> local tabela_polaczona={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",}; </syntaxhighlight> == {{Code|p["ŁączZbioryNumerowanychElementówNienazwanychTabel"]}} == Funkcja wykorzystuje: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Funkcja łączy ponumerowane elementy tabel, tabel nazwanych liczbami naturalnymi, które są pod zmienną {{Code|args}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["ŁączZbioryNumerowanychElementówNienazwanychTabel"]=function(args) local parametry_modul=require("Module:Parametry"); local args2={CzyPairsTablic=true,["CzyPairsElementówTablic"]=false,CzyNazwaneElementyTabel=false,CzyTylkoNazwaneElementyTabel=false,}; return parametry_modul["ŁączTabele"](args,args2); end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów| | 1 = {{Code|args}} | _1 = Tablica elementów będących elementami. }} Przykłady użycia: <syntaxhighlight lang="lua"> local tabela1={"wartość1","wartość2","wartość3","wartość4",}; local tabela2={"wartość5","wartość6","wartość7","wartość8","wartość9",}; local tabela3={"wartość10","wartość11","wartość12",}; local args={[2]=tabela1,[10]=tabela2,[13]=tabela3,}; local parametry_modul=require("Module:Parametry"); local tabela_polaczona=parametry_modul["ŁączZbioryNumerowanychElementówNienazwanychTabel"](args); </syntaxhighlight> Uzyskaną tabelą w wyniku wywołania tej funkcji: <syntaxhighlight lang="lua"> local tabela_polaczona={"wartość1","wartość2","wartość3","wartość4","wartość10","wartość11","wartość12","wartość5","wartość6","wartość17","wartość8","wartość9",}; </syntaxhighlight> == {{Code|p["ŁączZbioryNienazwanychElementówNienazwanychTabel"]}} == Funkcja wykorzystuje: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Funkcja łączy nazwane tylko liczbami naturalnymi elementy tabel, tabel nazwanych liczbami naturalnymi. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["ŁączZbioryNienazwanychElementówNienazwanychTabel"]=function(args) local parametry_modul=require("Module:Parametry"); local args2={CzyPairsTablic=true,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=false,CzyTylkoNazwaneElementyTabel=false,}; return parametry_modul["ŁączTabele"](args,args2); end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów| | 1 = {{Code|args}} | _1 = Tablica elementów będących elementami. }} Przykłady użycia: <syntaxhighlight lang="lua"> local tabela1={[2]="wartość1",[4]="wartość2",[7]="wartość3",[8]="wartość4",}; local tabela2={[3]="wartość5",[10]="wartość6",[12]="wartość7",[15]="wartość8",[16]="wartość9",}; local tabela3={[1]="wartość10",[7]="wartość11",[9]="wartość12",}; local args={[2]=tabela1,[10]=tabela2,[13]=tabela3,}; local parametry_modul=require("Module:Parametry"); local tabela_polaczona=parametry_modul["ŁączZbioryNienazwanychElementówNienazwanychTabel"](args); </syntaxhighlight> Uzyskaną tabelą w wyniku wywołania tej funkcji: <syntaxhighlight lang="lua"> local tabela_polaczona={"wartość4","wartość1","wartość2","wartość3","wartość10","wartość11","wartość12","wartość8","wartość5","wartość7","wartość9","wartość6",}; </syntaxhighlight> == {{Code|p["ŁączZbioryNazwanychElementówNienazwanychTabel"]}} == Funkcja wykorzystuje: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Funkcja łączy tylko elementy nazwane tabel, tabel określonych liczbami naturalnymi, które są pod zmienną {{Code|args}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["ŁączZbioryNazwanychElementówNienazwanychTabel"]=function(args) local parametry_modul=require("Module:Parametry"); local args2={CzyPairsTablic=true,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=true,CzyTylkoNazwaneElementyTabel=true,}; return parametry_modul["ŁączTabele"](args,args2); end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów| | 1 = {{Code|args}} | _1 = Tablica elementów będących elementami. }} Przykłady użycia: <syntaxhighlight lang="lua"> local tabela1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",}; local tabela2={["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",}; local tabela3={["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",}; local args={[2]=tabela1,[10]=tabela2,[13]=tabela3,}; local parametry_modul=require("Module:Parametry"); local tabela_polaczona=parametry_modul["ŁączZbioryNazwanychElementówNienazwanychTabel"](args); </syntaxhighlight> Uzyskaną tabelą w wyniku wywołania tej funkcji jest: <syntaxhighlight lang="lua"> local tabela_polaczona={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",}; </syntaxhighlight> == {{Code|p["ŁączZbioryNumerowanychElementówNumerowanychTabel"]}} == Funkcja wykorzystuje: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Funkcja łączy elementy ponumerowane tabel, tabel ponumerowanych liczbami naturalnymi, które są pod zmienną {{Code|args}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["ŁączZbioryNumerowanychElementówNumerowanychTabel"]=function(args) local parametry_modul=require("Module:Parametry"); local args2={CzyPairsTablic=false,["CzyPairsElementówTablic"]=false,CzyNazwaneElementyTabel=false,CzyTylkoNazwaneElementyTabel=false,}; return parametry_modul["ŁączTabele"](args,args2); end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów| | 1 = {{Code|args}} | _1 = Tablica elementów będących elementami. }} Przykłady użycia: <syntaxhighlight lang="lua"> local tabela1={"wartość1","wartość2","wartość3","wartość4",}; local tabela2={"wartość5","wartość6","wartość7","wartość8","wartość9",}; local tabela3={"wartość10","wartość11","wartość12",}; local args={tabela1,tabela2,tabela3,}; local parametry_modul=require("Module:Parametry"); local tabela_polaczona=parametry_modul["ŁączZbioryNumerowanychElementówNumerowanychTabel"](args); </syntaxhighlight> Uzyskaną tabelą w wyniku wywołania tej funkcji jest: <syntaxhighlight lang="lua"> local tabela_polaczona={"wartość1","wartość2","wartość3","wartość4","wartość5","wartość6","wartość7","wartość8","wartość9","wartość10","wartość11","wartość12",}; </syntaxhighlight> == {{Code|p["ŁączZbioryNienazwanychElementówNumerowanychTabel"]}} == Funkcja wykorzystuje: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Funkcja łączy elementy nazwane tylko liczbami naturalnymi tabel, tabel ponumerowanych, które są pod zmienną {{Code|args}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["ŁączZbioryNienazwanychElementówNumerowanychTabel"]=function(args) local parametry_modul=require("Module:Parametry"); local args2={CzyPairsTablic=false,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=false,CzyTylkoNazwaneElementyTabel=false,}; return parametry_modul["ŁączTabele"](args,args2); end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów| | 1 = {{Code|args}} | _1 = Tablica elementów będących elementami. }} Przykładem działania funkcji jest: <syntaxhighlight lang="lua"> local tabela1={[2]="wartość1",[4]="wartość2",[7]="wartość3",[8]="wartość4",}; local tabela2={[3]="wartość5",[10]="wartość6",[12]="wartość7",[15]="wartość8",[16]="wartość9",}; local tabela3={[1]="wartość10",[7]="wartość11",[9]="wartość12",}; local args={tabela1,tabela2,tabela3,}; local parametry_modul=require("Module:Parametry"); local tabela_polaczona=parametry_modul["ŁączZbioryNienazwanychElementówNumerowanychTabel"](args); </syntaxhighlight> Uzyskaną tabelą w wyniku wywołania tej funkcji jest: <syntaxhighlight lang="lua"> local tabela_polaczona={"wartość4","wartość1","wartość2","wartość3","wartość8","wartość5","wartość7","wartość9","wartość6","wartość10","wartość11","wartość12",}; </syntaxhighlight> == {{Code|p["ŁączZbioryNazwanychElementówNumerowanychTabel"]}} == Funkcja wykorzystuje: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Te tabele są łączone w pewien ściśle określony sposób. Funkcja łączy tylko elementy nazwane tabel, tabel ponumerowanych, które są pod zmienną {{Code|args}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["ŁączZbioryNazwanychElementówNumerowanychTabel"]=function(args) local parametry_modul=require("Module:Parametry"); local args2={CzyPairsTablic=false,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=true,CzyTylkoNazwaneElementyTabel=true,}; return parametry_modul["ŁączTabele"](args,args2); end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów| | 1 = {{Code|args}} | _1 = Tablica elementów będących elementami. }} Przykładem działania funkcji: <syntaxhighlight lang="lua"> local tabela1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",}; local tabela2={["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",}; local tabela3={["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",}; local args={tabela1,tabela2,tabela3,}; local parametry_modul=require("Module:Parametry"); local tabela_polaczona=parametry_modul["ŁączZbioryNazwanychElementówNumerowanychTabel"](args); </syntaxhighlight> Uzyskaną tabelą w wyniku wywołania tej funkcji jest: <syntaxhighlight lang="lua"> local tabela_polaczona={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",}; </syntaxhighlight> == {{Code|p["ŁączNumerowaneTabele"]}} == Funkcja wykorzystuje: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Te tabele są łączone dokładnie w taki sposób, aby elementy się nie powtarzały, i elementy w nowo powstałej tabeli są powtórzeniem elementów w podanych tabeli z dokładnościa do tej informacji. Funkcja łączy tabele ponumerowane, które są pod zmienną {{Code|args}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["ŁączNumerowaneTabele"]=function(args) local parametry_modul=require("Module:Parametry"); local args2={CzyPairsTablic=false,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=true,CzyTylkoNazwaneElementyTabel=false,NazwijElementyNumerowane=true,}; return parametry_modul["ŁączTabele"](args,args2); end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów| | 1 = {{Code|args}} | _1 = Tablica elementów będących elementami. }} Przykładem działania funkcji jest: <syntaxhighlight lang="lua"> local tabela1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",[2]="wartość13",[4]="wartość14",[7]="wartość15",[8]="wartość16",}; local tabela2={["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",[3]="wartość17",[10]="wartość18",[12]="wartość19",[15]="wartość20",[16]="wartość21",}; local tabela3={["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",[1]="wartość22",[7]="wartość23",[9]="wartość24",}; local args={tabela1,tabela2,tabela3,}; local parametry_modul=require("Module:Parametry"); local tabela_polaczona=parametry_modul["ŁączNumerowaneTabele"](args); </syntaxhighlight> Uzyskaną tabelą w wyniku wywołania tej funkcji jest: <syntaxhighlight lang="lua"> local tabela_polaczona={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",[2]="wartość13",[4]="wartość14",[7]="wartość15",[8]="wartość16",[3]="wartość17",[10]="wartość18",[12]="wartość19",[15]="wartość20",[16]="wartość21",[1]="wartość22",[7]="wartość23",[9]="wartość24",}; </syntaxhighlight> == {{Code|p["ŁączNienazwaneTabele"]}} == Funkcja wykorzystuje: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Te tabele są łączone dokładnie w taki sposób, aby elementy się nie powtarzały, i elementy w nowo powstałej tabeli są powtórzeniem elementów w podanych tabeli z dokładnościa do tej informacji. Funkcja łączy tabele określone liczbami naturalnymi, które są pod zmienną {{Code|args}}. Definicja skrótowa fukcji: <syntaxhighlight lang="lua"> p["ŁączNienazwaneTabele"]=function(args) local parametry_modul=require("Module:Parametry"); local args2={CzyPairsTablic=true,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=true,CzyTylkoNazwaneElementyTabel=false,NazwijElementyNumerowane=true,}; return parametry_modul["ŁączTabele"](args,args2); end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów| | 1 = {{Code|args}} | _1 = Tablica elementów będących elementami. }} Przykładem działania funkcji jest: <syntaxhighlight lang="lua"> local tabela1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",[2]="wartość13",[4]="wartość14",[7]="wartość15",[8]="wartość16",}; local tabela2={["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",[3]="wartość17",[10]="wartość18",[12]="wartość19",[15]="wartość20",[16]="wartość21",}; local tabela3={["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",[1]="wartość22",[7]="wartość23",[9]="wartość24",}; local args={[2]=tabela1,[10]=tabela2,[13]=tabela3,}; local parametry_modul=require("Module:Parametry"); local tabela_polaczona=parametry_modul["ŁączNienazwaneTabele"](args); </syntaxhighlight> Uzyskaną tabelą w wyniku wywołania tej funkcji jest: <syntaxhighlight lang="lua"> local tabela_polaczona={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",[2]="wartość13",[4]="wartość14",[7]="wartość15",[8]="wartość16",[3]="wartość17",[10]="wartość18",[12]="wartość19",[15]="wartość20",[16]="wartość21",[1]="wartość22",[9]="wartość24",}; </syntaxhighlight> == {{Code|p["ŁączTabele"]}} == Funkcja łączy tabele ogólnie nazwane, określone w tablicy: {{Code|args2}}, względem parametrów określonych w tablicy {{Code|args2}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["ŁączTabele"] = function(args,args2)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów| | 1 = {{Code|args}} | _1 = Tabela elementów będących tabelami. | 2 = {{Code|args2}} | _2 = Tablica z kluczami o wartościach {{Code|true}}, jeśli to ustawienie włączone, w przeciwnym wypadku wyłączone. }} Funkcja łączy jedynie tabele ponumerowane liczbami naturalnymi, czy to w sposób nienazwany, też za pomocą tych liczb, ale wtedy numeracja nie musi być od jedynki i ona może mieć przerwy. Parametry (elementy) tabeli {{Code|args2}} są: {{OpisParametrów | 1 = {{Code|args2.CzyPairsTablic}} | _1 = Jeśli prawdziwa, to określa nazwane elementy tabel w tabeli, w przeciwnym wypadku numerowane. | 2 = {{Code|args2["CzyPairsElementówTablic"]}} | _2 = Jeśli prawdziwa, to określa nazwane elementy poszczególnych tabel w tablicy ogólnie nazwanej, w przeciwnym wypadku numerowane. | 3 = {{Code|args2.CzyNazwaneElementyTabel}} | _3 = Jeśli prawdziwe, łączy nazwane elementy tabel, mogą być określone liczbami naturalnymi, lub nie, w jedną tablicę. | 4 = {{Code|args2.CzyTylkoNazwaneElementyTabel}} | _4 = Jeśli niepuste, łączy tylko nazwane elementy tabel. | 5 = {{Code|args2.NazwijElementyNumerowane}} | _5 = Jeśli prawdziwe, to wśród elementów nienazwanych elementy numerowane traktuje je, jako nazwane, w przeciwnym wypadku takie elementy dodaje do zbioru elementów numerowanych łączonych tablic. }} Funkcje łączenia tabel w przweróźny sposób, zdefiniowane w: {{OpisParametrów|klasa=Opis-Szerokość | 1 = {{Code|{{sr|#p["ŁączZbioryNumerowanychElementówNienazwanychTabel"]|p=Parametry}}}} | _1 = Łączy ponumerowane elementy tabel, tabel nazwanych liczbami naturalnymi. | 2 = {{Code|{{sr|#p["ŁączZbioryNienazwanychElementówNienazwanychTabel"]|p=Parametry}}}} | _2 = Łaczy nazwane tylko liczbami naturalnymi elementy tabel, tabel nazwanych liczbami naturalnymi. | 3 = {{Code|{{sr|#p["ŁączZbioryNazwanychElementówNienazwanychTabel"]|p=Parametry}}}} | _3 = Łączy tylko elementy nazwane tabel, tabel określonych liczbami naturalnymi. | 4 = {{Code|{{sr|#p["ŁączZbioryNumerowanychElementówNumerowanychTabel"]|p=Parametry}}}} | _4 = Łączy elementy ponumerowane tabel, tabel ponumerowanych liczbami naturalnymi. | 5 = {{Code|{{sr|#p["ŁączZbioryNienazwanychElementówNumerowanychTabel"]|p=Parametry}}}} | _5 = Łączy elementy nazwane tylko liczbami naturalnymi tabel, tabel ponumerowanych. | 6 = {{Code|{{sr|#p["ŁączZbioryNazwanychElementówNumerowanychTabel"]|p=Parametry}}}} | _6 = Łączy tylko elementy nazwane tabel, tabel ponumerowanych. }} Powyższe funkcje elementy nienazwane łączy w zbiory, ale nie jako elementy nazwane, tylko jako ponumerowane. {{Hr}} {{OpisParametrów | 1 = {{Code|{{sr|#p["ŁączNumerowaneTabele"]|p=Parametry}}}} | _1 = Łączy tabele ponumerowane,. | 2 = {{Code|{{sr|#p["ŁączNienazwaneTabele"]|p=Parametry}}}} | _2 = Łączy tabele określone liczbami naturalnymi. }} Powyższe funkcje łączą w sposób dokładny wiele tabel, niezależnie z jak nazwanymi elementami, te nazwane jest nie tylko określone liczbami naturalnymi (one nie muszą być ponumerowane), ale też łańcuchami. {{Hr}} Działanie tych funkcji w powyższej wyliczance można rozszyfrować na podstawie ich nazw podanych w nawiasach kwadratowych w cudzysłowach. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> cas3fuy4fg580mw9bu6fhvr2fjkitn7 555678 555676 2026-09-11T13:15:17Z Persino 2851 /* {{Code|p["ŁączTabele"]}} */ 555678 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} Są tutaj przedstawione funkcje łączenia wielu tabel. == {{Code|p["ŁączDwieTabele"]}} == Funkcja łączy dwie tabele przy pomocy: {{Code|{{sr|#p["ŁączNumerowaneTabele"]|p=Parametry}}}}, które tam są ustawione w sposób ponumerowany, natomiast te tabele zawierają elementy nazwane jak i nienazwane. Te elementy tych tabel łączymy ze sobą, w ten sposób powstanie wynikowa tabela końcowa. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["ŁączDwieTabele"]=function(tabela1,tabela2)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów| | 1 = {{Code|tabela1}} i {{Code|tabela2}} | _1 = tabele do połączenia w jedną tablicę. }} Przykłady użycia: <syntaxhighlight lang="lua"> local tabela1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",[2]="wartość13",[4]="wartość14",[7]="wartość15",[8]="wartość16",}; local tabela2={["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",[3]="wartość17",[10]="wartość18",[12]="wartość19",[15]="wartość20",[16]="wartość21",}; local parametry_modul=require("Module:Parametry"); local tabela_polaczona=parametry_modul["ŁączDwieTabele"](tabela1,tabela2); </syntaxhighlight> Uzyskaną tabelą w wyniku wywołania tej funkcji jest: <syntaxhighlight lang="lua"> local tabela_polaczona={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",[2]="wartość13",[4]="wartość14",[7]="wartość15",[8]="wartość16",[3]="wartość17",[10]="wartość18",[12]="wartość19",[15]="wartość20",[16]="wartość21",}; </syntaxhighlight> == {{Code|p["ŁączZbioryElementówNumerowanychDwóchTabel"]}} == Funkcja łączy dwie tabele przy pomocy: {{Code|{{sr|#p["ŁączZbioryNumerowanychElementówNumerowanychTabel"]|p=Parametry}}}}, które tam są ustawione w sposób ponumerowany, natomiast te tabele zawierają elementy ponumerowane. Te elementy tych tabel łączymy ze sobą, w ten sposób powstanie wynikowa tabela końcowa. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["ŁączZbioryElementówNumerowanychDwóchTabel"]=function(tabela1,tabela2)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów| | 1 = {{Code|tabela1}}, {{Code|tabela2}} | _1 = Tabele do połączenia w jedną tablicę. }} Przykładem działania funkcji jest: <syntaxhighlight lang="lua"> local tabela1={"wartość1","wartość2","wartość3","wartość4",}; local tabela2={"wartość5","wartość6","wartość7","wartość8","wartość9",}; local parametry_modul=require("Module:Parametry"); local tabela_polaczona=parametry_modul["ŁączZbioryElementówNumerowanychDwóchTabel"](tabela1,tabela2); </syntaxhighlight> Uzyskaną tabelą w wyniku wywołania tej funkcji jest: <syntaxhighlight lang="lua"> local tabela_polaczona={"wartość1","wartość2","wartość3","wartość4","wartość5","wartość6","wartość7","wartość8","wartość9",}; </syntaxhighlight> == {{Code|p["ŁączZbioryElementówNienazwanychDwóchTabel"]}} == Funkcja łączy dwie tabele przy pomocy: {{Code|{{sr|#p["ŁączZbioryNienazwanychElementówNumerowanychTabel"]|p=Parametry}}}}, które tam są ustawione w sposób ponumerowany, natomiast te tabele zawierają elementy nienazwane. Te elementy tych tabel łączymy ze sobą, w ten sposób powstanie wynikowa tabela końcowa. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["ŁączZbioryElementówNienazwanychDwóchTabel"]=function(tabela1,tabela2)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów| | 1 = {{Code|tabela1}}, {{Code|tabela2}} | _1 = Tabele do połączenia w jedną tablicę. }} Przykłady użycia: <syntaxhighlight lang="lua"> local tabela1={[2]="wartość1",[4]="wartość2",[7]="wartość3",[8]="wartość4",}; local tabela2={[3]="wartość5",[10]="wartość6",[12]="wartość7",[15]="wartość8",[16]="wartość9",}; local parametry_modul=require("Module:Parametry"); local tabela_polaczona=parametry_modul["ŁączZbioryElementówNienazwanychDwóchTabel"](tabela1,tabela2); </syntaxhighlight> Uzyskaną tabelą w wyniku wywołania tej funkcji jest: <syntaxhighlight lang="lua"> local tabela_polaczona={"wartość4","wartość1","wartość2","wartość3","wartość8","wartość5","wartość7","wartość9","wartość6",}; </syntaxhighlight> == {{Code|p["ŁączZbioryElementówNazwanychDwóchTabel"]}} == Funkcja łączy dwie tabele przy pomocy: {{Code|{{sr|#p["ŁączZbioryNazwanychElementówNumerowanychTabel"]|p=Parametry}}}}, które tam są ustawione w sposób ponumerowany, natomiast te tabele zawierają elementy nazwane. Te elementy tych tabel łączymy ze sobą, w ten sposób powstanie wynikowa tabela końcowa. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["ŁączZbioryElementówNazwanychDwóchTabel"]=function(tabela1,tabela2)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów| | 1 = {{Code|args}} | _1 = Tablica elementów będących elementami. }} Przykłady użycia: <syntaxhighlight lang="lua"> local tabela1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",}; local tabela2={["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",}; local parametry_modul=require("Module:Parametry"); local tabela_polaczona=parametry_modul["ŁączZbioryElementówNazwanychDwóchTabel"](tabela1,tabela2); </syntaxhighlight> Uzyskaną tabelą w wyniku wywołania tej funkcji jest: <syntaxhighlight lang="lua"> local tabela_polaczona={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",}; </syntaxhighlight> == {{Code|p["ŁączZbioryNumerowanychElementówNienazwanychTabel"]}} == Funkcja wykorzystuje: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Funkcja łączy ponumerowane elementy tabel, tabel nazwanych liczbami naturalnymi, które są pod zmienną {{Code|args}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["ŁączZbioryNumerowanychElementówNienazwanychTabel"]=function(args) local parametry_modul=require("Module:Parametry"); local args2={CzyPairsTablic=true,["CzyPairsElementówTablic"]=false,CzyNazwaneElementyTabel=false,CzyTylkoNazwaneElementyTabel=false,}; return parametry_modul["ŁączTabele"](args,args2); end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów| | 1 = {{Code|args}} | _1 = Tablica elementów będących elementami. }} Przykłady użycia: <syntaxhighlight lang="lua"> local tabela1={"wartość1","wartość2","wartość3","wartość4",}; local tabela2={"wartość5","wartość6","wartość7","wartość8","wartość9",}; local tabela3={"wartość10","wartość11","wartość12",}; local args={[2]=tabela1,[10]=tabela2,[13]=tabela3,}; local parametry_modul=require("Module:Parametry"); local tabela_polaczona=parametry_modul["ŁączZbioryNumerowanychElementówNienazwanychTabel"](args); </syntaxhighlight> Uzyskaną tabelą w wyniku wywołania tej funkcji: <syntaxhighlight lang="lua"> local tabela_polaczona={"wartość1","wartość2","wartość3","wartość4","wartość10","wartość11","wartość12","wartość5","wartość6","wartość17","wartość8","wartość9",}; </syntaxhighlight> == {{Code|p["ŁączZbioryNienazwanychElementówNienazwanychTabel"]}} == Funkcja wykorzystuje: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Funkcja łączy nazwane tylko liczbami naturalnymi elementy tabel, tabel nazwanych liczbami naturalnymi. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["ŁączZbioryNienazwanychElementówNienazwanychTabel"]=function(args) local parametry_modul=require("Module:Parametry"); local args2={CzyPairsTablic=true,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=false,CzyTylkoNazwaneElementyTabel=false,}; return parametry_modul["ŁączTabele"](args,args2); end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów| | 1 = {{Code|args}} | _1 = Tablica elementów będących elementami. }} Przykłady użycia: <syntaxhighlight lang="lua"> local tabela1={[2]="wartość1",[4]="wartość2",[7]="wartość3",[8]="wartość4",}; local tabela2={[3]="wartość5",[10]="wartość6",[12]="wartość7",[15]="wartość8",[16]="wartość9",}; local tabela3={[1]="wartość10",[7]="wartość11",[9]="wartość12",}; local args={[2]=tabela1,[10]=tabela2,[13]=tabela3,}; local parametry_modul=require("Module:Parametry"); local tabela_polaczona=parametry_modul["ŁączZbioryNienazwanychElementówNienazwanychTabel"](args); </syntaxhighlight> Uzyskaną tabelą w wyniku wywołania tej funkcji: <syntaxhighlight lang="lua"> local tabela_polaczona={"wartość4","wartość1","wartość2","wartość3","wartość10","wartość11","wartość12","wartość8","wartość5","wartość7","wartość9","wartość6",}; </syntaxhighlight> == {{Code|p["ŁączZbioryNazwanychElementówNienazwanychTabel"]}} == Funkcja wykorzystuje: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Funkcja łączy tylko elementy nazwane tabel, tabel określonych liczbami naturalnymi, które są pod zmienną {{Code|args}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["ŁączZbioryNazwanychElementówNienazwanychTabel"]=function(args) local parametry_modul=require("Module:Parametry"); local args2={CzyPairsTablic=true,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=true,CzyTylkoNazwaneElementyTabel=true,}; return parametry_modul["ŁączTabele"](args,args2); end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów| | 1 = {{Code|args}} | _1 = Tablica elementów będących elementami. }} Przykłady użycia: <syntaxhighlight lang="lua"> local tabela1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",}; local tabela2={["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",}; local tabela3={["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",}; local args={[2]=tabela1,[10]=tabela2,[13]=tabela3,}; local parametry_modul=require("Module:Parametry"); local tabela_polaczona=parametry_modul["ŁączZbioryNazwanychElementówNienazwanychTabel"](args); </syntaxhighlight> Uzyskaną tabelą w wyniku wywołania tej funkcji jest: <syntaxhighlight lang="lua"> local tabela_polaczona={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",}; </syntaxhighlight> == {{Code|p["ŁączZbioryNumerowanychElementówNumerowanychTabel"]}} == Funkcja wykorzystuje: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Funkcja łączy elementy ponumerowane tabel, tabel ponumerowanych liczbami naturalnymi, które są pod zmienną {{Code|args}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["ŁączZbioryNumerowanychElementówNumerowanychTabel"]=function(args) local parametry_modul=require("Module:Parametry"); local args2={CzyPairsTablic=false,["CzyPairsElementówTablic"]=false,CzyNazwaneElementyTabel=false,CzyTylkoNazwaneElementyTabel=false,}; return parametry_modul["ŁączTabele"](args,args2); end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów| | 1 = {{Code|args}} | _1 = Tablica elementów będących elementami. }} Przykłady użycia: <syntaxhighlight lang="lua"> local tabela1={"wartość1","wartość2","wartość3","wartość4",}; local tabela2={"wartość5","wartość6","wartość7","wartość8","wartość9",}; local tabela3={"wartość10","wartość11","wartość12",}; local args={tabela1,tabela2,tabela3,}; local parametry_modul=require("Module:Parametry"); local tabela_polaczona=parametry_modul["ŁączZbioryNumerowanychElementówNumerowanychTabel"](args); </syntaxhighlight> Uzyskaną tabelą w wyniku wywołania tej funkcji jest: <syntaxhighlight lang="lua"> local tabela_polaczona={"wartość1","wartość2","wartość3","wartość4","wartość5","wartość6","wartość7","wartość8","wartość9","wartość10","wartość11","wartość12",}; </syntaxhighlight> == {{Code|p["ŁączZbioryNienazwanychElementówNumerowanychTabel"]}} == Funkcja wykorzystuje: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Funkcja łączy elementy nazwane tylko liczbami naturalnymi tabel, tabel ponumerowanych, które są pod zmienną {{Code|args}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["ŁączZbioryNienazwanychElementówNumerowanychTabel"]=function(args) local parametry_modul=require("Module:Parametry"); local args2={CzyPairsTablic=false,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=false,CzyTylkoNazwaneElementyTabel=false,}; return parametry_modul["ŁączTabele"](args,args2); end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów| | 1 = {{Code|args}} | _1 = Tablica elementów będących elementami. }} Przykładem działania funkcji jest: <syntaxhighlight lang="lua"> local tabela1={[2]="wartość1",[4]="wartość2",[7]="wartość3",[8]="wartość4",}; local tabela2={[3]="wartość5",[10]="wartość6",[12]="wartość7",[15]="wartość8",[16]="wartość9",}; local tabela3={[1]="wartość10",[7]="wartość11",[9]="wartość12",}; local args={tabela1,tabela2,tabela3,}; local parametry_modul=require("Module:Parametry"); local tabela_polaczona=parametry_modul["ŁączZbioryNienazwanychElementówNumerowanychTabel"](args); </syntaxhighlight> Uzyskaną tabelą w wyniku wywołania tej funkcji jest: <syntaxhighlight lang="lua"> local tabela_polaczona={"wartość4","wartość1","wartość2","wartość3","wartość8","wartość5","wartość7","wartość9","wartość6","wartość10","wartość11","wartość12",}; </syntaxhighlight> == {{Code|p["ŁączZbioryNazwanychElementówNumerowanychTabel"]}} == Funkcja wykorzystuje: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Te tabele są łączone w pewien ściśle określony sposób. Funkcja łączy tylko elementy nazwane tabel, tabel ponumerowanych, które są pod zmienną {{Code|args}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["ŁączZbioryNazwanychElementówNumerowanychTabel"]=function(args) local parametry_modul=require("Module:Parametry"); local args2={CzyPairsTablic=false,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=true,CzyTylkoNazwaneElementyTabel=true,}; return parametry_modul["ŁączTabele"](args,args2); end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów| | 1 = {{Code|args}} | _1 = Tablica elementów będących elementami. }} Przykładem działania funkcji: <syntaxhighlight lang="lua"> local tabela1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",}; local tabela2={["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",}; local tabela3={["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",}; local args={tabela1,tabela2,tabela3,}; local parametry_modul=require("Module:Parametry"); local tabela_polaczona=parametry_modul["ŁączZbioryNazwanychElementówNumerowanychTabel"](args); </syntaxhighlight> Uzyskaną tabelą w wyniku wywołania tej funkcji jest: <syntaxhighlight lang="lua"> local tabela_polaczona={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",}; </syntaxhighlight> == {{Code|p["ŁączNumerowaneTabele"]}} == Funkcja wykorzystuje: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Te tabele są łączone dokładnie w taki sposób, aby elementy się nie powtarzały, i elementy w nowo powstałej tabeli są powtórzeniem elementów w podanych tabeli z dokładnościa do tej informacji. Funkcja łączy tabele ponumerowane, które są pod zmienną {{Code|args}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["ŁączNumerowaneTabele"]=function(args) local parametry_modul=require("Module:Parametry"); local args2={CzyPairsTablic=false,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=true,CzyTylkoNazwaneElementyTabel=false,NazwijElementyNumerowane=true,}; return parametry_modul["ŁączTabele"](args,args2); end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów| | 1 = {{Code|args}} | _1 = Tablica elementów będących elementami. }} Przykładem działania funkcji jest: <syntaxhighlight lang="lua"> local tabela1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",[2]="wartość13",[4]="wartość14",[7]="wartość15",[8]="wartość16",}; local tabela2={["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",[3]="wartość17",[10]="wartość18",[12]="wartość19",[15]="wartość20",[16]="wartość21",}; local tabela3={["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",[1]="wartość22",[7]="wartość23",[9]="wartość24",}; local args={tabela1,tabela2,tabela3,}; local parametry_modul=require("Module:Parametry"); local tabela_polaczona=parametry_modul["ŁączNumerowaneTabele"](args); </syntaxhighlight> Uzyskaną tabelą w wyniku wywołania tej funkcji jest: <syntaxhighlight lang="lua"> local tabela_polaczona={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",[2]="wartość13",[4]="wartość14",[7]="wartość15",[8]="wartość16",[3]="wartość17",[10]="wartość18",[12]="wartość19",[15]="wartość20",[16]="wartość21",[1]="wartość22",[7]="wartość23",[9]="wartość24",}; </syntaxhighlight> == {{Code|p["ŁączNienazwaneTabele"]}} == Funkcja wykorzystuje: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Te tabele są łączone dokładnie w taki sposób, aby elementy się nie powtarzały, i elementy w nowo powstałej tabeli są powtórzeniem elementów w podanych tabeli z dokładnościa do tej informacji. Funkcja łączy tabele określone liczbami naturalnymi, które są pod zmienną {{Code|args}}. Definicja skrótowa fukcji: <syntaxhighlight lang="lua"> p["ŁączNienazwaneTabele"]=function(args) local parametry_modul=require("Module:Parametry"); local args2={CzyPairsTablic=true,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=true,CzyTylkoNazwaneElementyTabel=false,NazwijElementyNumerowane=true,}; return parametry_modul["ŁączTabele"](args,args2); end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów| | 1 = {{Code|args}} | _1 = Tablica elementów będących elementami. }} Przykładem działania funkcji jest: <syntaxhighlight lang="lua"> local tabela1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",[2]="wartość13",[4]="wartość14",[7]="wartość15",[8]="wartość16",}; local tabela2={["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",[3]="wartość17",[10]="wartość18",[12]="wartość19",[15]="wartość20",[16]="wartość21",}; local tabela3={["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",[1]="wartość22",[7]="wartość23",[9]="wartość24",}; local args={[2]=tabela1,[10]=tabela2,[13]=tabela3,}; local parametry_modul=require("Module:Parametry"); local tabela_polaczona=parametry_modul["ŁączNienazwaneTabele"](args); </syntaxhighlight> Uzyskaną tabelą w wyniku wywołania tej funkcji jest: <syntaxhighlight lang="lua"> local tabela_polaczona={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",[2]="wartość13",[4]="wartość14",[7]="wartość15",[8]="wartość16",[3]="wartość17",[10]="wartość18",[12]="wartość19",[15]="wartość20",[16]="wartość21",[1]="wartość22",[9]="wartość24",}; </syntaxhighlight> == {{Code|p["ŁączTabele"]}} == Funkcja łączy tabele ogólnie nazwane, określone w tablicy: {{Code|args2}}, względem parametrów określonych w tablicy {{Code|args2}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["ŁączTabele"] = function(args,args2)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów| | 1 = {{Code|args}} | _1 = Tabela elementów będących tabelami. | 2 = {{Code|args2}} | _2 = Tablica z kluczami o wartościach {{Code|true}}, jeśli to ustawienie włączone, w przeciwnym wypadku wyłączone. }} Funkcja łączy jedynie tabele ponumerowane liczbami naturalnymi, czy to w sposób nienazwany, też za pomocą tych liczb, ale wtedy numeracja nie musi być od jedynki i ona może mieć przerwy. Parametry (elementy) tabeli {{Code|args2}} są: {{OpisParametrów | 1 = {{Code|args2.CzyPairsTablic}} | _1 = Jeśli prawdziwa, to określa nazwane elementy tabel w tabeli, w przeciwnym wypadku numerowane. | 2 = {{Code|args2["CzyPairsElementówTablic"]}} | _2 = Jeśli prawdziwa, to określa nazwane elementy poszczególnych tabel w tablicy ogólnie nazwanej, w przeciwnym wypadku numerowane. | 3 = {{Code|args2.CzyNazwaneElementyTabel}} | _3 = Jeśli prawdziwe, łączy nazwane elementy tabel, mogą być określone liczbami naturalnymi, lub nie, w jedną tablicę. | 4 = {{Code|args2.CzyTylkoNazwaneElementyTabel}} | _4 = Jeśli niepuste, łączy tylko nazwane elementy tabel. | 5 = {{Code|args2.NazwijElementyNumerowane}} | _5 = Jeśli prawdziwe, to wśród elementów nienazwanych elementy numerowane traktuje je, jako nazwane, w przeciwnym wypadku takie elementy dodaje do zbioru elementów numerowanych łączonych tablic. }} Funkcje łączenia tabel w przweróźny sposób, zdefiniowane w: {{OpisParametrów|klasa=Opis-Szerokość-1 | 1 = {{Code|{{sr|#p["ŁączZbioryNumerowanychElementówNienazwanychTabel"]|p=Parametry}}}} | _1 = Łączy ponumerowane elementy tabel, tabel nazwanych liczbami naturalnymi. | 2 = {{Code|{{sr|#p["ŁączZbioryNienazwanychElementówNienazwanychTabel"]|p=Parametry}}}} | _2 = Łaczy nazwane tylko liczbami naturalnymi elementy tabel, tabel nazwanych liczbami naturalnymi. | 3 = {{Code|{{sr|#p["ŁączZbioryNazwanychElementówNienazwanychTabel"]|p=Parametry}}}} | _3 = Łączy tylko elementy nazwane tabel, tabel określonych liczbami naturalnymi. | 4 = {{Code|{{sr|#p["ŁączZbioryNumerowanychElementówNumerowanychTabel"]|p=Parametry}}}} | _4 = Łączy elementy ponumerowane tabel, tabel ponumerowanych liczbami naturalnymi. | 5 = {{Code|{{sr|#p["ŁączZbioryNienazwanychElementówNumerowanychTabel"]|p=Parametry}}}} | _5 = Łączy elementy nazwane tylko liczbami naturalnymi tabel, tabel ponumerowanych. | 6 = {{Code|{{sr|#p["ŁączZbioryNazwanychElementówNumerowanychTabel"]|p=Parametry}}}} | _6 = Łączy tylko elementy nazwane tabel, tabel ponumerowanych. }} Powyższe funkcje elementy nienazwane łączy w zbiory, ale nie jako elementy nazwane, tylko jako ponumerowane. {{Hr}} {{OpisParametrów | 1 = {{Code|{{sr|#p["ŁączNumerowaneTabele"]|p=Parametry}}}} | _1 = Łączy tabele ponumerowane,. | 2 = {{Code|{{sr|#p["ŁączNienazwaneTabele"]|p=Parametry}}}} | _2 = Łączy tabele określone liczbami naturalnymi. }} Powyższe funkcje łączą w sposób dokładny wiele tabel, niezależnie z jak nazwanymi elementami, te nazwane jest nie tylko określone liczbami naturalnymi (one nie muszą być ponumerowane), ale też łańcuchami. {{Hr}} Działanie tych funkcji w powyższej wyliczance można rozszyfrować na podstawie ich nazw podanych w nawiasach kwadratowych w cudzysłowach. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> e8q67nhez4f4zcj86qapnddkzx47u87 555683 555678 2026-09-11T13:29:15Z Persino 2851 /* {{Code|p["ŁączTabele"]}} */ 555683 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} Są tutaj przedstawione funkcje łączenia wielu tabel. == {{Code|p["ŁączDwieTabele"]}} == Funkcja łączy dwie tabele przy pomocy: {{Code|{{sr|#p["ŁączNumerowaneTabele"]|p=Parametry}}}}, które tam są ustawione w sposób ponumerowany, natomiast te tabele zawierają elementy nazwane jak i nienazwane. Te elementy tych tabel łączymy ze sobą, w ten sposób powstanie wynikowa tabela końcowa. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["ŁączDwieTabele"]=function(tabela1,tabela2)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów| | 1 = {{Code|tabela1}} i {{Code|tabela2}} | _1 = tabele do połączenia w jedną tablicę. }} Przykłady użycia: <syntaxhighlight lang="lua"> local tabela1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",[2]="wartość13",[4]="wartość14",[7]="wartość15",[8]="wartość16",}; local tabela2={["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",[3]="wartość17",[10]="wartość18",[12]="wartość19",[15]="wartość20",[16]="wartość21",}; local parametry_modul=require("Module:Parametry"); local tabela_polaczona=parametry_modul["ŁączDwieTabele"](tabela1,tabela2); </syntaxhighlight> Uzyskaną tabelą w wyniku wywołania tej funkcji jest: <syntaxhighlight lang="lua"> local tabela_polaczona={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",[2]="wartość13",[4]="wartość14",[7]="wartość15",[8]="wartość16",[3]="wartość17",[10]="wartość18",[12]="wartość19",[15]="wartość20",[16]="wartość21",}; </syntaxhighlight> == {{Code|p["ŁączZbioryElementówNumerowanychDwóchTabel"]}} == Funkcja łączy dwie tabele przy pomocy: {{Code|{{sr|#p["ŁączZbioryNumerowanychElementówNumerowanychTabel"]|p=Parametry}}}}, które tam są ustawione w sposób ponumerowany, natomiast te tabele zawierają elementy ponumerowane. Te elementy tych tabel łączymy ze sobą, w ten sposób powstanie wynikowa tabela końcowa. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["ŁączZbioryElementówNumerowanychDwóchTabel"]=function(tabela1,tabela2)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów| | 1 = {{Code|tabela1}}, {{Code|tabela2}} | _1 = Tabele do połączenia w jedną tablicę. }} Przykładem działania funkcji jest: <syntaxhighlight lang="lua"> local tabela1={"wartość1","wartość2","wartość3","wartość4",}; local tabela2={"wartość5","wartość6","wartość7","wartość8","wartość9",}; local parametry_modul=require("Module:Parametry"); local tabela_polaczona=parametry_modul["ŁączZbioryElementówNumerowanychDwóchTabel"](tabela1,tabela2); </syntaxhighlight> Uzyskaną tabelą w wyniku wywołania tej funkcji jest: <syntaxhighlight lang="lua"> local tabela_polaczona={"wartość1","wartość2","wartość3","wartość4","wartość5","wartość6","wartość7","wartość8","wartość9",}; </syntaxhighlight> == {{Code|p["ŁączZbioryElementówNienazwanychDwóchTabel"]}} == Funkcja łączy dwie tabele przy pomocy: {{Code|{{sr|#p["ŁączZbioryNienazwanychElementówNumerowanychTabel"]|p=Parametry}}}}, które tam są ustawione w sposób ponumerowany, natomiast te tabele zawierają elementy nienazwane. Te elementy tych tabel łączymy ze sobą, w ten sposób powstanie wynikowa tabela końcowa. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["ŁączZbioryElementówNienazwanychDwóchTabel"]=function(tabela1,tabela2)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów| | 1 = {{Code|tabela1}}, {{Code|tabela2}} | _1 = Tabele do połączenia w jedną tablicę. }} Przykłady użycia: <syntaxhighlight lang="lua"> local tabela1={[2]="wartość1",[4]="wartość2",[7]="wartość3",[8]="wartość4",}; local tabela2={[3]="wartość5",[10]="wartość6",[12]="wartość7",[15]="wartość8",[16]="wartość9",}; local parametry_modul=require("Module:Parametry"); local tabela_polaczona=parametry_modul["ŁączZbioryElementówNienazwanychDwóchTabel"](tabela1,tabela2); </syntaxhighlight> Uzyskaną tabelą w wyniku wywołania tej funkcji jest: <syntaxhighlight lang="lua"> local tabela_polaczona={"wartość4","wartość1","wartość2","wartość3","wartość8","wartość5","wartość7","wartość9","wartość6",}; </syntaxhighlight> == {{Code|p["ŁączZbioryElementówNazwanychDwóchTabel"]}} == Funkcja łączy dwie tabele przy pomocy: {{Code|{{sr|#p["ŁączZbioryNazwanychElementówNumerowanychTabel"]|p=Parametry}}}}, które tam są ustawione w sposób ponumerowany, natomiast te tabele zawierają elementy nazwane. Te elementy tych tabel łączymy ze sobą, w ten sposób powstanie wynikowa tabela końcowa. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["ŁączZbioryElementówNazwanychDwóchTabel"]=function(tabela1,tabela2)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów| | 1 = {{Code|args}} | _1 = Tablica elementów będących elementami. }} Przykłady użycia: <syntaxhighlight lang="lua"> local tabela1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",}; local tabela2={["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",}; local parametry_modul=require("Module:Parametry"); local tabela_polaczona=parametry_modul["ŁączZbioryElementówNazwanychDwóchTabel"](tabela1,tabela2); </syntaxhighlight> Uzyskaną tabelą w wyniku wywołania tej funkcji jest: <syntaxhighlight lang="lua"> local tabela_polaczona={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",}; </syntaxhighlight> == {{Code|p["ŁączZbioryNumerowanychElementówNienazwanychTabel"]}} == Funkcja wykorzystuje: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Funkcja łączy ponumerowane elementy tabel, tabel nazwanych liczbami naturalnymi, które są pod zmienną {{Code|args}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["ŁączZbioryNumerowanychElementówNienazwanychTabel"]=function(args) local parametry_modul=require("Module:Parametry"); local args2={CzyPairsTablic=true,["CzyPairsElementówTablic"]=false,CzyNazwaneElementyTabel=false,CzyTylkoNazwaneElementyTabel=false,}; return parametry_modul["ŁączTabele"](args,args2); end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów| | 1 = {{Code|args}} | _1 = Tablica elementów będących elementami. }} Przykłady użycia: <syntaxhighlight lang="lua"> local tabela1={"wartość1","wartość2","wartość3","wartość4",}; local tabela2={"wartość5","wartość6","wartość7","wartość8","wartość9",}; local tabela3={"wartość10","wartość11","wartość12",}; local args={[2]=tabela1,[10]=tabela2,[13]=tabela3,}; local parametry_modul=require("Module:Parametry"); local tabela_polaczona=parametry_modul["ŁączZbioryNumerowanychElementówNienazwanychTabel"](args); </syntaxhighlight> Uzyskaną tabelą w wyniku wywołania tej funkcji: <syntaxhighlight lang="lua"> local tabela_polaczona={"wartość1","wartość2","wartość3","wartość4","wartość10","wartość11","wartość12","wartość5","wartość6","wartość17","wartość8","wartość9",}; </syntaxhighlight> == {{Code|p["ŁączZbioryNienazwanychElementówNienazwanychTabel"]}} == Funkcja wykorzystuje: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Funkcja łączy nazwane tylko liczbami naturalnymi elementy tabel, tabel nazwanych liczbami naturalnymi. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["ŁączZbioryNienazwanychElementówNienazwanychTabel"]=function(args) local parametry_modul=require("Module:Parametry"); local args2={CzyPairsTablic=true,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=false,CzyTylkoNazwaneElementyTabel=false,}; return parametry_modul["ŁączTabele"](args,args2); end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów| | 1 = {{Code|args}} | _1 = Tablica elementów będących elementami. }} Przykłady użycia: <syntaxhighlight lang="lua"> local tabela1={[2]="wartość1",[4]="wartość2",[7]="wartość3",[8]="wartość4",}; local tabela2={[3]="wartość5",[10]="wartość6",[12]="wartość7",[15]="wartość8",[16]="wartość9",}; local tabela3={[1]="wartość10",[7]="wartość11",[9]="wartość12",}; local args={[2]=tabela1,[10]=tabela2,[13]=tabela3,}; local parametry_modul=require("Module:Parametry"); local tabela_polaczona=parametry_modul["ŁączZbioryNienazwanychElementówNienazwanychTabel"](args); </syntaxhighlight> Uzyskaną tabelą w wyniku wywołania tej funkcji: <syntaxhighlight lang="lua"> local tabela_polaczona={"wartość4","wartość1","wartość2","wartość3","wartość10","wartość11","wartość12","wartość8","wartość5","wartość7","wartość9","wartość6",}; </syntaxhighlight> == {{Code|p["ŁączZbioryNazwanychElementówNienazwanychTabel"]}} == Funkcja wykorzystuje: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Funkcja łączy tylko elementy nazwane tabel, tabel określonych liczbami naturalnymi, które są pod zmienną {{Code|args}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["ŁączZbioryNazwanychElementówNienazwanychTabel"]=function(args) local parametry_modul=require("Module:Parametry"); local args2={CzyPairsTablic=true,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=true,CzyTylkoNazwaneElementyTabel=true,}; return parametry_modul["ŁączTabele"](args,args2); end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów| | 1 = {{Code|args}} | _1 = Tablica elementów będących elementami. }} Przykłady użycia: <syntaxhighlight lang="lua"> local tabela1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",}; local tabela2={["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",}; local tabela3={["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",}; local args={[2]=tabela1,[10]=tabela2,[13]=tabela3,}; local parametry_modul=require("Module:Parametry"); local tabela_polaczona=parametry_modul["ŁączZbioryNazwanychElementówNienazwanychTabel"](args); </syntaxhighlight> Uzyskaną tabelą w wyniku wywołania tej funkcji jest: <syntaxhighlight lang="lua"> local tabela_polaczona={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",}; </syntaxhighlight> == {{Code|p["ŁączZbioryNumerowanychElementówNumerowanychTabel"]}} == Funkcja wykorzystuje: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Funkcja łączy elementy ponumerowane tabel, tabel ponumerowanych liczbami naturalnymi, które są pod zmienną {{Code|args}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["ŁączZbioryNumerowanychElementówNumerowanychTabel"]=function(args) local parametry_modul=require("Module:Parametry"); local args2={CzyPairsTablic=false,["CzyPairsElementówTablic"]=false,CzyNazwaneElementyTabel=false,CzyTylkoNazwaneElementyTabel=false,}; return parametry_modul["ŁączTabele"](args,args2); end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów| | 1 = {{Code|args}} | _1 = Tablica elementów będących elementami. }} Przykłady użycia: <syntaxhighlight lang="lua"> local tabela1={"wartość1","wartość2","wartość3","wartość4",}; local tabela2={"wartość5","wartość6","wartość7","wartość8","wartość9",}; local tabela3={"wartość10","wartość11","wartość12",}; local args={tabela1,tabela2,tabela3,}; local parametry_modul=require("Module:Parametry"); local tabela_polaczona=parametry_modul["ŁączZbioryNumerowanychElementówNumerowanychTabel"](args); </syntaxhighlight> Uzyskaną tabelą w wyniku wywołania tej funkcji jest: <syntaxhighlight lang="lua"> local tabela_polaczona={"wartość1","wartość2","wartość3","wartość4","wartość5","wartość6","wartość7","wartość8","wartość9","wartość10","wartość11","wartość12",}; </syntaxhighlight> == {{Code|p["ŁączZbioryNienazwanychElementówNumerowanychTabel"]}} == Funkcja wykorzystuje: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Funkcja łączy elementy nazwane tylko liczbami naturalnymi tabel, tabel ponumerowanych, które są pod zmienną {{Code|args}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["ŁączZbioryNienazwanychElementówNumerowanychTabel"]=function(args) local parametry_modul=require("Module:Parametry"); local args2={CzyPairsTablic=false,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=false,CzyTylkoNazwaneElementyTabel=false,}; return parametry_modul["ŁączTabele"](args,args2); end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów| | 1 = {{Code|args}} | _1 = Tablica elementów będących elementami. }} Przykładem działania funkcji jest: <syntaxhighlight lang="lua"> local tabela1={[2]="wartość1",[4]="wartość2",[7]="wartość3",[8]="wartość4",}; local tabela2={[3]="wartość5",[10]="wartość6",[12]="wartość7",[15]="wartość8",[16]="wartość9",}; local tabela3={[1]="wartość10",[7]="wartość11",[9]="wartość12",}; local args={tabela1,tabela2,tabela3,}; local parametry_modul=require("Module:Parametry"); local tabela_polaczona=parametry_modul["ŁączZbioryNienazwanychElementówNumerowanychTabel"](args); </syntaxhighlight> Uzyskaną tabelą w wyniku wywołania tej funkcji jest: <syntaxhighlight lang="lua"> local tabela_polaczona={"wartość4","wartość1","wartość2","wartość3","wartość8","wartość5","wartość7","wartość9","wartość6","wartość10","wartość11","wartość12",}; </syntaxhighlight> == {{Code|p["ŁączZbioryNazwanychElementówNumerowanychTabel"]}} == Funkcja wykorzystuje: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Te tabele są łączone w pewien ściśle określony sposób. Funkcja łączy tylko elementy nazwane tabel, tabel ponumerowanych, które są pod zmienną {{Code|args}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["ŁączZbioryNazwanychElementówNumerowanychTabel"]=function(args) local parametry_modul=require("Module:Parametry"); local args2={CzyPairsTablic=false,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=true,CzyTylkoNazwaneElementyTabel=true,}; return parametry_modul["ŁączTabele"](args,args2); end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów| | 1 = {{Code|args}} | _1 = Tablica elementów będących elementami. }} Przykładem działania funkcji: <syntaxhighlight lang="lua"> local tabela1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",}; local tabela2={["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",}; local tabela3={["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",}; local args={tabela1,tabela2,tabela3,}; local parametry_modul=require("Module:Parametry"); local tabela_polaczona=parametry_modul["ŁączZbioryNazwanychElementówNumerowanychTabel"](args); </syntaxhighlight> Uzyskaną tabelą w wyniku wywołania tej funkcji jest: <syntaxhighlight lang="lua"> local tabela_polaczona={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",}; </syntaxhighlight> == {{Code|p["ŁączNumerowaneTabele"]}} == Funkcja wykorzystuje: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Te tabele są łączone dokładnie w taki sposób, aby elementy się nie powtarzały, i elementy w nowo powstałej tabeli są powtórzeniem elementów w podanych tabeli z dokładnościa do tej informacji. Funkcja łączy tabele ponumerowane, które są pod zmienną {{Code|args}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["ŁączNumerowaneTabele"]=function(args) local parametry_modul=require("Module:Parametry"); local args2={CzyPairsTablic=false,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=true,CzyTylkoNazwaneElementyTabel=false,NazwijElementyNumerowane=true,}; return parametry_modul["ŁączTabele"](args,args2); end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów| | 1 = {{Code|args}} | _1 = Tablica elementów będących elementami. }} Przykładem działania funkcji jest: <syntaxhighlight lang="lua"> local tabela1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",[2]="wartość13",[4]="wartość14",[7]="wartość15",[8]="wartość16",}; local tabela2={["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",[3]="wartość17",[10]="wartość18",[12]="wartość19",[15]="wartość20",[16]="wartość21",}; local tabela3={["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",[1]="wartość22",[7]="wartość23",[9]="wartość24",}; local args={tabela1,tabela2,tabela3,}; local parametry_modul=require("Module:Parametry"); local tabela_polaczona=parametry_modul["ŁączNumerowaneTabele"](args); </syntaxhighlight> Uzyskaną tabelą w wyniku wywołania tej funkcji jest: <syntaxhighlight lang="lua"> local tabela_polaczona={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",[2]="wartość13",[4]="wartość14",[7]="wartość15",[8]="wartość16",[3]="wartość17",[10]="wartość18",[12]="wartość19",[15]="wartość20",[16]="wartość21",[1]="wartość22",[7]="wartość23",[9]="wartość24",}; </syntaxhighlight> == {{Code|p["ŁączNienazwaneTabele"]}} == Funkcja wykorzystuje: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Te tabele są łączone dokładnie w taki sposób, aby elementy się nie powtarzały, i elementy w nowo powstałej tabeli są powtórzeniem elementów w podanych tabeli z dokładnościa do tej informacji. Funkcja łączy tabele określone liczbami naturalnymi, które są pod zmienną {{Code|args}}. Definicja skrótowa fukcji: <syntaxhighlight lang="lua"> p["ŁączNienazwaneTabele"]=function(args) local parametry_modul=require("Module:Parametry"); local args2={CzyPairsTablic=true,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=true,CzyTylkoNazwaneElementyTabel=false,NazwijElementyNumerowane=true,}; return parametry_modul["ŁączTabele"](args,args2); end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów| | 1 = {{Code|args}} | _1 = Tablica elementów będących elementami. }} Przykładem działania funkcji jest: <syntaxhighlight lang="lua"> local tabela1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",[2]="wartość13",[4]="wartość14",[7]="wartość15",[8]="wartość16",}; local tabela2={["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",[3]="wartość17",[10]="wartość18",[12]="wartość19",[15]="wartość20",[16]="wartość21",}; local tabela3={["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",[1]="wartość22",[7]="wartość23",[9]="wartość24",}; local args={[2]=tabela1,[10]=tabela2,[13]=tabela3,}; local parametry_modul=require("Module:Parametry"); local tabela_polaczona=parametry_modul["ŁączNienazwaneTabele"](args); </syntaxhighlight> Uzyskaną tabelą w wyniku wywołania tej funkcji jest: <syntaxhighlight lang="lua"> local tabela_polaczona={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",[2]="wartość13",[4]="wartość14",[7]="wartość15",[8]="wartość16",[3]="wartość17",[10]="wartość18",[12]="wartość19",[15]="wartość20",[16]="wartość21",[1]="wartość22",[9]="wartość24",}; </syntaxhighlight> == {{Code|p["ŁączTabele"]}} == Funkcja łączy tabele ogólnie nazwane, określone w tablicy: {{Code|args2}}, względem parametrów określonych w tablicy {{Code|args2}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["ŁączTabele"] = function(args,args2)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów| | 1 = {{Code|args}} | _1 = Tabela elementów będących tabelami. | 2 = {{Code|args2}} | _2 = Tablica z kluczami o wartościach {{Code|true}}, jeśli to ustawienie włączone, w przeciwnym wypadku wyłączone. }} Funkcja łączy jedynie tabele ponumerowane liczbami naturalnymi, czy to w sposób nienazwany, też za pomocą tych liczb, ale wtedy numeracja nie musi być od jedynki i ona może mieć przerwy. Parametry (elementy) tabeli {{Code|args2}} są: {{OpisParametrów | 1 = {{Code|args2.CzyPairsTablic}} | _1 = Jeśli prawdziwa, to określa nazwane elementy tabel w tabeli, w przeciwnym wypadku numerowane. | 2 = {{Code|args2["CzyPairsElementówTablic"]}} | _2 = Jeśli prawdziwa, to określa nazwane elementy poszczególnych tabel w tablicy ogólnie nazwanej, w przeciwnym wypadku numerowane. | 3 = {{Code|args2.CzyNazwaneElementyTabel}} | _3 = Jeśli prawdziwe, łączy nazwane elementy tabel, mogą być określone liczbami naturalnymi, lub nie, w jedną tablicę. | 4 = {{Code|args2.CzyTylkoNazwaneElementyTabel}} | _4 = Jeśli niepuste, łączy tylko nazwane elementy tabel. | 5 = {{Code|args2.NazwijElementyNumerowane}} | _5 = Jeśli prawdziwe, to wśród elementów nienazwanych elementy numerowane traktuje je, jako nazwane, w przeciwnym wypadku takie elementy dodaje do zbioru elementów numerowanych łączonych tablic. }} Funkcje łączenia tabel w przweróźny sposób, zdefiniowane w: {{OpisParametrów|klasa=Opis-Szerokość-1 | 1 = {{Code|{{sr|#p["ŁączZbioryNumerowanychElementówNienazwanychTabel"]|p=Parametry}}}} | _1 = Łączy ponumerowane elementy tabel, tabel nazwanych liczbami naturalnymi. | 2 = {{Code|{{sr|#p["ŁączZbioryNienazwanychElementówNienazwanychTabel"]|p=Parametry}}}} | _2 = Łaczy nazwane tylko liczbami naturalnymi elementy tabel, tabel nazwanych liczbami naturalnymi. | 3 = {{Code|{{sr|#p["ŁączZbioryNazwanychElementówNienazwanychTabel"]|p=Parametry}}}} | _3 = Łączy tylko elementy nazwane tabel, tabel określonych liczbami naturalnymi. | 4 = {{Code|{{sr|#p["ŁączZbioryNumerowanychElementówNumerowanychTabel"]|p=Parametry}}}} | _4 = Łączy elementy ponumerowane tabel, tabel ponumerowanych liczbami naturalnymi. | 5 = {{Code|{{sr|#p["ŁączZbioryNienazwanychElementówNumerowanychTabel"]|p=Parametry}}}} | _5 = Łączy elementy nazwane tylko liczbami naturalnymi tabel, tabel ponumerowanych. | 6 = {{Code|{{sr|#p["ŁączZbioryNazwanychElementówNumerowanychTabel"]|p=Parametry}}}} | _6 = Łączy tylko elementy nazwane tabel, tabel ponumerowanych. }} Powyższe funkcje elementy nienazwane łączy w zbiory, ale nie jako elementy nazwane, tylko jako ponumerowane. {{Hr}} {{OpisParametrów | 1 = {{Code|{{sr|#p["ŁączNumerowaneTabele"]|p=Parametry}}}} | _1 = Łączy tabele ponumerowane. | 2 = {{Code|{{sr|#p["ŁączNienazwaneTabele"]|p=Parametry}}}} | _2 = Łączy tabele określone liczbami naturalnymi. }} Powyższe funkcje łączą w sposób dokładny wiele tabel, niezależnie z jak nazwanymi elementami, te nazwane jest nie tylko określone liczbami naturalnymi (one nie muszą być ponumerowane), ale też łańcuchami. {{Hr}} Działanie tych funkcji w powyższej wyliczance można rozszyfrować na podstawie ich nazw podanych w nawiasach kwadratowych w cudzysłowach. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> ce08zajd7slg39zccklp4agkaoojj96 555684 555683 2026-09-11T13:31:47Z Persino 2851 /* {{Code|p["ŁączDwieTabele"]}} */ 555684 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} Są tutaj przedstawione funkcje łączenia wielu tabel. == {{Code|p["ŁączDwieTabele"]}} == Funkcja łączy dwie tabele przy pomocy: {{Code|{{sr|#p["ŁączNumerowaneTabele"]|p=Parametry}}}}, które tam są ustawione w sposób ponumerowany, natomiast te tabele zawierają elementy nazwane jak i nienazwane. Te elementy tych tabel łączymy ze sobą, w ten sposób powstanie wynikowa tabela końcowa. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["ŁączDwieTabele"]=function(tabela1,tabela2)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów| | 1 = {{Code|tabela1}} i {{Code|tabela2}} | _1 = Tabele do połączenia w jedną tablicę. }} Przykłady użycia: <syntaxhighlight lang="lua"> local tabela1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",[2]="wartość13",[4]="wartość14",[7]="wartość15",[8]="wartość16",}; local tabela2={["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",[3]="wartość17",[10]="wartość18",[12]="wartość19",[15]="wartość20",[16]="wartość21",}; local parametry_modul=require("Module:Parametry"); local tabela_polaczona=parametry_modul["ŁączDwieTabele"](tabela1,tabela2); </syntaxhighlight> Uzyskaną tabelą w wyniku wywołania tej funkcji jest: <syntaxhighlight lang="lua"> local tabela_polaczona={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",[2]="wartość13",[4]="wartość14",[7]="wartość15",[8]="wartość16",[3]="wartość17",[10]="wartość18",[12]="wartość19",[15]="wartość20",[16]="wartość21",}; </syntaxhighlight> == {{Code|p["ŁączZbioryElementówNumerowanychDwóchTabel"]}} == Funkcja łączy dwie tabele przy pomocy: {{Code|{{sr|#p["ŁączZbioryNumerowanychElementówNumerowanychTabel"]|p=Parametry}}}}, które tam są ustawione w sposób ponumerowany, natomiast te tabele zawierają elementy ponumerowane. Te elementy tych tabel łączymy ze sobą, w ten sposób powstanie wynikowa tabela końcowa. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["ŁączZbioryElementówNumerowanychDwóchTabel"]=function(tabela1,tabela2)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów| | 1 = {{Code|tabela1}}, {{Code|tabela2}} | _1 = Tabele do połączenia w jedną tablicę. }} Przykładem działania funkcji jest: <syntaxhighlight lang="lua"> local tabela1={"wartość1","wartość2","wartość3","wartość4",}; local tabela2={"wartość5","wartość6","wartość7","wartość8","wartość9",}; local parametry_modul=require("Module:Parametry"); local tabela_polaczona=parametry_modul["ŁączZbioryElementówNumerowanychDwóchTabel"](tabela1,tabela2); </syntaxhighlight> Uzyskaną tabelą w wyniku wywołania tej funkcji jest: <syntaxhighlight lang="lua"> local tabela_polaczona={"wartość1","wartość2","wartość3","wartość4","wartość5","wartość6","wartość7","wartość8","wartość9",}; </syntaxhighlight> == {{Code|p["ŁączZbioryElementówNienazwanychDwóchTabel"]}} == Funkcja łączy dwie tabele przy pomocy: {{Code|{{sr|#p["ŁączZbioryNienazwanychElementówNumerowanychTabel"]|p=Parametry}}}}, które tam są ustawione w sposób ponumerowany, natomiast te tabele zawierają elementy nienazwane. Te elementy tych tabel łączymy ze sobą, w ten sposób powstanie wynikowa tabela końcowa. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["ŁączZbioryElementówNienazwanychDwóchTabel"]=function(tabela1,tabela2)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów| | 1 = {{Code|tabela1}}, {{Code|tabela2}} | _1 = Tabele do połączenia w jedną tablicę. }} Przykłady użycia: <syntaxhighlight lang="lua"> local tabela1={[2]="wartość1",[4]="wartość2",[7]="wartość3",[8]="wartość4",}; local tabela2={[3]="wartość5",[10]="wartość6",[12]="wartość7",[15]="wartość8",[16]="wartość9",}; local parametry_modul=require("Module:Parametry"); local tabela_polaczona=parametry_modul["ŁączZbioryElementówNienazwanychDwóchTabel"](tabela1,tabela2); </syntaxhighlight> Uzyskaną tabelą w wyniku wywołania tej funkcji jest: <syntaxhighlight lang="lua"> local tabela_polaczona={"wartość4","wartość1","wartość2","wartość3","wartość8","wartość5","wartość7","wartość9","wartość6",}; </syntaxhighlight> == {{Code|p["ŁączZbioryElementówNazwanychDwóchTabel"]}} == Funkcja łączy dwie tabele przy pomocy: {{Code|{{sr|#p["ŁączZbioryNazwanychElementówNumerowanychTabel"]|p=Parametry}}}}, które tam są ustawione w sposób ponumerowany, natomiast te tabele zawierają elementy nazwane. Te elementy tych tabel łączymy ze sobą, w ten sposób powstanie wynikowa tabela końcowa. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["ŁączZbioryElementówNazwanychDwóchTabel"]=function(tabela1,tabela2)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów| | 1 = {{Code|args}} | _1 = Tablica elementów będących elementami. }} Przykłady użycia: <syntaxhighlight lang="lua"> local tabela1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",}; local tabela2={["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",}; local parametry_modul=require("Module:Parametry"); local tabela_polaczona=parametry_modul["ŁączZbioryElementówNazwanychDwóchTabel"](tabela1,tabela2); </syntaxhighlight> Uzyskaną tabelą w wyniku wywołania tej funkcji jest: <syntaxhighlight lang="lua"> local tabela_polaczona={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",}; </syntaxhighlight> == {{Code|p["ŁączZbioryNumerowanychElementówNienazwanychTabel"]}} == Funkcja wykorzystuje: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Funkcja łączy ponumerowane elementy tabel, tabel nazwanych liczbami naturalnymi, które są pod zmienną {{Code|args}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["ŁączZbioryNumerowanychElementówNienazwanychTabel"]=function(args) local parametry_modul=require("Module:Parametry"); local args2={CzyPairsTablic=true,["CzyPairsElementówTablic"]=false,CzyNazwaneElementyTabel=false,CzyTylkoNazwaneElementyTabel=false,}; return parametry_modul["ŁączTabele"](args,args2); end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów| | 1 = {{Code|args}} | _1 = Tablica elementów będących elementami. }} Przykłady użycia: <syntaxhighlight lang="lua"> local tabela1={"wartość1","wartość2","wartość3","wartość4",}; local tabela2={"wartość5","wartość6","wartość7","wartość8","wartość9",}; local tabela3={"wartość10","wartość11","wartość12",}; local args={[2]=tabela1,[10]=tabela2,[13]=tabela3,}; local parametry_modul=require("Module:Parametry"); local tabela_polaczona=parametry_modul["ŁączZbioryNumerowanychElementówNienazwanychTabel"](args); </syntaxhighlight> Uzyskaną tabelą w wyniku wywołania tej funkcji: <syntaxhighlight lang="lua"> local tabela_polaczona={"wartość1","wartość2","wartość3","wartość4","wartość10","wartość11","wartość12","wartość5","wartość6","wartość17","wartość8","wartość9",}; </syntaxhighlight> == {{Code|p["ŁączZbioryNienazwanychElementówNienazwanychTabel"]}} == Funkcja wykorzystuje: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Funkcja łączy nazwane tylko liczbami naturalnymi elementy tabel, tabel nazwanych liczbami naturalnymi. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["ŁączZbioryNienazwanychElementówNienazwanychTabel"]=function(args) local parametry_modul=require("Module:Parametry"); local args2={CzyPairsTablic=true,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=false,CzyTylkoNazwaneElementyTabel=false,}; return parametry_modul["ŁączTabele"](args,args2); end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów| | 1 = {{Code|args}} | _1 = Tablica elementów będących elementami. }} Przykłady użycia: <syntaxhighlight lang="lua"> local tabela1={[2]="wartość1",[4]="wartość2",[7]="wartość3",[8]="wartość4",}; local tabela2={[3]="wartość5",[10]="wartość6",[12]="wartość7",[15]="wartość8",[16]="wartość9",}; local tabela3={[1]="wartość10",[7]="wartość11",[9]="wartość12",}; local args={[2]=tabela1,[10]=tabela2,[13]=tabela3,}; local parametry_modul=require("Module:Parametry"); local tabela_polaczona=parametry_modul["ŁączZbioryNienazwanychElementówNienazwanychTabel"](args); </syntaxhighlight> Uzyskaną tabelą w wyniku wywołania tej funkcji: <syntaxhighlight lang="lua"> local tabela_polaczona={"wartość4","wartość1","wartość2","wartość3","wartość10","wartość11","wartość12","wartość8","wartość5","wartość7","wartość9","wartość6",}; </syntaxhighlight> == {{Code|p["ŁączZbioryNazwanychElementówNienazwanychTabel"]}} == Funkcja wykorzystuje: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Funkcja łączy tylko elementy nazwane tabel, tabel określonych liczbami naturalnymi, które są pod zmienną {{Code|args}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["ŁączZbioryNazwanychElementówNienazwanychTabel"]=function(args) local parametry_modul=require("Module:Parametry"); local args2={CzyPairsTablic=true,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=true,CzyTylkoNazwaneElementyTabel=true,}; return parametry_modul["ŁączTabele"](args,args2); end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów| | 1 = {{Code|args}} | _1 = Tablica elementów będących elementami. }} Przykłady użycia: <syntaxhighlight lang="lua"> local tabela1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",}; local tabela2={["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",}; local tabela3={["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",}; local args={[2]=tabela1,[10]=tabela2,[13]=tabela3,}; local parametry_modul=require("Module:Parametry"); local tabela_polaczona=parametry_modul["ŁączZbioryNazwanychElementówNienazwanychTabel"](args); </syntaxhighlight> Uzyskaną tabelą w wyniku wywołania tej funkcji jest: <syntaxhighlight lang="lua"> local tabela_polaczona={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",}; </syntaxhighlight> == {{Code|p["ŁączZbioryNumerowanychElementówNumerowanychTabel"]}} == Funkcja wykorzystuje: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Funkcja łączy elementy ponumerowane tabel, tabel ponumerowanych liczbami naturalnymi, które są pod zmienną {{Code|args}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["ŁączZbioryNumerowanychElementówNumerowanychTabel"]=function(args) local parametry_modul=require("Module:Parametry"); local args2={CzyPairsTablic=false,["CzyPairsElementówTablic"]=false,CzyNazwaneElementyTabel=false,CzyTylkoNazwaneElementyTabel=false,}; return parametry_modul["ŁączTabele"](args,args2); end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów| | 1 = {{Code|args}} | _1 = Tablica elementów będących elementami. }} Przykłady użycia: <syntaxhighlight lang="lua"> local tabela1={"wartość1","wartość2","wartość3","wartość4",}; local tabela2={"wartość5","wartość6","wartość7","wartość8","wartość9",}; local tabela3={"wartość10","wartość11","wartość12",}; local args={tabela1,tabela2,tabela3,}; local parametry_modul=require("Module:Parametry"); local tabela_polaczona=parametry_modul["ŁączZbioryNumerowanychElementówNumerowanychTabel"](args); </syntaxhighlight> Uzyskaną tabelą w wyniku wywołania tej funkcji jest: <syntaxhighlight lang="lua"> local tabela_polaczona={"wartość1","wartość2","wartość3","wartość4","wartość5","wartość6","wartość7","wartość8","wartość9","wartość10","wartość11","wartość12",}; </syntaxhighlight> == {{Code|p["ŁączZbioryNienazwanychElementówNumerowanychTabel"]}} == Funkcja wykorzystuje: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Funkcja łączy elementy nazwane tylko liczbami naturalnymi tabel, tabel ponumerowanych, które są pod zmienną {{Code|args}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["ŁączZbioryNienazwanychElementówNumerowanychTabel"]=function(args) local parametry_modul=require("Module:Parametry"); local args2={CzyPairsTablic=false,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=false,CzyTylkoNazwaneElementyTabel=false,}; return parametry_modul["ŁączTabele"](args,args2); end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów| | 1 = {{Code|args}} | _1 = Tablica elementów będących elementami. }} Przykładem działania funkcji jest: <syntaxhighlight lang="lua"> local tabela1={[2]="wartość1",[4]="wartość2",[7]="wartość3",[8]="wartość4",}; local tabela2={[3]="wartość5",[10]="wartość6",[12]="wartość7",[15]="wartość8",[16]="wartość9",}; local tabela3={[1]="wartość10",[7]="wartość11",[9]="wartość12",}; local args={tabela1,tabela2,tabela3,}; local parametry_modul=require("Module:Parametry"); local tabela_polaczona=parametry_modul["ŁączZbioryNienazwanychElementówNumerowanychTabel"](args); </syntaxhighlight> Uzyskaną tabelą w wyniku wywołania tej funkcji jest: <syntaxhighlight lang="lua"> local tabela_polaczona={"wartość4","wartość1","wartość2","wartość3","wartość8","wartość5","wartość7","wartość9","wartość6","wartość10","wartość11","wartość12",}; </syntaxhighlight> == {{Code|p["ŁączZbioryNazwanychElementówNumerowanychTabel"]}} == Funkcja wykorzystuje: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Te tabele są łączone w pewien ściśle określony sposób. Funkcja łączy tylko elementy nazwane tabel, tabel ponumerowanych, które są pod zmienną {{Code|args}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["ŁączZbioryNazwanychElementówNumerowanychTabel"]=function(args) local parametry_modul=require("Module:Parametry"); local args2={CzyPairsTablic=false,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=true,CzyTylkoNazwaneElementyTabel=true,}; return parametry_modul["ŁączTabele"](args,args2); end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów| | 1 = {{Code|args}} | _1 = Tablica elementów będących elementami. }} Przykładem działania funkcji: <syntaxhighlight lang="lua"> local tabela1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",}; local tabela2={["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",}; local tabela3={["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",}; local args={tabela1,tabela2,tabela3,}; local parametry_modul=require("Module:Parametry"); local tabela_polaczona=parametry_modul["ŁączZbioryNazwanychElementówNumerowanychTabel"](args); </syntaxhighlight> Uzyskaną tabelą w wyniku wywołania tej funkcji jest: <syntaxhighlight lang="lua"> local tabela_polaczona={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",}; </syntaxhighlight> == {{Code|p["ŁączNumerowaneTabele"]}} == Funkcja wykorzystuje: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Te tabele są łączone dokładnie w taki sposób, aby elementy się nie powtarzały, i elementy w nowo powstałej tabeli są powtórzeniem elementów w podanych tabeli z dokładnościa do tej informacji. Funkcja łączy tabele ponumerowane, które są pod zmienną {{Code|args}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["ŁączNumerowaneTabele"]=function(args) local parametry_modul=require("Module:Parametry"); local args2={CzyPairsTablic=false,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=true,CzyTylkoNazwaneElementyTabel=false,NazwijElementyNumerowane=true,}; return parametry_modul["ŁączTabele"](args,args2); end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów| | 1 = {{Code|args}} | _1 = Tablica elementów będących elementami. }} Przykładem działania funkcji jest: <syntaxhighlight lang="lua"> local tabela1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",[2]="wartość13",[4]="wartość14",[7]="wartość15",[8]="wartość16",}; local tabela2={["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",[3]="wartość17",[10]="wartość18",[12]="wartość19",[15]="wartość20",[16]="wartość21",}; local tabela3={["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",[1]="wartość22",[7]="wartość23",[9]="wartość24",}; local args={tabela1,tabela2,tabela3,}; local parametry_modul=require("Module:Parametry"); local tabela_polaczona=parametry_modul["ŁączNumerowaneTabele"](args); </syntaxhighlight> Uzyskaną tabelą w wyniku wywołania tej funkcji jest: <syntaxhighlight lang="lua"> local tabela_polaczona={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",[2]="wartość13",[4]="wartość14",[7]="wartość15",[8]="wartość16",[3]="wartość17",[10]="wartość18",[12]="wartość19",[15]="wartość20",[16]="wartość21",[1]="wartość22",[7]="wartość23",[9]="wartość24",}; </syntaxhighlight> == {{Code|p["ŁączNienazwaneTabele"]}} == Funkcja wykorzystuje: {{Code|{{m|Parametry|ŁączTabele}}}}, którą nigdy się nie implemetuje w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, ale jako funkcję biblioteczną. Te tabele są łączone dokładnie w taki sposób, aby elementy się nie powtarzały, i elementy w nowo powstałej tabeli są powtórzeniem elementów w podanych tabeli z dokładnościa do tej informacji. Funkcja łączy tabele określone liczbami naturalnymi, które są pod zmienną {{Code|args}}. Definicja skrótowa fukcji: <syntaxhighlight lang="lua"> p["ŁączNienazwaneTabele"]=function(args) local parametry_modul=require("Module:Parametry"); local args2={CzyPairsTablic=true,["CzyPairsElementówTablic"]=true,CzyNazwaneElementyTabel=true,CzyTylkoNazwaneElementyTabel=false,NazwijElementyNumerowane=true,}; return parametry_modul["ŁączTabele"](args,args2); end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów| | 1 = {{Code|args}} | _1 = Tablica elementów będących elementami. }} Przykładem działania funkcji jest: <syntaxhighlight lang="lua"> local tabela1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",[2]="wartość13",[4]="wartość14",[7]="wartość15",[8]="wartość16",}; local tabela2={["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",[3]="wartość17",[10]="wartość18",[12]="wartość19",[15]="wartość20",[16]="wartość21",}; local tabela3={["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",[1]="wartość22",[7]="wartość23",[9]="wartość24",}; local args={[2]=tabela1,[10]=tabela2,[13]=tabela3,}; local parametry_modul=require("Module:Parametry"); local tabela_polaczona=parametry_modul["ŁączNienazwaneTabele"](args); </syntaxhighlight> Uzyskaną tabelą w wyniku wywołania tej funkcji jest: <syntaxhighlight lang="lua"> local tabela_polaczona={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",["nazwa5"]="wartość5",["nazwa6"]="wartość6",["nazwa7"]="wartość7",["nazwa8"]="wartość8",["nazwa9"]="wartość9",["nazwa10"]="wartość10",["nazwa11"]="wartość11",["nazwa12"]="wartość12",[2]="wartość13",[4]="wartość14",[7]="wartość15",[8]="wartość16",[3]="wartość17",[10]="wartość18",[12]="wartość19",[15]="wartość20",[16]="wartość21",[1]="wartość22",[9]="wartość24",}; </syntaxhighlight> == {{Code|p["ŁączTabele"]}} == Funkcja łączy tabele ogólnie nazwane, określone w tablicy: {{Code|args2}}, względem parametrów określonych w tablicy {{Code|args2}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["ŁączTabele"] = function(args,args2)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów| | 1 = {{Code|args}} | _1 = Tabela elementów będących tabelami. | 2 = {{Code|args2}} | _2 = Tablica z kluczami o wartościach {{Code|true}}, jeśli to ustawienie włączone, w przeciwnym wypadku wyłączone. }} Funkcja łączy jedynie tabele ponumerowane liczbami naturalnymi, czy to w sposób nienazwany, też za pomocą tych liczb, ale wtedy numeracja nie musi być od jedynki i ona może mieć przerwy. Parametry (elementy) tabeli {{Code|args2}} są: {{OpisParametrów | 1 = {{Code|args2.CzyPairsTablic}} | _1 = Jeśli prawdziwa, to określa nazwane elementy tabel w tabeli, w przeciwnym wypadku numerowane. | 2 = {{Code|args2["CzyPairsElementówTablic"]}} | _2 = Jeśli prawdziwa, to określa nazwane elementy poszczególnych tabel w tablicy ogólnie nazwanej, w przeciwnym wypadku numerowane. | 3 = {{Code|args2.CzyNazwaneElementyTabel}} | _3 = Jeśli prawdziwe, łączy nazwane elementy tabel, mogą być określone liczbami naturalnymi, lub nie, w jedną tablicę. | 4 = {{Code|args2.CzyTylkoNazwaneElementyTabel}} | _4 = Jeśli niepuste, łączy tylko nazwane elementy tabel. | 5 = {{Code|args2.NazwijElementyNumerowane}} | _5 = Jeśli prawdziwe, to wśród elementów nienazwanych elementy numerowane traktuje je, jako nazwane, w przeciwnym wypadku takie elementy dodaje do zbioru elementów numerowanych łączonych tablic. }} Funkcje łączenia tabel w przweróźny sposób, zdefiniowane w: {{OpisParametrów|klasa=Opis-Szerokość-1 | 1 = {{Code|{{sr|#p["ŁączZbioryNumerowanychElementówNienazwanychTabel"]|p=Parametry}}}} | _1 = Łączy ponumerowane elementy tabel, tabel nazwanych liczbami naturalnymi. | 2 = {{Code|{{sr|#p["ŁączZbioryNienazwanychElementówNienazwanychTabel"]|p=Parametry}}}} | _2 = Łaczy nazwane tylko liczbami naturalnymi elementy tabel, tabel nazwanych liczbami naturalnymi. | 3 = {{Code|{{sr|#p["ŁączZbioryNazwanychElementówNienazwanychTabel"]|p=Parametry}}}} | _3 = Łączy tylko elementy nazwane tabel, tabel określonych liczbami naturalnymi. | 4 = {{Code|{{sr|#p["ŁączZbioryNumerowanychElementówNumerowanychTabel"]|p=Parametry}}}} | _4 = Łączy elementy ponumerowane tabel, tabel ponumerowanych liczbami naturalnymi. | 5 = {{Code|{{sr|#p["ŁączZbioryNienazwanychElementówNumerowanychTabel"]|p=Parametry}}}} | _5 = Łączy elementy nazwane tylko liczbami naturalnymi tabel, tabel ponumerowanych. | 6 = {{Code|{{sr|#p["ŁączZbioryNazwanychElementówNumerowanychTabel"]|p=Parametry}}}} | _6 = Łączy tylko elementy nazwane tabel, tabel ponumerowanych. }} Powyższe funkcje elementy nienazwane łączy w zbiory, ale nie jako elementy nazwane, tylko jako ponumerowane. {{Hr}} {{OpisParametrów | 1 = {{Code|{{sr|#p["ŁączNumerowaneTabele"]|p=Parametry}}}} | _1 = Łączy tabele ponumerowane. | 2 = {{Code|{{sr|#p["ŁączNienazwaneTabele"]|p=Parametry}}}} | _2 = Łączy tabele określone liczbami naturalnymi. }} Powyższe funkcje łączą w sposób dokładny wiele tabel, niezależnie z jak nazwanymi elementami, te nazwane jest nie tylko określone liczbami naturalnymi (one nie muszą być ponumerowane), ale też łańcuchami. {{Hr}} Działanie tych funkcji w powyższej wyliczance można rozszyfrować na podstawie ich nazw podanych w nawiasach kwadratowych w cudzysłowach. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> qc80ieffaxablnvj2q5ucj6ivmdi28n Wikibooks:Moduły/Parametry/Tom XI 4 63977 555668 555645 2026-09-11T12:40:56Z Persino 2851 555668 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} Są tutaj przedstawwione funkcje tworzenia tabeli. == {{Code|p["TwórzTabelęBezPowtarzającychKluczyTabel"]}} == Funkcja jest analogiem do funkcji {{Code|{{sr|#p["UsuńElementyTabeli"]|p=Parametry}}}}, dla jednej tabeli, a ta funkcja jest dla wielu. Funkcja w tabelce {{Code|args[1]}} przy pomocy, której z niej tworzymy elementy, usuwa, tworząc nową tabelę, elementy, którego klucze są w tabelach o numerach większych od jedynki, któremu wartości przyporządkowane są obojętne, byle tylko, by nie były jako {{Code|nil}}. Najprościej gadając, wartości moją mieć w drugiej tabelce wartość {{Code|true}}, ale nie muszą takie być. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["TwórzTabelęBezPowtarzającychKluczyTabel"]=function(args)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów| | 1 = {{Code|args[1]}} | _1 = Tabela elementów. | 2 = {{Code|args[2]}}, {{Code|args[3]}},... | _2 = Tabele od drugiej wzwyż, którym dzięki im kluczom są usuwane elementy z tej pierwszej. }} Przykłady użycia: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local tabelka_1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",}; local tabelka_2={["nazwa1"]=true,["nazwa3"]=true,}; local tabela_args={tabelka_1,tabelka_2,}; local tabelka_koncowa=parametry_modul["TwórzTabelęBezPowtarzającychKluczyTabel"](tabela_args); </syntaxhighlight> Stworzona w ten sposób tabelka: {{Code|tabelka_koncowa}}, nie ma takiej samej referencji, co: {{Code|tabelka_1}}, tylko inną, a więc nie modyfikujemy pierwotnej tej pierwzsej tabeli, tylko tworzymy nową, ale ma za to elementy: <syntaxhighlight lang="lua"> local tabelka_koncowa={["nazwa2"]="wartość2",["nazwa4"]="wartość4",}; </syntaxhighlight> {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> tutfagu1ucr6bf6cee5frxmhxk2vevm 555669 555668 2026-09-11T12:41:13Z Persino 2851 555669 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} Są tutaj przedstawwione funkcje tworzenia tabeli. == {{Code|p["TwórzTabelęBezPowtarzającychKluczyTabel"]}} == Funkcja jest analogiem do {{Code|{{sr|#p["UsuńElementyTabeli"]|p=Parametry}}}}, dla jednej tabeli, a ta funkcja jest dla wielu. Funkcja w tabelce {{Code|args[1]}} przy pomocy, której z niej tworzymy elementy, usuwa, tworząc nową tabelę, elementy, którego klucze są w tabelach o numerach większych od jedynki, któremu wartości przyporządkowane są obojętne, byle tylko, by nie były jako {{Code|nil}}. Najprościej gadając, wartości moją mieć w drugiej tabelce wartość {{Code|true}}, ale nie muszą takie być. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["TwórzTabelęBezPowtarzającychKluczyTabel"]=function(args)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów| | 1 = {{Code|args[1]}} | _1 = Tabela elementów. | 2 = {{Code|args[2]}}, {{Code|args[3]}},... | _2 = Tabele od drugiej wzwyż, którym dzięki im kluczom są usuwane elementy z tej pierwszej. }} Przykłady użycia: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local tabelka_1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",}; local tabelka_2={["nazwa1"]=true,["nazwa3"]=true,}; local tabela_args={tabelka_1,tabelka_2,}; local tabelka_koncowa=parametry_modul["TwórzTabelęBezPowtarzającychKluczyTabel"](tabela_args); </syntaxhighlight> Stworzona w ten sposób tabelka: {{Code|tabelka_koncowa}}, nie ma takiej samej referencji, co: {{Code|tabelka_1}}, tylko inną, a więc nie modyfikujemy pierwotnej tej pierwzsej tabeli, tylko tworzymy nową, ale ma za to elementy: <syntaxhighlight lang="lua"> local tabelka_koncowa={["nazwa2"]="wartość2",["nazwa4"]="wartość4",}; </syntaxhighlight> {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> ahgblihsfmt1lhm1lpp8vk2mi2gu7u1 555670 555669 2026-09-11T12:41:30Z Persino 2851 555670 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} Są tutaj przedstawwione funkcje tworzenia tabeli. == {{Code|p["TwórzTabelęBezPowtarzającychKluczyTabel"]}} == Funkcja jest analogiem do: {{Code|{{sr|#p["UsuńElementyTabeli"]|p=Parametry}}}}, dla jednej tabeli, a ta funkcja jest dla wielu. Funkcja w tabelce {{Code|args[1]}} przy pomocy, której z niej tworzymy elementy, usuwa, tworząc nową tabelę, elementy, którego klucze są w tabelach o numerach większych od jedynki, któremu wartości przyporządkowane są obojętne, byle tylko, by nie były jako {{Code|nil}}. Najprościej gadając, wartości moją mieć w drugiej tabelce wartość {{Code|true}}, ale nie muszą takie być. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["TwórzTabelęBezPowtarzającychKluczyTabel"]=function(args)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów| | 1 = {{Code|args[1]}} | _1 = Tabela elementów. | 2 = {{Code|args[2]}}, {{Code|args[3]}},... | _2 = Tabele od drugiej wzwyż, którym dzięki im kluczom są usuwane elementy z tej pierwszej. }} Przykłady użycia: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local tabelka_1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",}; local tabelka_2={["nazwa1"]=true,["nazwa3"]=true,}; local tabela_args={tabelka_1,tabelka_2,}; local tabelka_koncowa=parametry_modul["TwórzTabelęBezPowtarzającychKluczyTabel"](tabela_args); </syntaxhighlight> Stworzona w ten sposób tabelka: {{Code|tabelka_koncowa}}, nie ma takiej samej referencji, co: {{Code|tabelka_1}}, tylko inną, a więc nie modyfikujemy pierwotnej tej pierwzsej tabeli, tylko tworzymy nową, ale ma za to elementy: <syntaxhighlight lang="lua"> local tabelka_koncowa={["nazwa2"]="wartość2",["nazwa4"]="wartość4",}; </syntaxhighlight> {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> olju14zqrktcuitrdwgx4sw7gdci9if 555671 555670 2026-09-11T12:44:36Z Persino 2851 555671 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} Są tutaj przedstawwione funkcje tworzenia tabeli. == {{Code|p["TwórzTabelęBezPowtarzającychKluczyTabel"]}} == Funkcja jest analogiem do: {{Code|{{sr|#p["UsuńElementyTabeli"]|p=Parametry}}}}, dla jednej tabeli, a ta funkcja jest dla wielu. Funkcja w tabelce: {{Code|args[1]}}, przy pomocy, której niej, tworzymy elementy, usuwa, tworząc nową tabelę, elementy, którego klucze są w tabelach o numerach większych od jedynki, któremu wartości przyporządkowane są obojętne, byle tylko, by nie były to jako {{Code|nil}}. Najprościej gadając, wartości moją mieć w drugiej tabelce wartość {{Code|true}}, ale nie muszą takie być. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["TwórzTabelęBezPowtarzającychKluczyTabel"]=function(args)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów| | 1 = {{Code|args[1]}} | _1 = Tabela elementów. | 2 = {{Code|args[2]}}, {{Code|args[3]}},... | _2 = Tabele od drugiej wzwyż, którym dzięki im kluczom są usuwane elementy z tej pierwszej. }} Przykłady użycia: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local tabelka_1={["nazwa1"]="wartość1",["nazwa2"]="wartość2",["nazwa3"]="wartość3",["nazwa4"]="wartość4",}; local tabelka_2={["nazwa1"]=true,["nazwa3"]=true,}; local tabela_args={tabelka_1,tabelka_2,}; local tabelka_koncowa=parametry_modul["TwórzTabelęBezPowtarzającychKluczyTabel"](tabela_args); </syntaxhighlight> Stworzona w ten sposób tabelka: {{Code|tabelka_koncowa}}, nie ma takiej samej referencji, co: {{Code|tabelka_1}}, tylko inną, a więc nie modyfikujemy pierwotnej tej pierwzsej tabeli, tylko tworzymy nową, ale ma za to elementy: <syntaxhighlight lang="lua"> local tabelka_koncowa={["nazwa2"]="wartość2",["nazwa4"]="wartość4",}; </syntaxhighlight> {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> pyct72tgt8pu7eic6df9kvvo3esd540 Wikibooks:Moduły/Parametry/Tom XIII 4 63979 555759 555647 2026-09-11T23:08:47Z Persino 2851 /* */ 555759 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == Funkcje prawdy i fałszu - ogólne przedstawienie == W funkcjach: {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}} i {{Code|{{sr|#p.CzyTak|p=Parametry}}}}, uruchomione w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, muszą posiadać dodatkowo parametr {{Parametr|wyspecjalizowana|tak}}, aby dało się w je wsadzić skutecznie parametry do samej tej ramki dziecka, a nie używać parametry szablonu rodzica. == Wzajemna zależność == W tej pierwszej funkcji jest wykorzystywana ta druga, w której w tej pierwszej w parametrze pierwszym, w przypadku łańcuchów znakowych wykorzystywana jest funkcja do usuwania dolnych myślników i odstępów na końcach, a potem jest uruchamiana ta druga. == Uzyskiwane wyniki w zależności od sprawdzanego parametru - różne typy wartości pierwszej zmiennej == === Parametr typu {{Code|string}} === Te funkcje rozważane tutaj powiedziane powyżej w wikikodzie w szablonie rodzicu, czy w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, służą do sprawdzenia, czy wartość, czy jest nierówna ciągowi uzyskanemu pustemu, w przypadku tej pierwszej funkcji, a w przypadku drugiej, czy nie jest ciągiem pustym. === Typu {{Code|number}} === Jeżeli jest to liczba, to czy jest nie równa {{Code|0}}. === Typu {{Code|boolean}} === Czy wartością logiczną jest jako {{Code|true}}. === Typu {{Code|table}} === Dla tabel, czy jest niepustą tabelą. === Typu {{Code|function}} === Ale za to w przypadku funkcji, czy funkcja o nazwie {{Code|zmienna}} z parametrami {{Code|parametry}}, czy zwraca wartość odpowiadająca {{Code|true}}, == Zwracane wartości == Jeżeli funkcja zwróci wartość odpowiadająca prawdziwej, to ta funkcja zwróci znak {{Code|tak}}, w przeciwnym wypadku w wikikodzie zwraca wartość pustą, a w kodzie, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, wartość {{Code|nil}}. == {{Code|CzyTakSilnik}} == Funkcja pomocnicza służąca do liczenia wartości logicznej {{Code|tak}} lub {{Code|nil}} parametrów ramki, w wikikodzie, funkcji {{lpg|lua}} w {{lpr|Lua|Scribunto}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function CzyTakSilnik(args,funkcja)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|args}} | _1 = Tablica elementów z pierwszym elementem do sprawdzenia, z drugim jako nazwa modułu z funkcjami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w takim przypadku ten pierwszy element jest nazwą funkcji, który w połączeniu z nazwą modułu daje referencję do funkcji. | 2 = {{Code|funkcja}} | _2 = Funkcja, za pomocą której sprawdzamy logiczność pierwszego elementu tej tablicy. }} Możliwymi wartościami funkcji parametru {{Code|funkcja}} jest {{Code|CzyTak}} lub {{Code|CzyTakCiąg}} (ta funkcja wykorzystuje funkcję {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}} do swojego argumentu, który służy do sprawdzania, jaki spełnia warunek). Gdy istnieje parametr tablicy {{Code|args}} funkcji o parametrze nienazwanym {{Code|args[2]}}, który jest nazwą modułu z funkcjami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a samą funkcją jest {{Code|args[1]}}, to tak utworzona funkcja jest zmienną {{Code|parametr}}, ma jeżeli jej nie ma, to ona przyjmuje wartość {{Code|args[1]}}, a gdy jednak istnieje ten drugi element, to na podstawie którego zbierane są argumenty ramki nazwane jak nazwane, tzn. klucze i ich wartości przypisuje, a w przypadku parametrów nienazwanych (nie są zbierane elementy w tej tablicy o kluczach o wartości: {{Code|1}} i {{Code|2}}), a te inne klucze są pomniejszane o dwa, w ten sposób jest utworzona tabela {{Code|argsfun}}. Gdy nie ma składowej drugiej tablicy, tzn. {{Code|args[2]}}, to wtedy funkcja sprawdza, czy {{Code|args[1]}} to jest liczba w łańcuchu znakowym, lub bezpośrednio liczba, a jeżeli nie da się jej przetransformować na liczbę, to sprawdza, czy typem tej zmiennej jest {{Code|string}} (czy typem jest szereg), po działaniu funkcją: {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}}, jeśli ma wtedy wartość: {{Code|"true"}}, wtedy ta rozważana na samym początku zmienna przyjmuje wartość {{Code|true}}, {{Code|"false"}}, wtedy {{Code|false}}, {{Code|"nil"}}, wtedy {{Code|nil}}. A jeżeli ta zmienna żadnej tej wartości nie przyjmuje z tych wartości, to wtedy jest transformowana na liczbę, jeżeli da się tą operację dokonać. Na samym końcu jest liczona wartość logiczna z przygotowanymi parametrami, według jednej z dwóch specjalnie przygotowanych funkcji w postaci wywołania ogólnego: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); return (parametry_modul[funkcja]{[1]=parametr,[2]=argsfun,})and "tak" or nil; </syntaxhighlight> Gdzie {{Code|funkcja}}, to {{Code|CzyTak}} lub {{Code|CzyTakCiąg}}, a {{Code|parametr}}, to funkcja w jakimś module lub inna wartość, a {{Code|argsfun}}, to tabela argumentów ramki, dziecka, w kodzie {{lpg|Lua}} w {{lpr|Scribunto}}, w wikikodzie w szablonie rodzicu. Gdy ta funkcja zwróci wartość logiczną odpowiadającą {{Code|true}}, to wtedy zwraca {{Code|tak}}, w przeciwnym wypadku {{Code|nil}}. Ta funkcja jest wykorzystywana, gdy jest uruchamiana w ramce, gdy mamy parametry ramki: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTakCiąg| Wartość |nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wyspecjalizowana=tak}} </syntaxhighlight> Podobnie jest z funkcją {{Code|{{sr|#p.CzyTak|p=Parametry}}}}. A jak jest tworzony parametr zmiennej z powyższych wywołań, to jest powiedziane powyżej. Równie dobrze możemy zefiniować atrapę funkcji {{Code|frame.getParent}}, wtedy: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul["CzyTakCiąg"]{args={ [1]=" Wartość ", [2]="", ["nazwa1"]="wartość1", ["nazwa2"]="wartość2", [3]="wartość3", [4]="wartość4", ["wyspecjalizowana"]="tak", }, getParent=function()end, }; </syntaxhighlight> Czasami tak potrzeba robić, by ominąc zabezpieczenia pewnych funkcji, nawet tutaj. == {{Code|p["CzyTakCiąg"]}} == W tej funkcji parametry mogą być zbierane w osobnych parametrach lub w jednej tablicy albo ta funkcja może być uruchomiona w ramce. Funkcja do swojego działania wykorzystuje do tego {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}} i {{Code|{{sr|#p.CzyTak|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["CzyTakCiąg"]=function(...)...end; </syntaxhighlight> Jeżeli ta funkcja jest uruchomiona w ramce, np. w postaci: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTakCiąg| Wartość |wyspecjalizowana=tak}} </syntaxhighlight> To w tym przypadku funkcja zwraca wartość {{Code|tak}}, tak jak funkcja {{Code|{{sr|#p.CzyTak|p=Parametry}}}}, a w przypadku: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTakCiąg| |wyspecjalizowana=tak}} </syntaxhighlight> To w tym przypadku funkcja zwraca wartość równą ciągowi pustemu, mimo że funkcja {{Code|{{sr|#p.CzyTak|p=Parametry}}}} zwróci wartość {{Code|tak}}. Podobnie jest w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, czyli: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul["CzyTakCiąg"](" Wartość "); </syntaxhighlight> Ta funkcja zwróci wartość {{Code|tak}}. A teraz inny przykład: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul["CzyTakCiąg"](" "); </syntaxhighlight> Ta funkcja zwróci wartość {{Code|nil}}. == {{Code|p.CzyTak}} == W tej funkcji parametry mogą być zbierane w osobnych parametrach lub w jednej tablicy albo ta funkcja może być uruchomiona w ramce. Funkcja do swojego działania nie wykorzystuje do tego {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}}, tak jak to robi {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.CzyTak=function(...)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|1}} lub {{Code|zmienna}} | _1 = Sprawdzana zmienna, może być to funkcją. | 2 = {{Code|2}} lub {{Code|parametry}} | _2 = parametry funkcji, może być to tablica parametrów, jest ona wykorzystywana, gdy powyższy element jest funkcją. }} Jeżeli ta funkcja jest uruchomiona w ramce, np. w postaci: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTak| Wartość |wyspecjalizowana=tak}} </syntaxhighlight> To w tym przypadku funkcja zwraca wartość {{Code|tak}}, tak jak funkcja {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}} A w przypadku: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTak| |wyspecjalizowana=tak}} </syntaxhighlight> To w tym przypadku funkcja zwraca wartość równą ciągowi {{Code|tak}}, mimo że funkcja {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}} zwróci wartość równoważną ciągowi pustemu. <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTak||wyspecjalizowana=tak}} </syntaxhighlight> Ta funkcja uruchomiona w ramce w wikikodzie zwraca wartość równą ciągowi pustemu, tak samo, jak funkcja {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}. Podobnie jest w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, czyli: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul.CzyTak(" Wartość "); </syntaxhighlight> Ta funkcja zwróci wartość {{Code|tak}}. A teraz inny przykład: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul.CzyTak(" "); </syntaxhighlight> Ta funkcja zwróci wartość {{Code|tak}}, niezależnie, czy tym ciągiem jest szereg składający się z samych znaków odstępów. A teraz inny przykład: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul.CzyTak(""); </syntaxhighlight> Ta funkcja wtedy zwróci wartość równą {{Code|nil}} w kodzie {{lpg|Lua}} w {{lpg|Lua|Scribunto}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> hevz61ed1yh0n9i96oyi911j91yi4tb 555760 555759 2026-09-11T23:10:49Z Persino 2851 /* Wzajemna zależność */ 555760 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == Funkcje prawdy i fałszu - ogólne przedstawienie == W funkcjach: {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}} i {{Code|{{sr|#p.CzyTak|p=Parametry}}}}, uruchomione w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, muszą posiadać dodatkowo parametr {{Parametr|wyspecjalizowana|tak}}, aby dało się w je wsadzić skutecznie parametry do samej tej ramki dziecka, a nie używać parametry szablonu rodzica. === Wzajemna zależność === W tej pierwszej funkcji jest wykorzystywana ta druga, w której w tej pierwszej w parametrze pierwszym, w przypadku łańcuchów znakowych wykorzystywana jest funkcja do usuwania dolnych myślników i odstępów na końcach, a potem jest uruchamiana ta druga. == Uzyskiwane wyniki w zależności od sprawdzanego parametru - różne typy wartości pierwszej zmiennej == === Parametr typu {{Code|string}} === Te funkcje rozważane tutaj powiedziane powyżej w wikikodzie w szablonie rodzicu, czy w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, służą do sprawdzenia, czy wartość, czy jest nierówna ciągowi uzyskanemu pustemu, w przypadku tej pierwszej funkcji, a w przypadku drugiej, czy nie jest ciągiem pustym. === Typu {{Code|number}} === Jeżeli jest to liczba, to czy jest nie równa {{Code|0}}. === Typu {{Code|boolean}} === Czy wartością logiczną jest jako {{Code|true}}. === Typu {{Code|table}} === Dla tabel, czy jest niepustą tabelą. === Typu {{Code|function}} === Ale za to w przypadku funkcji, czy funkcja o nazwie {{Code|zmienna}} z parametrami {{Code|parametry}}, czy zwraca wartość odpowiadająca {{Code|true}}, == Zwracane wartości == Jeżeli funkcja zwróci wartość odpowiadająca prawdziwej, to ta funkcja zwróci znak {{Code|tak}}, w przeciwnym wypadku w wikikodzie zwraca wartość pustą, a w kodzie, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, wartość {{Code|nil}}. == {{Code|CzyTakSilnik}} == Funkcja pomocnicza służąca do liczenia wartości logicznej {{Code|tak}} lub {{Code|nil}} parametrów ramki, w wikikodzie, funkcji {{lpg|lua}} w {{lpr|Lua|Scribunto}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function CzyTakSilnik(args,funkcja)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|args}} | _1 = Tablica elementów z pierwszym elementem do sprawdzenia, z drugim jako nazwa modułu z funkcjami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w takim przypadku ten pierwszy element jest nazwą funkcji, który w połączeniu z nazwą modułu daje referencję do funkcji. | 2 = {{Code|funkcja}} | _2 = Funkcja, za pomocą której sprawdzamy logiczność pierwszego elementu tej tablicy. }} Możliwymi wartościami funkcji parametru {{Code|funkcja}} jest {{Code|CzyTak}} lub {{Code|CzyTakCiąg}} (ta funkcja wykorzystuje funkcję {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}} do swojego argumentu, który służy do sprawdzania, jaki spełnia warunek). Gdy istnieje parametr tablicy {{Code|args}} funkcji o parametrze nienazwanym {{Code|args[2]}}, który jest nazwą modułu z funkcjami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a samą funkcją jest {{Code|args[1]}}, to tak utworzona funkcja jest zmienną {{Code|parametr}}, ma jeżeli jej nie ma, to ona przyjmuje wartość {{Code|args[1]}}, a gdy jednak istnieje ten drugi element, to na podstawie którego zbierane są argumenty ramki nazwane jak nazwane, tzn. klucze i ich wartości przypisuje, a w przypadku parametrów nienazwanych (nie są zbierane elementy w tej tablicy o kluczach o wartości: {{Code|1}} i {{Code|2}}), a te inne klucze są pomniejszane o dwa, w ten sposób jest utworzona tabela {{Code|argsfun}}. Gdy nie ma składowej drugiej tablicy, tzn. {{Code|args[2]}}, to wtedy funkcja sprawdza, czy {{Code|args[1]}} to jest liczba w łańcuchu znakowym, lub bezpośrednio liczba, a jeżeli nie da się jej przetransformować na liczbę, to sprawdza, czy typem tej zmiennej jest {{Code|string}} (czy typem jest szereg), po działaniu funkcją: {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}}, jeśli ma wtedy wartość: {{Code|"true"}}, wtedy ta rozważana na samym początku zmienna przyjmuje wartość {{Code|true}}, {{Code|"false"}}, wtedy {{Code|false}}, {{Code|"nil"}}, wtedy {{Code|nil}}. A jeżeli ta zmienna żadnej tej wartości nie przyjmuje z tych wartości, to wtedy jest transformowana na liczbę, jeżeli da się tą operację dokonać. Na samym końcu jest liczona wartość logiczna z przygotowanymi parametrami, według jednej z dwóch specjalnie przygotowanych funkcji w postaci wywołania ogólnego: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); return (parametry_modul[funkcja]{[1]=parametr,[2]=argsfun,})and "tak" or nil; </syntaxhighlight> Gdzie {{Code|funkcja}}, to {{Code|CzyTak}} lub {{Code|CzyTakCiąg}}, a {{Code|parametr}}, to funkcja w jakimś module lub inna wartość, a {{Code|argsfun}}, to tabela argumentów ramki, dziecka, w kodzie {{lpg|Lua}} w {{lpr|Scribunto}}, w wikikodzie w szablonie rodzicu. Gdy ta funkcja zwróci wartość logiczną odpowiadającą {{Code|true}}, to wtedy zwraca {{Code|tak}}, w przeciwnym wypadku {{Code|nil}}. Ta funkcja jest wykorzystywana, gdy jest uruchamiana w ramce, gdy mamy parametry ramki: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTakCiąg| Wartość |nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wyspecjalizowana=tak}} </syntaxhighlight> Podobnie jest z funkcją {{Code|{{sr|#p.CzyTak|p=Parametry}}}}. A jak jest tworzony parametr zmiennej z powyższych wywołań, to jest powiedziane powyżej. Równie dobrze możemy zefiniować atrapę funkcji {{Code|frame.getParent}}, wtedy: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul["CzyTakCiąg"]{args={ [1]=" Wartość ", [2]="", ["nazwa1"]="wartość1", ["nazwa2"]="wartość2", [3]="wartość3", [4]="wartość4", ["wyspecjalizowana"]="tak", }, getParent=function()end, }; </syntaxhighlight> Czasami tak potrzeba robić, by ominąc zabezpieczenia pewnych funkcji, nawet tutaj. == {{Code|p["CzyTakCiąg"]}} == W tej funkcji parametry mogą być zbierane w osobnych parametrach lub w jednej tablicy albo ta funkcja może być uruchomiona w ramce. Funkcja do swojego działania wykorzystuje do tego {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}} i {{Code|{{sr|#p.CzyTak|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["CzyTakCiąg"]=function(...)...end; </syntaxhighlight> Jeżeli ta funkcja jest uruchomiona w ramce, np. w postaci: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTakCiąg| Wartość |wyspecjalizowana=tak}} </syntaxhighlight> To w tym przypadku funkcja zwraca wartość {{Code|tak}}, tak jak funkcja {{Code|{{sr|#p.CzyTak|p=Parametry}}}}, a w przypadku: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTakCiąg| |wyspecjalizowana=tak}} </syntaxhighlight> To w tym przypadku funkcja zwraca wartość równą ciągowi pustemu, mimo że funkcja {{Code|{{sr|#p.CzyTak|p=Parametry}}}} zwróci wartość {{Code|tak}}. Podobnie jest w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, czyli: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul["CzyTakCiąg"](" Wartość "); </syntaxhighlight> Ta funkcja zwróci wartość {{Code|tak}}. A teraz inny przykład: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul["CzyTakCiąg"](" "); </syntaxhighlight> Ta funkcja zwróci wartość {{Code|nil}}. == {{Code|p.CzyTak}} == W tej funkcji parametry mogą być zbierane w osobnych parametrach lub w jednej tablicy albo ta funkcja może być uruchomiona w ramce. Funkcja do swojego działania nie wykorzystuje do tego {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}}, tak jak to robi {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.CzyTak=function(...)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|1}} lub {{Code|zmienna}} | _1 = Sprawdzana zmienna, może być to funkcją. | 2 = {{Code|2}} lub {{Code|parametry}} | _2 = parametry funkcji, może być to tablica parametrów, jest ona wykorzystywana, gdy powyższy element jest funkcją. }} Jeżeli ta funkcja jest uruchomiona w ramce, np. w postaci: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTak| Wartość |wyspecjalizowana=tak}} </syntaxhighlight> To w tym przypadku funkcja zwraca wartość {{Code|tak}}, tak jak funkcja {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}} A w przypadku: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTak| |wyspecjalizowana=tak}} </syntaxhighlight> To w tym przypadku funkcja zwraca wartość równą ciągowi {{Code|tak}}, mimo że funkcja {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}} zwróci wartość równoważną ciągowi pustemu. <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTak||wyspecjalizowana=tak}} </syntaxhighlight> Ta funkcja uruchomiona w ramce w wikikodzie zwraca wartość równą ciągowi pustemu, tak samo, jak funkcja {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}. Podobnie jest w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, czyli: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul.CzyTak(" Wartość "); </syntaxhighlight> Ta funkcja zwróci wartość {{Code|tak}}. A teraz inny przykład: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul.CzyTak(" "); </syntaxhighlight> Ta funkcja zwróci wartość {{Code|tak}}, niezależnie, czy tym ciągiem jest szereg składający się z samych znaków odstępów. A teraz inny przykład: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul.CzyTak(""); </syntaxhighlight> Ta funkcja wtedy zwróci wartość równą {{Code|nil}} w kodzie {{lpg|Lua}} w {{lpg|Lua|Scribunto}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 102n7wulqh3j0fsclrmo47yvmkg7kbu 555761 555760 2026-09-11T23:11:53Z Persino 2851 555761 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == Funkcje prawdy i fałszu - ogólne przedstawienie == W funkcjach: {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}} i {{Code|{{sr|#p.CzyTak|p=Parametry}}}}, uruchomione w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, muszą posiadać dodatkowo parametr {{Parametr|wyspecjalizowana|tak}}, aby dało się w je wsadzić skutecznie parametry do samej tej ramki dziecka, a nie używać parametry szablonu rodzica. === Wzajemna zależność === W tej pierwszej funkcji jest wykorzystywana ta druga, w której w tej pierwszej w parametrze pierwszym, w przypadku łańcuchów znakowych wykorzystywana jest funkcja do usuwania dolnych myślników i odstępów na końcach, a potem jest uruchamiana ta druga. === Uzyskiwane wyniki w zależności od sprawdzanego parametru - różne typy wartości pierwszej zmiennej === ==== Parametr typu {{Code|string}} ==== Te funkcje rozważane tutaj powiedziane powyżej w wikikodzie w szablonie rodzicu, czy w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, służą do sprawdzenia, czy wartość, czy jest nierówna ciągowi uzyskanemu pustemu, w przypadku tej pierwszej funkcji, a w przypadku drugiej, czy nie jest ciągiem pustym. ==== Typu {{Code|number}} ==== Jeżeli jest to liczba, to czy jest nie równa {{Code|0}}. ==== Typu {{Code|boolean}} ==== Czy wartością logiczną jest jako {{Code|true}}. ==== Typu {{Code|table}} ==== Dla tabel, czy jest niepustą tabelą. ==== Typu {{Code|function}} ==== Ale za to w przypadku funkcji, czy funkcja o nazwie {{Code|zmienna}} z parametrami {{Code|parametry}}, czy zwraca wartość odpowiadająca {{Code|true}}, == Zwracane wartości == Jeżeli funkcja zwróci wartość odpowiadająca prawdziwej, to ta funkcja zwróci znak {{Code|tak}}, w przeciwnym wypadku w wikikodzie zwraca wartość pustą, a w kodzie, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, wartość {{Code|nil}}. == {{Code|CzyTakSilnik}} == Funkcja pomocnicza służąca do liczenia wartości logicznej {{Code|tak}} lub {{Code|nil}} parametrów ramki, w wikikodzie, funkcji {{lpg|lua}} w {{lpr|Lua|Scribunto}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function CzyTakSilnik(args,funkcja)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|args}} | _1 = Tablica elementów z pierwszym elementem do sprawdzenia, z drugim jako nazwa modułu z funkcjami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w takim przypadku ten pierwszy element jest nazwą funkcji, który w połączeniu z nazwą modułu daje referencję do funkcji. | 2 = {{Code|funkcja}} | _2 = Funkcja, za pomocą której sprawdzamy logiczność pierwszego elementu tej tablicy. }} Możliwymi wartościami funkcji parametru {{Code|funkcja}} jest {{Code|CzyTak}} lub {{Code|CzyTakCiąg}} (ta funkcja wykorzystuje funkcję {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}} do swojego argumentu, który służy do sprawdzania, jaki spełnia warunek). Gdy istnieje parametr tablicy {{Code|args}} funkcji o parametrze nienazwanym {{Code|args[2]}}, który jest nazwą modułu z funkcjami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a samą funkcją jest {{Code|args[1]}}, to tak utworzona funkcja jest zmienną {{Code|parametr}}, ma jeżeli jej nie ma, to ona przyjmuje wartość {{Code|args[1]}}, a gdy jednak istnieje ten drugi element, to na podstawie którego zbierane są argumenty ramki nazwane jak nazwane, tzn. klucze i ich wartości przypisuje, a w przypadku parametrów nienazwanych (nie są zbierane elementy w tej tablicy o kluczach o wartości: {{Code|1}} i {{Code|2}}), a te inne klucze są pomniejszane o dwa, w ten sposób jest utworzona tabela {{Code|argsfun}}. Gdy nie ma składowej drugiej tablicy, tzn. {{Code|args[2]}}, to wtedy funkcja sprawdza, czy {{Code|args[1]}} to jest liczba w łańcuchu znakowym, lub bezpośrednio liczba, a jeżeli nie da się jej przetransformować na liczbę, to sprawdza, czy typem tej zmiennej jest {{Code|string}} (czy typem jest szereg), po działaniu funkcją: {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}}, jeśli ma wtedy wartość: {{Code|"true"}}, wtedy ta rozważana na samym początku zmienna przyjmuje wartość {{Code|true}}, {{Code|"false"}}, wtedy {{Code|false}}, {{Code|"nil"}}, wtedy {{Code|nil}}. A jeżeli ta zmienna żadnej tej wartości nie przyjmuje z tych wartości, to wtedy jest transformowana na liczbę, jeżeli da się tą operację dokonać. Na samym końcu jest liczona wartość logiczna z przygotowanymi parametrami, według jednej z dwóch specjalnie przygotowanych funkcji w postaci wywołania ogólnego: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); return (parametry_modul[funkcja]{[1]=parametr,[2]=argsfun,})and "tak" or nil; </syntaxhighlight> Gdzie {{Code|funkcja}}, to {{Code|CzyTak}} lub {{Code|CzyTakCiąg}}, a {{Code|parametr}}, to funkcja w jakimś module lub inna wartość, a {{Code|argsfun}}, to tabela argumentów ramki, dziecka, w kodzie {{lpg|Lua}} w {{lpr|Scribunto}}, w wikikodzie w szablonie rodzicu. Gdy ta funkcja zwróci wartość logiczną odpowiadającą {{Code|true}}, to wtedy zwraca {{Code|tak}}, w przeciwnym wypadku {{Code|nil}}. Ta funkcja jest wykorzystywana, gdy jest uruchamiana w ramce, gdy mamy parametry ramki: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTakCiąg| Wartość |nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wyspecjalizowana=tak}} </syntaxhighlight> Podobnie jest z funkcją {{Code|{{sr|#p.CzyTak|p=Parametry}}}}. A jak jest tworzony parametr zmiennej z powyższych wywołań, to jest powiedziane powyżej. Równie dobrze możemy zefiniować atrapę funkcji {{Code|frame.getParent}}, wtedy: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul["CzyTakCiąg"]{args={ [1]=" Wartość ", [2]="", ["nazwa1"]="wartość1", ["nazwa2"]="wartość2", [3]="wartość3", [4]="wartość4", ["wyspecjalizowana"]="tak", }, getParent=function()end, }; </syntaxhighlight> Czasami tak potrzeba robić, by ominąc zabezpieczenia pewnych funkcji, nawet tutaj. == {{Code|p["CzyTakCiąg"]}} == W tej funkcji parametry mogą być zbierane w osobnych parametrach lub w jednej tablicy albo ta funkcja może być uruchomiona w ramce. Funkcja do swojego działania wykorzystuje do tego {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}} i {{Code|{{sr|#p.CzyTak|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["CzyTakCiąg"]=function(...)...end; </syntaxhighlight> Jeżeli ta funkcja jest uruchomiona w ramce, np. w postaci: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTakCiąg| Wartość |wyspecjalizowana=tak}} </syntaxhighlight> To w tym przypadku funkcja zwraca wartość {{Code|tak}}, tak jak funkcja {{Code|{{sr|#p.CzyTak|p=Parametry}}}}, a w przypadku: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTakCiąg| |wyspecjalizowana=tak}} </syntaxhighlight> To w tym przypadku funkcja zwraca wartość równą ciągowi pustemu, mimo że funkcja {{Code|{{sr|#p.CzyTak|p=Parametry}}}} zwróci wartość {{Code|tak}}. Podobnie jest w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, czyli: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul["CzyTakCiąg"](" Wartość "); </syntaxhighlight> Ta funkcja zwróci wartość {{Code|tak}}. A teraz inny przykład: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul["CzyTakCiąg"](" "); </syntaxhighlight> Ta funkcja zwróci wartość {{Code|nil}}. == {{Code|p.CzyTak}} == W tej funkcji parametry mogą być zbierane w osobnych parametrach lub w jednej tablicy albo ta funkcja może być uruchomiona w ramce. Funkcja do swojego działania nie wykorzystuje do tego {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}}, tak jak to robi {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.CzyTak=function(...)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|1}} lub {{Code|zmienna}} | _1 = Sprawdzana zmienna, może być to funkcją. | 2 = {{Code|2}} lub {{Code|parametry}} | _2 = parametry funkcji, może być to tablica parametrów, jest ona wykorzystywana, gdy powyższy element jest funkcją. }} Jeżeli ta funkcja jest uruchomiona w ramce, np. w postaci: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTak| Wartość |wyspecjalizowana=tak}} </syntaxhighlight> To w tym przypadku funkcja zwraca wartość {{Code|tak}}, tak jak funkcja {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}} A w przypadku: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTak| |wyspecjalizowana=tak}} </syntaxhighlight> To w tym przypadku funkcja zwraca wartość równą ciągowi {{Code|tak}}, mimo że funkcja {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}} zwróci wartość równoważną ciągowi pustemu. <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTak||wyspecjalizowana=tak}} </syntaxhighlight> Ta funkcja uruchomiona w ramce w wikikodzie zwraca wartość równą ciągowi pustemu, tak samo, jak funkcja {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}. Podobnie jest w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, czyli: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul.CzyTak(" Wartość "); </syntaxhighlight> Ta funkcja zwróci wartość {{Code|tak}}. A teraz inny przykład: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul.CzyTak(" "); </syntaxhighlight> Ta funkcja zwróci wartość {{Code|tak}}, niezależnie, czy tym ciągiem jest szereg składający się z samych znaków odstępów. A teraz inny przykład: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul.CzyTak(""); </syntaxhighlight> Ta funkcja wtedy zwróci wartość równą {{Code|nil}} w kodzie {{lpg|Lua}} w {{lpg|Lua|Scribunto}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> cmzi74ylwi27b7zpdg4m3tp75kwfi0d 555762 555761 2026-09-11T23:12:24Z Persino 2851 555762 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == Funkcje prawdy i fałszu - ogólne przedstawienie == W funkcjach: {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}} i {{Code|{{sr|#p.CzyTak|p=Parametry}}}}, uruchomione w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, muszą posiadać dodatkowo parametr {{Parametr|wyspecjalizowana|tak}}, aby dało się w je wsadzić skutecznie parametry do samej tej ramki dziecka, a nie używać parametry szablonu rodzica. === Wzajemna zależność === W tej pierwszej funkcji jest wykorzystywana ta druga, w której w tej pierwszej w parametrze pierwszym, w przypadku łańcuchów znakowych wykorzystywana jest funkcja do usuwania dolnych myślników i odstępów na końcach, a potem jest uruchamiana ta druga. === Uzyskiwane wyniki w zależności od sprawdzanego parametru - różne typy wartości pierwszej zmiennej === ==== Parametr typu {{Code|string}} ==== Te funkcje rozważane tutaj powiedziane powyżej w wikikodzie w szablonie rodzicu, czy w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, służą do sprawdzenia, czy wartość, czy jest nierówna ciągowi uzyskanemu pustemu, w przypadku tej pierwszej funkcji, a w przypadku drugiej, czy nie jest ciągiem pustym. ==== Typu {{Code|number}} ==== Jeżeli jest to liczba, to czy jest nie równa {{Code|0}}. ==== Typu {{Code|boolean}} ==== Czy wartością logiczną jest jako {{Code|true}}. ==== Typu {{Code|table}} ==== Dla tabel, czy jest niepustą tabelą. ==== Typu {{Code|function}} ==== Ale za to w przypadku funkcji, czy funkcja o nazwie {{Code|zmienna}} z parametrami {{Code|parametry}}, czy zwraca wartość odpowiadająca {{Code|true}}, === Zwracane wartości === Jeżeli funkcja zwróci wartość odpowiadająca prawdziwej, to ta funkcja zwróci znak {{Code|tak}}, w przeciwnym wypadku w wikikodzie zwraca wartość pustą, a w kodzie, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, wartość {{Code|nil}}. == {{Code|CzyTakSilnik}} == Funkcja pomocnicza służąca do liczenia wartości logicznej {{Code|tak}} lub {{Code|nil}} parametrów ramki, w wikikodzie, funkcji {{lpg|lua}} w {{lpr|Lua|Scribunto}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function CzyTakSilnik(args,funkcja)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|args}} | _1 = Tablica elementów z pierwszym elementem do sprawdzenia, z drugim jako nazwa modułu z funkcjami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w takim przypadku ten pierwszy element jest nazwą funkcji, który w połączeniu z nazwą modułu daje referencję do funkcji. | 2 = {{Code|funkcja}} | _2 = Funkcja, za pomocą której sprawdzamy logiczność pierwszego elementu tej tablicy. }} Możliwymi wartościami funkcji parametru {{Code|funkcja}} jest {{Code|CzyTak}} lub {{Code|CzyTakCiąg}} (ta funkcja wykorzystuje funkcję {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}} do swojego argumentu, który służy do sprawdzania, jaki spełnia warunek). Gdy istnieje parametr tablicy {{Code|args}} funkcji o parametrze nienazwanym {{Code|args[2]}}, który jest nazwą modułu z funkcjami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a samą funkcją jest {{Code|args[1]}}, to tak utworzona funkcja jest zmienną {{Code|parametr}}, ma jeżeli jej nie ma, to ona przyjmuje wartość {{Code|args[1]}}, a gdy jednak istnieje ten drugi element, to na podstawie którego zbierane są argumenty ramki nazwane jak nazwane, tzn. klucze i ich wartości przypisuje, a w przypadku parametrów nienazwanych (nie są zbierane elementy w tej tablicy o kluczach o wartości: {{Code|1}} i {{Code|2}}), a te inne klucze są pomniejszane o dwa, w ten sposób jest utworzona tabela {{Code|argsfun}}. Gdy nie ma składowej drugiej tablicy, tzn. {{Code|args[2]}}, to wtedy funkcja sprawdza, czy {{Code|args[1]}} to jest liczba w łańcuchu znakowym, lub bezpośrednio liczba, a jeżeli nie da się jej przetransformować na liczbę, to sprawdza, czy typem tej zmiennej jest {{Code|string}} (czy typem jest szereg), po działaniu funkcją: {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}}, jeśli ma wtedy wartość: {{Code|"true"}}, wtedy ta rozważana na samym początku zmienna przyjmuje wartość {{Code|true}}, {{Code|"false"}}, wtedy {{Code|false}}, {{Code|"nil"}}, wtedy {{Code|nil}}. A jeżeli ta zmienna żadnej tej wartości nie przyjmuje z tych wartości, to wtedy jest transformowana na liczbę, jeżeli da się tą operację dokonać. Na samym końcu jest liczona wartość logiczna z przygotowanymi parametrami, według jednej z dwóch specjalnie przygotowanych funkcji w postaci wywołania ogólnego: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); return (parametry_modul[funkcja]{[1]=parametr,[2]=argsfun,})and "tak" or nil; </syntaxhighlight> Gdzie {{Code|funkcja}}, to {{Code|CzyTak}} lub {{Code|CzyTakCiąg}}, a {{Code|parametr}}, to funkcja w jakimś module lub inna wartość, a {{Code|argsfun}}, to tabela argumentów ramki, dziecka, w kodzie {{lpg|Lua}} w {{lpr|Scribunto}}, w wikikodzie w szablonie rodzicu. Gdy ta funkcja zwróci wartość logiczną odpowiadającą {{Code|true}}, to wtedy zwraca {{Code|tak}}, w przeciwnym wypadku {{Code|nil}}. Ta funkcja jest wykorzystywana, gdy jest uruchamiana w ramce, gdy mamy parametry ramki: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTakCiąg| Wartość |nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wyspecjalizowana=tak}} </syntaxhighlight> Podobnie jest z funkcją {{Code|{{sr|#p.CzyTak|p=Parametry}}}}. A jak jest tworzony parametr zmiennej z powyższych wywołań, to jest powiedziane powyżej. Równie dobrze możemy zefiniować atrapę funkcji {{Code|frame.getParent}}, wtedy: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul["CzyTakCiąg"]{args={ [1]=" Wartość ", [2]="", ["nazwa1"]="wartość1", ["nazwa2"]="wartość2", [3]="wartość3", [4]="wartość4", ["wyspecjalizowana"]="tak", }, getParent=function()end, }; </syntaxhighlight> Czasami tak potrzeba robić, by ominąc zabezpieczenia pewnych funkcji, nawet tutaj. == {{Code|p["CzyTakCiąg"]}} == W tej funkcji parametry mogą być zbierane w osobnych parametrach lub w jednej tablicy albo ta funkcja może być uruchomiona w ramce. Funkcja do swojego działania wykorzystuje do tego {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}} i {{Code|{{sr|#p.CzyTak|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["CzyTakCiąg"]=function(...)...end; </syntaxhighlight> Jeżeli ta funkcja jest uruchomiona w ramce, np. w postaci: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTakCiąg| Wartość |wyspecjalizowana=tak}} </syntaxhighlight> To w tym przypadku funkcja zwraca wartość {{Code|tak}}, tak jak funkcja {{Code|{{sr|#p.CzyTak|p=Parametry}}}}, a w przypadku: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTakCiąg| |wyspecjalizowana=tak}} </syntaxhighlight> To w tym przypadku funkcja zwraca wartość równą ciągowi pustemu, mimo że funkcja {{Code|{{sr|#p.CzyTak|p=Parametry}}}} zwróci wartość {{Code|tak}}. Podobnie jest w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, czyli: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul["CzyTakCiąg"](" Wartość "); </syntaxhighlight> Ta funkcja zwróci wartość {{Code|tak}}. A teraz inny przykład: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul["CzyTakCiąg"](" "); </syntaxhighlight> Ta funkcja zwróci wartość {{Code|nil}}. == {{Code|p.CzyTak}} == W tej funkcji parametry mogą być zbierane w osobnych parametrach lub w jednej tablicy albo ta funkcja może być uruchomiona w ramce. Funkcja do swojego działania nie wykorzystuje do tego {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}}, tak jak to robi {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.CzyTak=function(...)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|1}} lub {{Code|zmienna}} | _1 = Sprawdzana zmienna, może być to funkcją. | 2 = {{Code|2}} lub {{Code|parametry}} | _2 = parametry funkcji, może być to tablica parametrów, jest ona wykorzystywana, gdy powyższy element jest funkcją. }} Jeżeli ta funkcja jest uruchomiona w ramce, np. w postaci: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTak| Wartość |wyspecjalizowana=tak}} </syntaxhighlight> To w tym przypadku funkcja zwraca wartość {{Code|tak}}, tak jak funkcja {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}} A w przypadku: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTak| |wyspecjalizowana=tak}} </syntaxhighlight> To w tym przypadku funkcja zwraca wartość równą ciągowi {{Code|tak}}, mimo że funkcja {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}} zwróci wartość równoważną ciągowi pustemu. <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTak||wyspecjalizowana=tak}} </syntaxhighlight> Ta funkcja uruchomiona w ramce w wikikodzie zwraca wartość równą ciągowi pustemu, tak samo, jak funkcja {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}. Podobnie jest w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, czyli: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul.CzyTak(" Wartość "); </syntaxhighlight> Ta funkcja zwróci wartość {{Code|tak}}. A teraz inny przykład: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul.CzyTak(" "); </syntaxhighlight> Ta funkcja zwróci wartość {{Code|tak}}, niezależnie, czy tym ciągiem jest szereg składający się z samych znaków odstępów. A teraz inny przykład: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul.CzyTak(""); </syntaxhighlight> Ta funkcja wtedy zwróci wartość równą {{Code|nil}} w kodzie {{lpg|Lua}} w {{lpg|Lua|Scribunto}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> qxp7qqinang55rhs6apm82v3eimaed6 555763 555762 2026-09-11T23:13:59Z Persino 2851 555763 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == Funkcje prawdy i fałszu - ogólne przedstawienie == W funkcjach: {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}} i {{Code|{{sr|#p.CzyTak|p=Parametry}}}}, uruchomione w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, muszą posiadać dodatkowo parametr {{Parametr|wyspecjalizowana|tak}}, aby dało się w je wsadzić skutecznie parametry do samej tej ramki dziecka, a nie używać parametry szablonu rodzica. === Wzajemna zależność === W tej pierwszej funkcji jest wykorzystywana ta druga, w której w tej pierwszej w parametrze pierwszym, w przypadku łańcuchów znakowych wykorzystywana jest funkcja do usuwania dolnych myślników i odstępów na końcach, a potem jest uruchamiana ta druga. === Uzyskiwane wyniki w zależności od sprawdzanego parametru - różne typy wartości pierwszej zmiennej === ==== Parametr typu {{Code|string}} ==== Te funkcje rozważane tutaj powiedziane powyżej w wikikodzie w szablonie rodzicu, czy w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, służą do sprawdzenia, czy wartość, czy jest nierówna ciągowi uzyskanemu pustemu, w przypadku tej pierwszej funkcji, a w przypadku drugiej, czy nie jest ciągiem pustym. ==== Typu {{Code|number}} ==== Jeżeli jest to liczba, to czy jest nie równa {{Code|0}}. ==== Typu {{Code|boolean}} ==== Czy wartością logiczną jest jako {{Code|true}}. ==== Typu {{Code|table}} ==== Dla tabel, czy jest niepustą tabelą. ==== Typu {{Code|function}} ==== Ale za to w przypadku funkcji, czy funkcja o nazwie {{Code|zmienna}} z parametrami {{Code|parametry}}, czy zwraca wartość odpowiadająca {{Code|true}}, === Zwracane wartości === Jeżeli funkcja zwróci wartość odpowiadająca prawdziwej, to ta funkcja zwróci znak {{Code|tak}}, w przeciwnym wypadku w wikikodzie zwraca wartość pustą, a w kodzie, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, wartość {{Code|nil}}. == {{Code|CzyTakSilnik}} == Funkcja pomocnicza służąca do liczenia wartości logicznej {{Code|tak}} lub {{Code|nil}} parametrów ramki, w wikikodzie, funkcji {{lpg|lua}} w {{lpr|Lua|Scribunto}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function CzyTakSilnik(args,funkcja)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|args}} | _1 = Tablica elementów z pierwszym elementem do sprawdzenia, z drugim jako nazwa modułu z funkcjami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w takim przypadku ten pierwszy element jest nazwą funkcji, który w połączeniu z nazwą modułu daje referencję do funkcji. | 2 = {{Code|funkcja}} | _2 = Funkcja, za pomocą której sprawdzamy logiczność pierwszego elementu tej tablicy. }} Możliwymi wartościami funkcji parametru {{Code|funkcja}} jest {{Code|CzyTak}} lub {{Code|CzyTakCiąg}} (ta funkcja wykorzystuje funkcję {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}} do swojego argumentu, który służy do sprawdzania, jaki spełnia warunek). Gdy istnieje parametr tablicy {{Code|args}} funkcji o parametrze nienazwanym {{Code|args[2]}}, który jest nazwą modułu z funkcjami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a samą funkcją jest {{Code|args[1]}}, to tak utworzona funkcja jest zmienną {{Code|parametr}}, ma jeżeli jej nie ma, to ona przyjmuje wartość {{Code|args[1]}}, a gdy jednak istnieje ten drugi element, to na podstawie którego zbierane są argumenty ramki nazwane jak nazwane, tzn. klucze i ich wartości przypisuje, a w przypadku parametrów nienazwanych (nie są zbierane elementy w tej tablicy o kluczach o wartości: {{Code|1}} i {{Code|2}}), a te inne klucze są pomniejszane o dwa, w ten sposób jest utworzona tabela {{Code|argsfun}}. Gdy nie ma składowej drugiej tablicy, tzn. {{Code|args[2]}}, to wtedy funkcja sprawdza, czy {{Code|args[1]}} to jest liczba w łańcuchu znakowym, lub bezpośrednio liczba, a jeżeli nie da się jej przetransformować na liczbę, to sprawdza, czy typem tej zmiennej jest {{Code|string}} (czy typem jest szereg), po działaniu funkcją: {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}}, jeśli ma wtedy wartość: {{Code|"true"}}, wtedy ta rozważana na samym początku zmienna przyjmuje wartość {{Code|true}}, {{Code|"false"}}, wtedy {{Code|false}}, {{Code|"nil"}}, wtedy {{Code|nil}}. A jeżeli ta zmienna żadnej tej wartości nie przyjmuje z tych wartości, to wtedy jest transformowana na liczbę, jeżeli da się tą operację dokonać. Na samym końcu jest liczona wartość logiczna z przygotowanymi parametrami, według jednej z dwóch specjalnie przygotowanych funkcji w postaci wywołania ogólnego: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); return (parametry_modul[funkcja]{[1]=parametr,[2]=argsfun,})and "tak" or nil; </syntaxhighlight> Gdzie {{Code|funkcja}}, to {{Code|CzyTak}} lub {{Code|CzyTakCiąg}}, a {{Code|parametr}}, to funkcja w jakimś module lub inna wartość, a {{Code|argsfun}}, to tabela argumentów ramki, dziecka, w kodzie {{lpg|Lua}} w {{lpr|Scribunto}}, w wikikodzie w szablonie rodzicu. Gdy ta funkcja zwróci wartość logiczną odpowiadającą {{Code|true}}, to wtedy zwraca {{Code|tak}}, w przeciwnym wypadku {{Code|nil}}. Ta funkcja jest wykorzystywana, gdy jest uruchamiana w ramce, gdy mamy parametry ramki: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTakCiąg| Wartość |nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wyspecjalizowana=tak}} </syntaxhighlight> Podobnie jest z funkcją {{Code|{{sr|#p.CzyTak|p=Parametry}}}}. A jak jest tworzony parametr zmiennej z powyższych wywołań, to jest powiedziane powyżej. Równie dobrze możemy zefiniować atrapę funkcji {{Code|frame.getParent}}, wtedy: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul["CzyTakCiąg"]{args={ [1]=" Wartość ", [2]="", ["nazwa1"]="wartość1", ["nazwa2"]="wartość2", [3]="wartość3", [4]="wartość4", ["wyspecjalizowana"]="tak", }, getParent=function()end, }; </syntaxhighlight> Czasami tak potrzeba robić, by ominąc zabezpieczenia pewnych funkcji, nawet tutaj. == {{Code|p["CzyTakCiąg"]}} == W tej funkcji parametry mogą być zbierane w osobnych parametrach lub w jednej tablicy albo ta funkcja może być uruchomiona w ramce. Funkcja do swojego działania wykorzystuje do tego {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}} i {{Code|{{sr|#p.CzyTak|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["CzyTakCiąg"]=function(...)...end; </syntaxhighlight> Jeżeli ta funkcja jest uruchomiona w ramce, np. w postaci: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTakCiąg| Wartość |wyspecjalizowana=tak}} </syntaxhighlight> To w tym przypadku funkcja zwraca wartość {{Code|tak}}, tak jak funkcja {{Code|{{sr|#p.CzyTak|p=Parametry}}}}, a w przypadku: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTakCiąg| |wyspecjalizowana=tak}} </syntaxhighlight> To w tym przypadku funkcja zwraca wartość równą ciągowi pustemu, mimo że funkcja {{Code|{{sr|#p.CzyTak|p=Parametry}}}} zwróci wartość {{Code|tak}}. Podobnie jest w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, czyli: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul["CzyTakCiąg"](" Wartość "); </syntaxhighlight> Ta funkcja zwróci wartość {{Code|tak}}. A teraz inny przykład: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul["CzyTakCiąg"](" "); </syntaxhighlight> Ta funkcja zwróci wartość {{Code|nil}}. == {{Code|p.CzyTak}} == W tej funkcji parametry mogą być zbierane w osobnych parametrach lub w jednej tablicy albo ta funkcja może być uruchomiona w ramce. Funkcja do swojego działania nie wykorzystuje do tego {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}}, tak jak to robi {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.CzyTak=function(...)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|1}} lub {{Code|zmienna}} | _1 = Sprawdzana zmienna, może być to funkcją. | 2 = {{Code|2}} lub {{Code|parametry}} | _2 = Parametry funkcji, może być to tablica parametrów, jest ona wykorzystywana, gdy powyższy element jest funkcją. }} Jeżeli ta funkcja jest uruchomiona w ramce, np. w postaci: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTak| Wartość |wyspecjalizowana=tak}} </syntaxhighlight> To w tym przypadku funkcja zwraca wartość {{Code|tak}}, tak jak funkcja {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}} A w przypadku: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTak| |wyspecjalizowana=tak}} </syntaxhighlight> To w tym przypadku funkcja zwraca wartość równą ciągowi {{Code|tak}}, mimo że funkcja {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}} zwróci wartość równoważną ciągowi pustemu. <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTak||wyspecjalizowana=tak}} </syntaxhighlight> Ta funkcja uruchomiona w ramce w wikikodzie zwraca wartość równą ciągowi pustemu, tak samo, jak funkcja {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}. Podobnie jest w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, czyli: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul.CzyTak(" Wartość "); </syntaxhighlight> Ta funkcja zwróci wartość {{Code|tak}}. A teraz inny przykład: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul.CzyTak(" "); </syntaxhighlight> Ta funkcja zwróci wartość {{Code|tak}}, niezależnie, czy tym ciągiem jest szereg składający się z samych znaków odstępów. A teraz inny przykład: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul.CzyTak(""); </syntaxhighlight> Ta funkcja wtedy zwróci wartość równą {{Code|nil}} w kodzie {{lpg|Lua}} w {{lpg|Lua|Scribunto}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> ld0em8jjzhqoa5zhzhl6uzjz65k2dnn 555764 555763 2026-09-11T23:47:21Z Persino 2851 /* CzyTakSilnik */ 555764 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == Funkcje prawdy i fałszu - ogólne przedstawienie == W funkcjach: {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}} i {{Code|{{sr|#p.CzyTak|p=Parametry}}}}, uruchomione w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, muszą posiadać dodatkowo parametr {{Parametr|wyspecjalizowana|tak}}, aby dało się w je wsadzić skutecznie parametry do samej tej ramki dziecka, a nie używać parametry szablonu rodzica. === Wzajemna zależność === W tej pierwszej funkcji jest wykorzystywana ta druga, w której w tej pierwszej w parametrze pierwszym, w przypadku łańcuchów znakowych wykorzystywana jest funkcja do usuwania dolnych myślników i odstępów na końcach, a potem jest uruchamiana ta druga. === Uzyskiwane wyniki w zależności od sprawdzanego parametru - różne typy wartości pierwszej zmiennej === ==== Parametr typu {{Code|string}} ==== Te funkcje rozważane tutaj powiedziane powyżej w wikikodzie w szablonie rodzicu, czy w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, służą do sprawdzenia, czy wartość, czy jest nierówna ciągowi uzyskanemu pustemu, w przypadku tej pierwszej funkcji, a w przypadku drugiej, czy nie jest ciągiem pustym. ==== Typu {{Code|number}} ==== Jeżeli jest to liczba, to czy jest nie równa {{Code|0}}. ==== Typu {{Code|boolean}} ==== Czy wartością logiczną jest jako {{Code|true}}. ==== Typu {{Code|table}} ==== Dla tabel, czy jest niepustą tabelą. ==== Typu {{Code|function}} ==== Ale za to w przypadku funkcji, czy funkcja o nazwie {{Code|zmienna}} z parametrami {{Code|parametry}}, czy zwraca wartość odpowiadająca {{Code|true}}, === Zwracane wartości === Jeżeli funkcja zwróci wartość odpowiadająca prawdziwej, to ta funkcja zwróci znak {{Code|tak}}, w przeciwnym wypadku w wikikodzie zwraca wartość pustą, a w kodzie, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, wartość {{Code|nil}}. == {{Code|CzyTakSilnik}} == Funkcja pomocnicza służąca do liczenia wartości logicznej {{Code|tak}} lub {{Code|nil}} parametrów ramki, w wikikodzie, funkcji {{lpg|lua}} w {{lpr|Lua|Scribunto}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function CzyTakSilnik(args,funkcja)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|args}} | _1 = Tablica elementów z pierwszym elementem do sprawdzenia, z drugim jako nazwa modułu z funkcjami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w takim przypadku ten pierwszy element jest nazwą funkcji, który w połączeniu z nazwą modułu daje referencję do funkcji. | 2 = {{Code|funkcja}} | _2 = Funkcja, za pomocą której sprawdzamy logiczność pierwszego elementu tej tablicy. }} === Możliwe wartości drugiego parametru - funkcji === Możliwymi wartościami funkcji parametru {{Code|funkcja}} jest {{Code|CzyTak}} lub {{Code|CzyTakCiąg}} (ta funkcja wykorzystuje funkcję {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}} do swojego argumentu, który służy do sprawdzania, jaki spełnia warunek). === Sprawdzanie prawdziwości funkcji z jej zrzucanej, wartości === Gdy istnieje parametr tablicy {{Code|args}} funkcji o parametrze nienazwanym {{Code|args[2]}}, który jest nazwą modułu z funkcjami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a samą funkcją jest {{Code|args[1]}}, to tak utworzona funkcja jest zmienną {{Code|parametr}}, a jeżeli jej nie ma, to ona przyjmuje wartość {{Code|args[1]}}, a gdy jednak istnieje ten drugi element, to na podstawie którego zbierane są argumenty ramki nazwane jak nazwane, tzn. klucze i ich wartości przypisuje, a w przypadku parametrów nienazwanych (nie są zbierane elementy w tej tablicy o kluczach o wartości: {{Code|1}} i {{Code|2}}), a te inne klucze są pomniejszane o dwa, w ten sposób jest utworzona tabela {{Code|argsfun}}. === Brak składowej drugiej tablicy, co świadczy, że nie sprawdzamy funkcji, tylko co innego === ==== Rewidowana jest liczba lub ciąg znaków liczba ==== Gdy nie ma składowej drugiej tablicy, tzn. {{Code|args[2]}}, to wtedy funkcja sprawdza, czy {{Code|args[1]}} to jest liczba w łańcuchu znakowym, lub bezpośrednio liczba. ==== Typ - ciag znaków ==== Jeżeli nie da się jej przetransformować na liczbę, to sprawdza, czy typem tej zmiennej jest {{Code|string}} (czy typem jest szereg). Po działaniu funkcją: {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}}, jeśli ma wtedy wartość: {{Code|"true"}}, wtedy ta rozważana na samym początku zmienna przyjmuje wartość {{Code|true}}, {{Code|"false"}}, wtedy {{Code|false}}, {{Code|"nil"}}, wtedy {{Code|nil}}. A jeżeli ta zmienna żadnej tej wartości nie przyjmuje z tych wartości, to wtedy jest transformowana na liczbę, jeżeli da się tą operację dokonać. === Walidacja przygotowanych parametrów podaną funkcją === Na samym końcu jest liczona wartość logiczna z przygotowanymi parametrami, według jednej z dwóch specjalnie przygotowanych funkcji. ==== Przypadek uruchamiania funkcji w kodzie ==== W postaci wywołania ogólnego: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); return (parametry_modul[funkcja]{[1]=parametr,[2]=argsfun,})and "tak" or nil; </syntaxhighlight> Gdzie {{Code|funkcja}}, to {{Code|CzyTak}} lub {{Code|CzyTakCiąg}}, a {{Code|parametr}}, to funkcja w jakimś module lub inna wartość, a {{Code|argsfun}}, to tabela argumentów ramki, dziecka, w kodzie {{lpg|Lua}} w {{lpr|Scribunto}}, w wikikodzie w szablonie rodzicu. Gdy ta funkcja zwróci wartość logiczną odpowiadającą {{Code|true}}, to wtedy zwraca {{Code|tak}}, w przeciwnym wypadku {{Code|nil}}. ==== Procedura zwracając wartość z ramki wiki kodu ==== Ta funkcja jest wykorzystywana, gdy jest uruchamiana w ramce, gdy mamy parametry ramki: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTakCiąg| Wartość |nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wyspecjalizowana=tak}} </syntaxhighlight> Podobnie jest z funkcją {{Code|{{sr|#p.CzyTak|p=Parametry}}}}. A jak jest tworzony parametr zmiennej z powyższych wywołań, to jest powiedziane powyżej. === Atrapa funkcji parametrów ramki rodzica === Równie dobrze możemy zefiniować atrapę funkcji {{Code|frame.getParent}}, wtedy: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul["CzyTakCiąg"]{args={ [1]=" Wartość ", [2]="", ["nazwa1"]="wartość1", ["nazwa2"]="wartość2", [3]="wartość3", [4]="wartość4", ["wyspecjalizowana"]="tak", }, getParent=function()end, }; </syntaxhighlight> Czasami tak potrzeba robić, by ominąc zabezpieczenia pewnych funkcji, nawet tutaj. == {{Code|p["CzyTakCiąg"]}} == W tej funkcji parametry mogą być zbierane w osobnych parametrach lub w jednej tablicy albo ta funkcja może być uruchomiona w ramce. Funkcja do swojego działania wykorzystuje do tego {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}} i {{Code|{{sr|#p.CzyTak|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["CzyTakCiąg"]=function(...)...end; </syntaxhighlight> Jeżeli ta funkcja jest uruchomiona w ramce, np. w postaci: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTakCiąg| Wartość |wyspecjalizowana=tak}} </syntaxhighlight> To w tym przypadku funkcja zwraca wartość {{Code|tak}}, tak jak funkcja {{Code|{{sr|#p.CzyTak|p=Parametry}}}}, a w przypadku: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTakCiąg| |wyspecjalizowana=tak}} </syntaxhighlight> To w tym przypadku funkcja zwraca wartość równą ciągowi pustemu, mimo że funkcja {{Code|{{sr|#p.CzyTak|p=Parametry}}}} zwróci wartość {{Code|tak}}. Podobnie jest w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, czyli: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul["CzyTakCiąg"](" Wartość "); </syntaxhighlight> Ta funkcja zwróci wartość {{Code|tak}}. A teraz inny przykład: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul["CzyTakCiąg"](" "); </syntaxhighlight> Ta funkcja zwróci wartość {{Code|nil}}. == {{Code|p.CzyTak}} == W tej funkcji parametry mogą być zbierane w osobnych parametrach lub w jednej tablicy albo ta funkcja może być uruchomiona w ramce. Funkcja do swojego działania nie wykorzystuje do tego {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}}, tak jak to robi {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.CzyTak=function(...)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|1}} lub {{Code|zmienna}} | _1 = Sprawdzana zmienna, może być to funkcją. | 2 = {{Code|2}} lub {{Code|parametry}} | _2 = Parametry funkcji, może być to tablica parametrów, jest ona wykorzystywana, gdy powyższy element jest funkcją. }} Jeżeli ta funkcja jest uruchomiona w ramce, np. w postaci: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTak| Wartość |wyspecjalizowana=tak}} </syntaxhighlight> To w tym przypadku funkcja zwraca wartość {{Code|tak}}, tak jak funkcja {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}} A w przypadku: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTak| |wyspecjalizowana=tak}} </syntaxhighlight> To w tym przypadku funkcja zwraca wartość równą ciągowi {{Code|tak}}, mimo że funkcja {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}} zwróci wartość równoważną ciągowi pustemu. <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTak||wyspecjalizowana=tak}} </syntaxhighlight> Ta funkcja uruchomiona w ramce w wikikodzie zwraca wartość równą ciągowi pustemu, tak samo, jak funkcja {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}. Podobnie jest w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, czyli: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul.CzyTak(" Wartość "); </syntaxhighlight> Ta funkcja zwróci wartość {{Code|tak}}. A teraz inny przykład: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul.CzyTak(" "); </syntaxhighlight> Ta funkcja zwróci wartość {{Code|tak}}, niezależnie, czy tym ciągiem jest szereg składający się z samych znaków odstępów. A teraz inny przykład: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul.CzyTak(""); </syntaxhighlight> Ta funkcja wtedy zwróci wartość równą {{Code|nil}} w kodzie {{lpg|Lua}} w {{lpg|Lua|Scribunto}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> tbk6uy81suuolgu1kh5xz9urd4dg7xl 555765 555764 2026-09-11T23:59:13Z Persino 2851 /* p["CzyTakCiąg"] */ 555765 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == Funkcje prawdy i fałszu - ogólne przedstawienie == W funkcjach: {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}} i {{Code|{{sr|#p.CzyTak|p=Parametry}}}}, uruchomione w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, muszą posiadać dodatkowo parametr {{Parametr|wyspecjalizowana|tak}}, aby dało się w je wsadzić skutecznie parametry do samej tej ramki dziecka, a nie używać parametry szablonu rodzica. === Wzajemna zależność === W tej pierwszej funkcji jest wykorzystywana ta druga, w której w tej pierwszej w parametrze pierwszym, w przypadku łańcuchów znakowych wykorzystywana jest funkcja do usuwania dolnych myślników i odstępów na końcach, a potem jest uruchamiana ta druga. === Uzyskiwane wyniki w zależności od sprawdzanego parametru - różne typy wartości pierwszej zmiennej === ==== Parametr typu {{Code|string}} ==== Te funkcje rozważane tutaj powiedziane powyżej w wikikodzie w szablonie rodzicu, czy w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, służą do sprawdzenia, czy wartość, czy jest nierówna ciągowi uzyskanemu pustemu, w przypadku tej pierwszej funkcji, a w przypadku drugiej, czy nie jest ciągiem pustym. ==== Typu {{Code|number}} ==== Jeżeli jest to liczba, to czy jest nie równa {{Code|0}}. ==== Typu {{Code|boolean}} ==== Czy wartością logiczną jest jako {{Code|true}}. ==== Typu {{Code|table}} ==== Dla tabel, czy jest niepustą tabelą. ==== Typu {{Code|function}} ==== Ale za to w przypadku funkcji, czy funkcja o nazwie {{Code|zmienna}} z parametrami {{Code|parametry}}, czy zwraca wartość odpowiadająca {{Code|true}}, === Zwracane wartości === Jeżeli funkcja zwróci wartość odpowiadająca prawdziwej, to ta funkcja zwróci znak {{Code|tak}}, w przeciwnym wypadku w wikikodzie zwraca wartość pustą, a w kodzie, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, wartość {{Code|nil}}. == {{Code|CzyTakSilnik}} == Funkcja pomocnicza służąca do liczenia wartości logicznej {{Code|tak}} lub {{Code|nil}} parametrów ramki, w wikikodzie, funkcji {{lpg|lua}} w {{lpr|Lua|Scribunto}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function CzyTakSilnik(args,funkcja)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|args}} | _1 = Tablica elementów z pierwszym elementem do sprawdzenia, z drugim jako nazwa modułu z funkcjami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w takim przypadku ten pierwszy element jest nazwą funkcji, który w połączeniu z nazwą modułu daje referencję do funkcji. | 2 = {{Code|funkcja}} | _2 = Funkcja, za pomocą której sprawdzamy logiczność pierwszego elementu tej tablicy. }} === Możliwe wartości drugiego parametru - funkcji === Możliwymi wartościami funkcji parametru {{Code|funkcja}} jest {{Code|CzyTak}} lub {{Code|CzyTakCiąg}} (ta funkcja wykorzystuje funkcję {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}} do swojego argumentu, który służy do sprawdzania, jaki spełnia warunek). === Sprawdzanie prawdziwości funkcji z jej zrzucanej, wartości === Gdy istnieje parametr tablicy {{Code|args}} funkcji o parametrze nienazwanym {{Code|args[2]}}, który jest nazwą modułu z funkcjami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a samą funkcją jest {{Code|args[1]}}, to tak utworzona funkcja jest zmienną {{Code|parametr}}, a jeżeli jej nie ma, to ona przyjmuje wartość {{Code|args[1]}}, a gdy jednak istnieje ten drugi element, to na podstawie którego zbierane są argumenty ramki nazwane jak nazwane, tzn. klucze i ich wartości przypisuje, a w przypadku parametrów nienazwanych (nie są zbierane elementy w tej tablicy o kluczach o wartości: {{Code|1}} i {{Code|2}}), a te inne klucze są pomniejszane o dwa, w ten sposób jest utworzona tabela {{Code|argsfun}}. === Brak składowej drugiej tablicy, co świadczy, że nie sprawdzamy funkcji, tylko co innego === ==== Rewidowana jest liczba lub ciąg znaków liczba ==== Gdy nie ma składowej drugiej tablicy, tzn. {{Code|args[2]}}, to wtedy funkcja sprawdza, czy {{Code|args[1]}} to jest liczba w łańcuchu znakowym, lub bezpośrednio liczba. ==== Typ - ciag znaków ==== Jeżeli nie da się jej przetransformować na liczbę, to sprawdza, czy typem tej zmiennej jest {{Code|string}} (czy typem jest szereg). Po działaniu funkcją: {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}}, jeśli ma wtedy wartość: {{Code|"true"}}, wtedy ta rozważana na samym początku zmienna przyjmuje wartość {{Code|true}}, {{Code|"false"}}, wtedy {{Code|false}}, {{Code|"nil"}}, wtedy {{Code|nil}}. A jeżeli ta zmienna żadnej tej wartości nie przyjmuje z tych wartości, to wtedy jest transformowana na liczbę, jeżeli da się tą operację dokonać. === Walidacja przygotowanych parametrów podaną funkcją === Na samym końcu jest liczona wartość logiczna z przygotowanymi parametrami, według jednej z dwóch specjalnie przygotowanych funkcji. ==== Przypadek uruchamiania funkcji w kodzie ==== W postaci wywołania ogólnego: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); return (parametry_modul[funkcja]{[1]=parametr,[2]=argsfun,})and "tak" or nil; </syntaxhighlight> Gdzie {{Code|funkcja}}, to {{Code|CzyTak}} lub {{Code|CzyTakCiąg}}, a {{Code|parametr}}, to funkcja w jakimś module lub inna wartość, a {{Code|argsfun}}, to tabela argumentów ramki, dziecka, w kodzie {{lpg|Lua}} w {{lpr|Scribunto}}, w wikikodzie w szablonie rodzicu. Gdy ta funkcja zwróci wartość logiczną odpowiadającą {{Code|true}}, to wtedy zwraca {{Code|tak}}, w przeciwnym wypadku {{Code|nil}}. ==== Procedura zwracając wartość z ramki wiki kodu ==== Ta funkcja jest wykorzystywana, gdy jest uruchamiana w ramce, gdy mamy parametry ramki: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTakCiąg| Wartość |nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wyspecjalizowana=tak}} </syntaxhighlight> Podobnie jest z funkcją {{Code|{{sr|#p.CzyTak|p=Parametry}}}}. A jak jest tworzony parametr zmiennej z powyższych wywołań, to jest powiedziane powyżej. === Atrapa funkcji parametrów ramki rodzica === Równie dobrze możemy zefiniować atrapę funkcji {{Code|frame.getParent}}, wtedy: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul["CzyTakCiąg"]{args={ [1]=" Wartość ", [2]="", ["nazwa1"]="wartość1", ["nazwa2"]="wartość2", [3]="wartość3", [4]="wartość4", ["wyspecjalizowana"]="tak", }, getParent=function()end, }; </syntaxhighlight> Czasami tak potrzeba robić, by ominąc zabezpieczenia pewnych funkcji, nawet tutaj. == {{Code|p["CzyTakCiąg"]}} == W tej funkcji parametry mogą być zbierane w osobnych parametrach lub w jednej tablicy albo ta funkcja może być uruchomiona w ramce. Funkcja do swojego działania wykorzystuje do tego {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}} i {{Code|{{sr|#p.CzyTak|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["CzyTakCiąg"]=function(...)...end; </syntaxhighlight> === Funkcja uruchamiania w ramce wiki kodu === ==== Normalne znaki z odstępami ==== Jeżeli ta funkcja jest uruchomiona w ramce, np. w postaci: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTakCiąg| Wartość |wyspecjalizowana=tak}} </syntaxhighlight> ==== Ciąg składający się z samych odstępów - wartość zwracana ==== To w tym przypadku funkcja zwraca wartość {{Code|tak}}, tak jak funkcja {{Code|{{sr|#p.CzyTak|p=Parametry}}}}, a w przypadku: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTakCiąg| |wyspecjalizowana=tak}} </syntaxhighlight> To w tym przypadku funkcja zwraca wartość równą ciągowi pustemu, mimo że funkcja {{Code|{{sr|#p.CzyTak|p=Parametry}}}} zwróci wartość {{Code|tak}}. === Funkcja uruchamiania w postaci funkcji bibliotecznej === ==== Ciąg z treściwymi znakami z odstępami ==== Podobnie jest w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, czyli: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul["CzyTakCiąg"](" Wartość "); </syntaxhighlight> Ta funkcja zwróci wartość {{Code|tak}}. ==== Brak takich znaków, tylko same odstępy ==== A teraz inny przykład: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul["CzyTakCiąg"](" "); </syntaxhighlight> Ta funkcja zwróci wartość {{Code|nil}}. == {{Code|p.CzyTak}} == W tej funkcji parametry mogą być zbierane w osobnych parametrach lub w jednej tablicy albo ta funkcja może być uruchomiona w ramce. Funkcja do swojego działania nie wykorzystuje do tego {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}}, tak jak to robi {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.CzyTak=function(...)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|1}} lub {{Code|zmienna}} | _1 = Sprawdzana zmienna, może być to funkcją. | 2 = {{Code|2}} lub {{Code|parametry}} | _2 = Parametry funkcji, może być to tablica parametrów, jest ona wykorzystywana, gdy powyższy element jest funkcją. }} Jeżeli ta funkcja jest uruchomiona w ramce, np. w postaci: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTak| Wartość |wyspecjalizowana=tak}} </syntaxhighlight> To w tym przypadku funkcja zwraca wartość {{Code|tak}}, tak jak funkcja {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}} A w przypadku: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTak| |wyspecjalizowana=tak}} </syntaxhighlight> To w tym przypadku funkcja zwraca wartość równą ciągowi {{Code|tak}}, mimo że funkcja {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}} zwróci wartość równoważną ciągowi pustemu. <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTak||wyspecjalizowana=tak}} </syntaxhighlight> Ta funkcja uruchomiona w ramce w wikikodzie zwraca wartość równą ciągowi pustemu, tak samo, jak funkcja {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}. Podobnie jest w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, czyli: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul.CzyTak(" Wartość "); </syntaxhighlight> Ta funkcja zwróci wartość {{Code|tak}}. A teraz inny przykład: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul.CzyTak(" "); </syntaxhighlight> Ta funkcja zwróci wartość {{Code|tak}}, niezależnie, czy tym ciągiem jest szereg składający się z samych znaków odstępów. A teraz inny przykład: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul.CzyTak(""); </syntaxhighlight> Ta funkcja wtedy zwróci wartość równą {{Code|nil}} w kodzie {{lpg|Lua}} w {{lpg|Lua|Scribunto}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 9yt2d1towg2l8exoowrklzt8efeegsk 555766 555765 2026-09-12T00:08:29Z Persino 2851 /* p.CzyTak */ 555766 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == Funkcje prawdy i fałszu - ogólne przedstawienie == W funkcjach: {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}} i {{Code|{{sr|#p.CzyTak|p=Parametry}}}}, uruchomione w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, muszą posiadać dodatkowo parametr {{Parametr|wyspecjalizowana|tak}}, aby dało się w je wsadzić skutecznie parametry do samej tej ramki dziecka, a nie używać parametry szablonu rodzica. === Wzajemna zależność === W tej pierwszej funkcji jest wykorzystywana ta druga, w której w tej pierwszej w parametrze pierwszym, w przypadku łańcuchów znakowych wykorzystywana jest funkcja do usuwania dolnych myślników i odstępów na końcach, a potem jest uruchamiana ta druga. === Uzyskiwane wyniki w zależności od sprawdzanego parametru - różne typy wartości pierwszej zmiennej === ==== Parametr typu {{Code|string}} ==== Te funkcje rozważane tutaj powiedziane powyżej w wikikodzie w szablonie rodzicu, czy w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, służą do sprawdzenia, czy wartość, czy jest nierówna ciągowi uzyskanemu pustemu, w przypadku tej pierwszej funkcji, a w przypadku drugiej, czy nie jest ciągiem pustym. ==== Typu {{Code|number}} ==== Jeżeli jest to liczba, to czy jest nie równa {{Code|0}}. ==== Typu {{Code|boolean}} ==== Czy wartością logiczną jest jako {{Code|true}}. ==== Typu {{Code|table}} ==== Dla tabel, czy jest niepustą tabelą. ==== Typu {{Code|function}} ==== Ale za to w przypadku funkcji, czy funkcja o nazwie {{Code|zmienna}} z parametrami {{Code|parametry}}, czy zwraca wartość odpowiadająca {{Code|true}}, === Zwracane wartości === Jeżeli funkcja zwróci wartość odpowiadająca prawdziwej, to ta funkcja zwróci znak {{Code|tak}}, w przeciwnym wypadku w wikikodzie zwraca wartość pustą, a w kodzie, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, wartość {{Code|nil}}. == {{Code|CzyTakSilnik}} == Funkcja pomocnicza służąca do liczenia wartości logicznej {{Code|tak}} lub {{Code|nil}} parametrów ramki, w wikikodzie, funkcji {{lpg|lua}} w {{lpr|Lua|Scribunto}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function CzyTakSilnik(args,funkcja)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|args}} | _1 = Tablica elementów z pierwszym elementem do sprawdzenia, z drugim jako nazwa modułu z funkcjami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w takim przypadku ten pierwszy element jest nazwą funkcji, który w połączeniu z nazwą modułu daje referencję do funkcji. | 2 = {{Code|funkcja}} | _2 = Funkcja, za pomocą której sprawdzamy logiczność pierwszego elementu tej tablicy. }} === Możliwe wartości drugiego parametru - funkcji === Możliwymi wartościami funkcji parametru {{Code|funkcja}} jest {{Code|CzyTak}} lub {{Code|CzyTakCiąg}} (ta funkcja wykorzystuje funkcję {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}} do swojego argumentu, który służy do sprawdzania, jaki spełnia warunek). === Sprawdzanie prawdziwości funkcji z jej zrzucanej, wartości === Gdy istnieje parametr tablicy {{Code|args}} funkcji o parametrze nienazwanym {{Code|args[2]}}, który jest nazwą modułu z funkcjami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a samą funkcją jest {{Code|args[1]}}, to tak utworzona funkcja jest zmienną {{Code|parametr}}, a jeżeli jej nie ma, to ona przyjmuje wartość {{Code|args[1]}}, a gdy jednak istnieje ten drugi element, to na podstawie którego zbierane są argumenty ramki nazwane jak nazwane, tzn. klucze i ich wartości przypisuje, a w przypadku parametrów nienazwanych (nie są zbierane elementy w tej tablicy o kluczach o wartości: {{Code|1}} i {{Code|2}}), a te inne klucze są pomniejszane o dwa, w ten sposób jest utworzona tabela {{Code|argsfun}}. === Brak składowej drugiej tablicy, co świadczy, że nie sprawdzamy funkcji, tylko co innego === ==== Rewidowana jest liczba lub ciąg znaków liczba ==== Gdy nie ma składowej drugiej tablicy, tzn. {{Code|args[2]}}, to wtedy funkcja sprawdza, czy {{Code|args[1]}} to jest liczba w łańcuchu znakowym, lub bezpośrednio liczba. ==== Typ - ciag znaków ==== Jeżeli nie da się jej przetransformować na liczbę, to sprawdza, czy typem tej zmiennej jest {{Code|string}} (czy typem jest szereg). Po działaniu funkcją: {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}}, jeśli ma wtedy wartość: {{Code|"true"}}, wtedy ta rozważana na samym początku zmienna przyjmuje wartość {{Code|true}}, {{Code|"false"}}, wtedy {{Code|false}}, {{Code|"nil"}}, wtedy {{Code|nil}}. A jeżeli ta zmienna żadnej tej wartości nie przyjmuje z tych wartości, to wtedy jest transformowana na liczbę, jeżeli da się tą operację dokonać. === Walidacja przygotowanych parametrów podaną funkcją === Na samym końcu jest liczona wartość logiczna z przygotowanymi parametrami, według jednej z dwóch specjalnie przygotowanych funkcji. ==== Przypadek uruchamiania funkcji w kodzie ==== W postaci wywołania ogólnego: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); return (parametry_modul[funkcja]{[1]=parametr,[2]=argsfun,})and "tak" or nil; </syntaxhighlight> Gdzie {{Code|funkcja}}, to {{Code|CzyTak}} lub {{Code|CzyTakCiąg}}, a {{Code|parametr}}, to funkcja w jakimś module lub inna wartość, a {{Code|argsfun}}, to tabela argumentów ramki, dziecka, w kodzie {{lpg|Lua}} w {{lpr|Scribunto}}, w wikikodzie w szablonie rodzicu. Gdy ta funkcja zwróci wartość logiczną odpowiadającą {{Code|true}}, to wtedy zwraca {{Code|tak}}, w przeciwnym wypadku {{Code|nil}}. ==== Procedura zwracając wartość z ramki wiki kodu ==== Ta funkcja jest wykorzystywana, gdy jest uruchamiana w ramce, gdy mamy parametry ramki: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTakCiąg| Wartość |nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wyspecjalizowana=tak}} </syntaxhighlight> Podobnie jest z funkcją {{Code|{{sr|#p.CzyTak|p=Parametry}}}}. A jak jest tworzony parametr zmiennej z powyższych wywołań, to jest powiedziane powyżej. === Atrapa funkcji parametrów ramki rodzica === Równie dobrze możemy zefiniować atrapę funkcji {{Code|frame.getParent}}, wtedy: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul["CzyTakCiąg"]{args={ [1]=" Wartość ", [2]="", ["nazwa1"]="wartość1", ["nazwa2"]="wartość2", [3]="wartość3", [4]="wartość4", ["wyspecjalizowana"]="tak", }, getParent=function()end, }; </syntaxhighlight> Czasami tak potrzeba robić, by ominąc zabezpieczenia pewnych funkcji, nawet tutaj. == {{Code|p["CzyTakCiąg"]}} == W tej funkcji parametry mogą być zbierane w osobnych parametrach lub w jednej tablicy albo ta funkcja może być uruchomiona w ramce. Funkcja do swojego działania wykorzystuje do tego {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}} i {{Code|{{sr|#p.CzyTak|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["CzyTakCiąg"]=function(...)...end; </syntaxhighlight> === Funkcja uruchamiania w ramce wiki kodu === ==== Normalne znaki z odstępami ==== Jeżeli ta funkcja jest uruchomiona w ramce, np. w postaci: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTakCiąg| Wartość |wyspecjalizowana=tak}} </syntaxhighlight> ==== Ciąg składający się z samych odstępów - wartość zwracana ==== To w tym przypadku funkcja zwraca wartość {{Code|tak}}, tak jak funkcja {{Code|{{sr|#p.CzyTak|p=Parametry}}}}, a w przypadku: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTakCiąg| |wyspecjalizowana=tak}} </syntaxhighlight> To w tym przypadku funkcja zwraca wartość równą ciągowi pustemu, mimo że funkcja {{Code|{{sr|#p.CzyTak|p=Parametry}}}} zwróci wartość {{Code|tak}}. === Funkcja uruchamiania w postaci funkcji bibliotecznej === ==== Ciąg z treściwymi znakami z odstępami ==== Podobnie jest w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, czyli: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul["CzyTakCiąg"](" Wartość "); </syntaxhighlight> Ta funkcja zwróci wartość {{Code|tak}}. ==== Brak takich znaków, tylko same odstępy ==== A teraz inny przykład: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul["CzyTakCiąg"](" "); </syntaxhighlight> Ta funkcja zwróci wartość {{Code|nil}}. == {{Code|p.CzyTak}} == W tej funkcji parametry mogą być zbierane w osobnych parametrach lub w jednej tablicy albo ta funkcja może być uruchomiona w ramce. Funkcja do swojego działania nie wykorzystuje do tego {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}}, tak jak to robi {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.CzyTak=function(...)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|1}} lub {{Code|zmienna}} | _1 = Sprawdzana zmienna, może być to funkcją. | 2 = {{Code|2}} lub {{Code|parametry}} | _2 = Parametry funkcji, może być to tablica parametrów, jest ona wykorzystywana, gdy powyższy element jest funkcją. }} === Funkcja działająca w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} === ==== Ciąg niepusty z treściwymi znakami z odstępami ==== Jeżeli ta funkcja jest uruchomiona w ramce, np. w postaci: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTak| Wartość |wyspecjalizowana=tak}} </syntaxhighlight> To w tym przypadku funkcja zwraca wartość {{Code|tak}}, tak jak funkcja {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}} ==== Ciąg z samych znaków odstępów ==== A w przypadku: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTak| |wyspecjalizowana=tak}} </syntaxhighlight> To w tym przypadku funkcja zwraca wartość równą ciągowi {{Code|tak}}, mimo że funkcja {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}} zwróci wartość równoważną ciągowi pustemu. ==== Ciąg pusty - jego rewidowanie ==== <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTak||wyspecjalizowana=tak}} </syntaxhighlight> Ta funkcja uruchomiona w ramce w wikikodzie zwraca wartość równą ciągowi pustemu, tak samo, jak funkcja {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}. === W postaci funkcji bibliotecznej - nie ramki === ==== Treściwe znaki z odstępami ==== Podobnie jest w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, czyli: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul.CzyTak(" Wartość "); </syntaxhighlight> Ta funkcja zwróci wartość {{Code|tak}}. ==== Same odstępy ==== A teraz inny przykład: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul.CzyTak(" "); </syntaxhighlight> Ta funkcja zwróci wartość {{Code|tak}}, niezależnie, czy tym ciągiem jest szereg składający się z samych znaków odstępów. ==== Ciąg pusty ==== A teraz inny przykład: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul.CzyTak(""); </syntaxhighlight> Ta funkcja wtedy zwróci wartość równą {{Code|nil}} w kodzie {{lpg|Lua}} w {{lpg|Lua|Scribunto}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 9bzzxgf3o3u2btpgvr1gnvah1uqrcmv 555767 555766 2026-09-12T00:26:07Z Persino 2851 /* p["CzyTakCiąg"] */ 555767 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == Funkcje prawdy i fałszu - ogólne przedstawienie == W funkcjach: {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}} i {{Code|{{sr|#p.CzyTak|p=Parametry}}}}, uruchomione w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, muszą posiadać dodatkowo parametr {{Parametr|wyspecjalizowana|tak}}, aby dało się w je wsadzić skutecznie parametry do samej tej ramki dziecka, a nie używać parametry szablonu rodzica. === Wzajemna zależność === W tej pierwszej funkcji jest wykorzystywana ta druga, w której w tej pierwszej w parametrze pierwszym, w przypadku łańcuchów znakowych wykorzystywana jest funkcja do usuwania dolnych myślników i odstępów na końcach, a potem jest uruchamiana ta druga. === Uzyskiwane wyniki w zależności od sprawdzanego parametru - różne typy wartości pierwszej zmiennej === ==== Parametr typu {{Code|string}} ==== Te funkcje rozważane tutaj powiedziane powyżej w wikikodzie w szablonie rodzicu, czy w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, służą do sprawdzenia, czy wartość, czy jest nierówna ciągowi uzyskanemu pustemu, w przypadku tej pierwszej funkcji, a w przypadku drugiej, czy nie jest ciągiem pustym. ==== Typu {{Code|number}} ==== Jeżeli jest to liczba, to czy jest nie równa {{Code|0}}. ==== Typu {{Code|boolean}} ==== Czy wartością logiczną jest jako {{Code|true}}. ==== Typu {{Code|table}} ==== Dla tabel, czy jest niepustą tabelą. ==== Typu {{Code|function}} ==== Ale za to w przypadku funkcji, czy funkcja o nazwie {{Code|zmienna}} z parametrami {{Code|parametry}}, czy zwraca wartość odpowiadająca {{Code|true}}, === Zwracane wartości === Jeżeli funkcja zwróci wartość odpowiadająca prawdziwej, to ta funkcja zwróci znak {{Code|tak}}, w przeciwnym wypadku w wikikodzie zwraca wartość pustą, a w kodzie, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, wartość {{Code|nil}}. == {{Code|CzyTakSilnik}} == Funkcja pomocnicza służąca do liczenia wartości logicznej {{Code|tak}} lub {{Code|nil}} parametrów ramki, w wikikodzie, funkcji {{lpg|lua}} w {{lpr|Lua|Scribunto}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function CzyTakSilnik(args,funkcja)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|args}} | _1 = Tablica elementów z pierwszym elementem do sprawdzenia, z drugim jako nazwa modułu z funkcjami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w takim przypadku ten pierwszy element jest nazwą funkcji, który w połączeniu z nazwą modułu daje referencję do funkcji. | 2 = {{Code|funkcja}} | _2 = Funkcja, za pomocą której sprawdzamy logiczność pierwszego elementu tej tablicy. }} === Możliwe wartości drugiego parametru - funkcji === Możliwymi wartościami funkcji parametru {{Code|funkcja}} jest {{Code|CzyTak}} lub {{Code|CzyTakCiąg}} (ta funkcja wykorzystuje funkcję {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}} do swojego argumentu, który służy do sprawdzania, jaki spełnia warunek). === Sprawdzanie prawdziwości funkcji z jej zrzucanej, wartości === Gdy istnieje parametr tablicy {{Code|args}} funkcji o parametrze nienazwanym {{Code|args[2]}}, który jest nazwą modułu z funkcjami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a samą funkcją jest {{Code|args[1]}}, to tak utworzona funkcja jest zmienną {{Code|parametr}}, a jeżeli jej nie ma, to ona przyjmuje wartość {{Code|args[1]}}, a gdy jednak istnieje ten drugi element, to na podstawie którego zbierane są argumenty ramki nazwane jak nazwane, tzn. klucze i ich wartości przypisuje, a w przypadku parametrów nienazwanych (nie są zbierane elementy w tej tablicy o kluczach o wartości: {{Code|1}} i {{Code|2}}), a te inne klucze są pomniejszane o dwa, w ten sposób jest utworzona tabela {{Code|argsfun}}. === Brak składowej drugiej tablicy, co świadczy, że nie sprawdzamy funkcji, tylko co innego === ==== Rewidowana jest liczba lub ciąg znaków liczba ==== Gdy nie ma składowej drugiej tablicy, tzn. {{Code|args[2]}}, to wtedy funkcja sprawdza, czy {{Code|args[1]}} to jest liczba w łańcuchu znakowym, lub bezpośrednio liczba. ==== Typ - ciag znaków ==== Jeżeli nie da się jej przetransformować na liczbę, to sprawdza, czy typem tej zmiennej jest {{Code|string}} (czy typem jest szereg). Po działaniu funkcją: {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}}, jeśli ma wtedy wartość: {{Code|"true"}}, wtedy ta rozważana na samym początku zmienna przyjmuje wartość {{Code|true}}, {{Code|"false"}}, wtedy {{Code|false}}, {{Code|"nil"}}, wtedy {{Code|nil}}. A jeżeli ta zmienna żadnej tej wartości nie przyjmuje z tych wartości, to wtedy jest transformowana na liczbę, jeżeli da się tą operację dokonać. === Walidacja przygotowanych parametrów podaną funkcją === Na samym końcu jest liczona wartość logiczna z przygotowanymi parametrami, według jednej z dwóch specjalnie przygotowanych funkcji. ==== Przypadek uruchamiania funkcji w kodzie ==== W postaci wywołania ogólnego: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); return (parametry_modul[funkcja]{[1]=parametr,[2]=argsfun,})and "tak" or nil; </syntaxhighlight> Gdzie {{Code|funkcja}}, to {{Code|CzyTak}} lub {{Code|CzyTakCiąg}}, a {{Code|parametr}}, to funkcja w jakimś module lub inna wartość, a {{Code|argsfun}}, to tabela argumentów ramki, dziecka, w kodzie {{lpg|Lua}} w {{lpr|Scribunto}}, w wikikodzie w szablonie rodzicu. Gdy ta funkcja zwróci wartość logiczną odpowiadającą {{Code|true}}, to wtedy zwraca {{Code|tak}}, w przeciwnym wypadku {{Code|nil}}. ==== Procedura zwracając wartość z ramki wiki kodu ==== Ta funkcja jest wykorzystywana, gdy jest uruchamiana w ramce, gdy mamy parametry ramki: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTakCiąg| Wartość |nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wyspecjalizowana=tak}} </syntaxhighlight> Podobnie jest z funkcją {{Code|{{sr|#p.CzyTak|p=Parametry}}}}. A jak jest tworzony parametr zmiennej z powyższych wywołań, to jest powiedziane powyżej. === Atrapa funkcji parametrów ramki rodzica === Równie dobrze możemy zefiniować atrapę funkcji {{Code|frame.getParent}}, wtedy: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul["CzyTakCiąg"]{args={ [1]=" Wartość ", [2]="", ["nazwa1"]="wartość1", ["nazwa2"]="wartość2", [3]="wartość3", [4]="wartość4", ["wyspecjalizowana"]="tak", }, getParent=function()end, }; </syntaxhighlight> Czasami tak potrzeba robić, by ominąc zabezpieczenia pewnych funkcji, nawet tutaj. == {{Code|p["CzyTakCiąg"]}} == W tej funkcji parametry mogą być zbierane w osobnych parametrach lub w jednej tablicy albo ta funkcja może być uruchomiona w ramce. Funkcja do swojego działania wykorzystuje do tego {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}} i {{Code|{{sr|#p.CzyTak|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["CzyTakCiąg"]=function(...)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = zmienna | _1 = Funkcja - typ: {{Code|function}}, lub inna wartość sprawdzana, np. {{Code|string}}, czy odpowiada wartości prawdziwej. | 2 = parametry | _2 = Parametry funkcji sprawdzanej, gdy zmienna: {{Code|zmienna}}, jest funkcją. }} === Funkcja uruchamiania w ramce wiki kodu === ==== Normalne znaki z odstępami ==== Jeżeli ta funkcja jest uruchomiona w ramce, np. w postaci: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTakCiąg| Wartość |wyspecjalizowana=tak}} </syntaxhighlight> ==== Ciąg składający się z samych odstępów - wartość zwracana ==== To w tym przypadku funkcja zwraca wartość {{Code|tak}}, tak jak funkcja {{Code|{{sr|#p.CzyTak|p=Parametry}}}}, a w przypadku: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTakCiąg| |wyspecjalizowana=tak}} </syntaxhighlight> To w tym przypadku funkcja zwraca wartość równą ciągowi pustemu, mimo że funkcja {{Code|{{sr|#p.CzyTak|p=Parametry}}}} zwróci wartość {{Code|tak}}. === Funkcja uruchamiania w postaci funkcji bibliotecznej === ==== Ciąg z treściwymi znakami z odstępami ==== Podobnie jest w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, czyli: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul["CzyTakCiąg"](" Wartość "); </syntaxhighlight> Ta funkcja zwróci wartość {{Code|tak}}. ==== Brak takich znaków, tylko same odstępy ==== A teraz inny przykład: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul["CzyTakCiąg"](" "); </syntaxhighlight> Ta funkcja zwróci wartość {{Code|nil}}. == {{Code|p.CzyTak}} == W tej funkcji parametry mogą być zbierane w osobnych parametrach lub w jednej tablicy albo ta funkcja może być uruchomiona w ramce. Funkcja do swojego działania nie wykorzystuje do tego {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}}, tak jak to robi {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.CzyTak=function(...)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|1}} lub {{Code|zmienna}} | _1 = Sprawdzana zmienna, może być to funkcją. | 2 = {{Code|2}} lub {{Code|parametry}} | _2 = Parametry funkcji, może być to tablica parametrów, jest ona wykorzystywana, gdy powyższy element jest funkcją. }} === Funkcja działająca w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} === ==== Ciąg niepusty z treściwymi znakami z odstępami ==== Jeżeli ta funkcja jest uruchomiona w ramce, np. w postaci: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTak| Wartość |wyspecjalizowana=tak}} </syntaxhighlight> To w tym przypadku funkcja zwraca wartość {{Code|tak}}, tak jak funkcja {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}} ==== Ciąg z samych znaków odstępów ==== A w przypadku: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTak| |wyspecjalizowana=tak}} </syntaxhighlight> To w tym przypadku funkcja zwraca wartość równą ciągowi {{Code|tak}}, mimo że funkcja {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}} zwróci wartość równoważną ciągowi pustemu. ==== Ciąg pusty - jego rewidowanie ==== <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTak||wyspecjalizowana=tak}} </syntaxhighlight> Ta funkcja uruchomiona w ramce w wikikodzie zwraca wartość równą ciągowi pustemu, tak samo, jak funkcja {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}. === W postaci funkcji bibliotecznej - nie ramki === ==== Treściwe znaki z odstępami ==== Podobnie jest w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, czyli: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul.CzyTak(" Wartość "); </syntaxhighlight> Ta funkcja zwróci wartość {{Code|tak}}. ==== Same odstępy ==== A teraz inny przykład: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul.CzyTak(" "); </syntaxhighlight> Ta funkcja zwróci wartość {{Code|tak}}, niezależnie, czy tym ciągiem jest szereg składający się z samych znaków odstępów. ==== Ciąg pusty ==== A teraz inny przykład: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul.CzyTak(""); </syntaxhighlight> Ta funkcja wtedy zwróci wartość równą {{Code|nil}} w kodzie {{lpg|Lua}} w {{lpg|Lua|Scribunto}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 7ygblxuvtrl8izl9zr1q7j0ll0nhrbm 555768 555767 2026-09-12T00:28:22Z Persino 2851 /* CzyTakSilnik */ 555768 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == Funkcje prawdy i fałszu - ogólne przedstawienie == W funkcjach: {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}} i {{Code|{{sr|#p.CzyTak|p=Parametry}}}}, uruchomione w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, muszą posiadać dodatkowo parametr {{Parametr|wyspecjalizowana|tak}}, aby dało się w je wsadzić skutecznie parametry do samej tej ramki dziecka, a nie używać parametry szablonu rodzica. === Wzajemna zależność === W tej pierwszej funkcji jest wykorzystywana ta druga, w której w tej pierwszej w parametrze pierwszym, w przypadku łańcuchów znakowych wykorzystywana jest funkcja do usuwania dolnych myślników i odstępów na końcach, a potem jest uruchamiana ta druga. === Uzyskiwane wyniki w zależności od sprawdzanego parametru - różne typy wartości pierwszej zmiennej === ==== Parametr typu {{Code|string}} ==== Te funkcje rozważane tutaj powiedziane powyżej w wikikodzie w szablonie rodzicu, czy w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, służą do sprawdzenia, czy wartość, czy jest nierówna ciągowi uzyskanemu pustemu, w przypadku tej pierwszej funkcji, a w przypadku drugiej, czy nie jest ciągiem pustym. ==== Typu {{Code|number}} ==== Jeżeli jest to liczba, to czy jest nie równa {{Code|0}}. ==== Typu {{Code|boolean}} ==== Czy wartością logiczną jest jako {{Code|true}}. ==== Typu {{Code|table}} ==== Dla tabel, czy jest niepustą tabelą. ==== Typu {{Code|function}} ==== Ale za to w przypadku funkcji, czy funkcja o nazwie {{Code|zmienna}} z parametrami {{Code|parametry}}, czy zwraca wartość odpowiadająca {{Code|true}}, === Zwracane wartości === Jeżeli funkcja zwróci wartość odpowiadająca prawdziwej, to ta funkcja zwróci znak {{Code|tak}}, w przeciwnym wypadku w wikikodzie zwraca wartość pustą, a w kodzie, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, wartość {{Code|nil}}. == {{Śródtytuł|CzyTakSilnik}}{{Code|CzyTakSilnik}} == Funkcja pomocnicza służąca do liczenia wartości logicznej {{Code|tak}} lub {{Code|nil}} parametrów ramki, w wikikodzie, funkcji {{lpg|lua}} w {{lpr|Lua|Scribunto}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function CzyTakSilnik(args,funkcja)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|args}} | _1 = Tablica elementów z pierwszym elementem do sprawdzenia, z drugim jako nazwa modułu z funkcjami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w takim przypadku ten pierwszy element jest nazwą funkcji, który w połączeniu z nazwą modułu daje referencję do funkcji. | 2 = {{Code|funkcja}} | _2 = Funkcja, za pomocą której sprawdzamy logiczność pierwszego elementu tej tablicy. }} === Możliwe wartości drugiego parametru - funkcji === Możliwymi wartościami funkcji parametru {{Code|funkcja}} jest {{Code|CzyTak}} lub {{Code|CzyTakCiąg}} (ta funkcja wykorzystuje funkcję {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}} do swojego argumentu, który służy do sprawdzania, jaki spełnia warunek). === Sprawdzanie prawdziwości funkcji z jej zrzucanej, wartości === Gdy istnieje parametr tablicy {{Code|args}} funkcji o parametrze nienazwanym {{Code|args[2]}}, który jest nazwą modułu z funkcjami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a samą funkcją jest {{Code|args[1]}}, to tak utworzona funkcja jest zmienną {{Code|parametr}}, a jeżeli jej nie ma, to ona przyjmuje wartość {{Code|args[1]}}, a gdy jednak istnieje ten drugi element, to na podstawie którego zbierane są argumenty ramki nazwane jak nazwane, tzn. klucze i ich wartości przypisuje, a w przypadku parametrów nienazwanych (nie są zbierane elementy w tej tablicy o kluczach o wartości: {{Code|1}} i {{Code|2}}), a te inne klucze są pomniejszane o dwa, w ten sposób jest utworzona tabela {{Code|argsfun}}. === Brak składowej drugiej tablicy, co świadczy, że nie sprawdzamy funkcji, tylko co innego === ==== Rewidowana jest liczba lub ciąg znaków liczba ==== Gdy nie ma składowej drugiej tablicy, tzn. {{Code|args[2]}}, to wtedy funkcja sprawdza, czy {{Code|args[1]}} to jest liczba w łańcuchu znakowym, lub bezpośrednio liczba. ==== Typ - ciag znaków ==== Jeżeli nie da się jej przetransformować na liczbę, to sprawdza, czy typem tej zmiennej jest {{Code|string}} (czy typem jest szereg). Po działaniu funkcją: {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}}, jeśli ma wtedy wartość: {{Code|"true"}}, wtedy ta rozważana na samym początku zmienna przyjmuje wartość {{Code|true}}, {{Code|"false"}}, wtedy {{Code|false}}, {{Code|"nil"}}, wtedy {{Code|nil}}. A jeżeli ta zmienna żadnej tej wartości nie przyjmuje z tych wartości, to wtedy jest transformowana na liczbę, jeżeli da się tą operację dokonać. === Walidacja przygotowanych parametrów podaną funkcją === Na samym końcu jest liczona wartość logiczna z przygotowanymi parametrami, według jednej z dwóch specjalnie przygotowanych funkcji. ==== Przypadek uruchamiania funkcji w kodzie ==== W postaci wywołania ogólnego: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); return (parametry_modul[funkcja]{[1]=parametr,[2]=argsfun,})and "tak" or nil; </syntaxhighlight> Gdzie {{Code|funkcja}}, to {{Code|CzyTak}} lub {{Code|CzyTakCiąg}}, a {{Code|parametr}}, to funkcja w jakimś module lub inna wartość, a {{Code|argsfun}}, to tabela argumentów ramki, dziecka, w kodzie {{lpg|Lua}} w {{lpr|Scribunto}}, w wikikodzie w szablonie rodzicu. Gdy ta funkcja zwróci wartość logiczną odpowiadającą {{Code|true}}, to wtedy zwraca {{Code|tak}}, w przeciwnym wypadku {{Code|nil}}. ==== Procedura zwracając wartość z ramki wiki kodu ==== Ta funkcja jest wykorzystywana, gdy jest uruchamiana w ramce, gdy mamy parametry ramki: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTakCiąg| Wartość |nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wyspecjalizowana=tak}} </syntaxhighlight> Podobnie jest z funkcją {{Code|{{sr|#p.CzyTak|p=Parametry}}}}. A jak jest tworzony parametr zmiennej z powyższych wywołań, to jest powiedziane powyżej. === Atrapa funkcji parametrów ramki rodzica === Równie dobrze możemy zefiniować atrapę funkcji {{Code|frame.getParent}}, wtedy: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul["CzyTakCiąg"]{args={ [1]=" Wartość ", [2]="", ["nazwa1"]="wartość1", ["nazwa2"]="wartość2", [3]="wartość3", [4]="wartość4", ["wyspecjalizowana"]="tak", }, getParent=function()end, }; </syntaxhighlight> Czasami tak potrzeba robić, by ominąc zabezpieczenia pewnych funkcji, nawet tutaj. == {{Code|p["CzyTakCiąg"]}} == W tej funkcji parametry mogą być zbierane w osobnych parametrach lub w jednej tablicy albo ta funkcja może być uruchomiona w ramce. Funkcja do swojego działania wykorzystuje do tego {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}} i {{Code|{{sr|#p.CzyTak|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["CzyTakCiąg"]=function(...)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = zmienna | _1 = Funkcja - typ: {{Code|function}}, lub inna wartość sprawdzana, np. {{Code|string}}, czy odpowiada wartości prawdziwej. | 2 = parametry | _2 = Parametry funkcji sprawdzanej, gdy zmienna: {{Code|zmienna}}, jest funkcją. }} === Funkcja uruchamiania w ramce wiki kodu === ==== Normalne znaki z odstępami ==== Jeżeli ta funkcja jest uruchomiona w ramce, np. w postaci: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTakCiąg| Wartość |wyspecjalizowana=tak}} </syntaxhighlight> ==== Ciąg składający się z samych odstępów - wartość zwracana ==== To w tym przypadku funkcja zwraca wartość {{Code|tak}}, tak jak funkcja {{Code|{{sr|#p.CzyTak|p=Parametry}}}}, a w przypadku: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTakCiąg| |wyspecjalizowana=tak}} </syntaxhighlight> To w tym przypadku funkcja zwraca wartość równą ciągowi pustemu, mimo że funkcja {{Code|{{sr|#p.CzyTak|p=Parametry}}}} zwróci wartość {{Code|tak}}. === Funkcja uruchamiania w postaci funkcji bibliotecznej === ==== Ciąg z treściwymi znakami z odstępami ==== Podobnie jest w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, czyli: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul["CzyTakCiąg"](" Wartość "); </syntaxhighlight> Ta funkcja zwróci wartość {{Code|tak}}. ==== Brak takich znaków, tylko same odstępy ==== A teraz inny przykład: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul["CzyTakCiąg"](" "); </syntaxhighlight> Ta funkcja zwróci wartość {{Code|nil}}. == {{Code|p.CzyTak}} == W tej funkcji parametry mogą być zbierane w osobnych parametrach lub w jednej tablicy albo ta funkcja może być uruchomiona w ramce. Funkcja do swojego działania nie wykorzystuje do tego {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}}, tak jak to robi {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.CzyTak=function(...)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|1}} lub {{Code|zmienna}} | _1 = Sprawdzana zmienna, może być to funkcją. | 2 = {{Code|2}} lub {{Code|parametry}} | _2 = Parametry funkcji, może być to tablica parametrów, jest ona wykorzystywana, gdy powyższy element jest funkcją. }} === Funkcja działająca w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} === ==== Ciąg niepusty z treściwymi znakami z odstępami ==== Jeżeli ta funkcja jest uruchomiona w ramce, np. w postaci: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTak| Wartość |wyspecjalizowana=tak}} </syntaxhighlight> To w tym przypadku funkcja zwraca wartość {{Code|tak}}, tak jak funkcja {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}} ==== Ciąg z samych znaków odstępów ==== A w przypadku: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTak| |wyspecjalizowana=tak}} </syntaxhighlight> To w tym przypadku funkcja zwraca wartość równą ciągowi {{Code|tak}}, mimo że funkcja {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}} zwróci wartość równoważną ciągowi pustemu. ==== Ciąg pusty - jego rewidowanie ==== <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTak||wyspecjalizowana=tak}} </syntaxhighlight> Ta funkcja uruchomiona w ramce w wikikodzie zwraca wartość równą ciągowi pustemu, tak samo, jak funkcja {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}. === W postaci funkcji bibliotecznej - nie ramki === ==== Treściwe znaki z odstępami ==== Podobnie jest w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, czyli: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul.CzyTak(" Wartość "); </syntaxhighlight> Ta funkcja zwróci wartość {{Code|tak}}. ==== Same odstępy ==== A teraz inny przykład: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul.CzyTak(" "); </syntaxhighlight> Ta funkcja zwróci wartość {{Code|tak}}, niezależnie, czy tym ciągiem jest szereg składający się z samych znaków odstępów. ==== Ciąg pusty ==== A teraz inny przykład: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul.CzyTak(""); </syntaxhighlight> Ta funkcja wtedy zwróci wartość równą {{Code|nil}} w kodzie {{lpg|Lua}} w {{lpg|Lua|Scribunto}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> t7m9v0znlzo8mrgmistdkyubzd2lyh6 555769 555768 2026-09-12T00:30:36Z Persino 2851 /* p["CzyTakCiąg"] */ 555769 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == Funkcje prawdy i fałszu - ogólne przedstawienie == W funkcjach: {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}} i {{Code|{{sr|#p.CzyTak|p=Parametry}}}}, uruchomione w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, muszą posiadać dodatkowo parametr {{Parametr|wyspecjalizowana|tak}}, aby dało się w je wsadzić skutecznie parametry do samej tej ramki dziecka, a nie używać parametry szablonu rodzica. === Wzajemna zależność === W tej pierwszej funkcji jest wykorzystywana ta druga, w której w tej pierwszej w parametrze pierwszym, w przypadku łańcuchów znakowych wykorzystywana jest funkcja do usuwania dolnych myślników i odstępów na końcach, a potem jest uruchamiana ta druga. === Uzyskiwane wyniki w zależności od sprawdzanego parametru - różne typy wartości pierwszej zmiennej === ==== Parametr typu {{Code|string}} ==== Te funkcje rozważane tutaj powiedziane powyżej w wikikodzie w szablonie rodzicu, czy w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, służą do sprawdzenia, czy wartość, czy jest nierówna ciągowi uzyskanemu pustemu, w przypadku tej pierwszej funkcji, a w przypadku drugiej, czy nie jest ciągiem pustym. ==== Typu {{Code|number}} ==== Jeżeli jest to liczba, to czy jest nie równa {{Code|0}}. ==== Typu {{Code|boolean}} ==== Czy wartością logiczną jest jako {{Code|true}}. ==== Typu {{Code|table}} ==== Dla tabel, czy jest niepustą tabelą. ==== Typu {{Code|function}} ==== Ale za to w przypadku funkcji, czy funkcja o nazwie {{Code|zmienna}} z parametrami {{Code|parametry}}, czy zwraca wartość odpowiadająca {{Code|true}}, === Zwracane wartości === Jeżeli funkcja zwróci wartość odpowiadająca prawdziwej, to ta funkcja zwróci znak {{Code|tak}}, w przeciwnym wypadku w wikikodzie zwraca wartość pustą, a w kodzie, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, wartość {{Code|nil}}. == {{Śródtytuł|CzyTakSilnik}}{{Code|CzyTakSilnik}} == Funkcja pomocnicza służąca do liczenia wartości logicznej {{Code|tak}} lub {{Code|nil}} parametrów ramki, w wikikodzie, funkcji {{lpg|lua}} w {{lpr|Lua|Scribunto}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function CzyTakSilnik(args,funkcja)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|args}} | _1 = Tablica elementów z pierwszym elementem do sprawdzenia, z drugim jako nazwa modułu z funkcjami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w takim przypadku ten pierwszy element jest nazwą funkcji, który w połączeniu z nazwą modułu daje referencję do funkcji. | 2 = {{Code|funkcja}} | _2 = Funkcja, za pomocą której sprawdzamy logiczność pierwszego elementu tej tablicy. }} === Możliwe wartości drugiego parametru - funkcji === Możliwymi wartościami funkcji parametru {{Code|funkcja}} jest {{Code|CzyTak}} lub {{Code|CzyTakCiąg}} (ta funkcja wykorzystuje funkcję {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}} do swojego argumentu, który służy do sprawdzania, jaki spełnia warunek). === Sprawdzanie prawdziwości funkcji z jej zrzucanej, wartości === Gdy istnieje parametr tablicy {{Code|args}} funkcji o parametrze nienazwanym {{Code|args[2]}}, który jest nazwą modułu z funkcjami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a samą funkcją jest {{Code|args[1]}}, to tak utworzona funkcja jest zmienną {{Code|parametr}}, a jeżeli jej nie ma, to ona przyjmuje wartość {{Code|args[1]}}, a gdy jednak istnieje ten drugi element, to na podstawie którego zbierane są argumenty ramki nazwane jak nazwane, tzn. klucze i ich wartości przypisuje, a w przypadku parametrów nienazwanych (nie są zbierane elementy w tej tablicy o kluczach o wartości: {{Code|1}} i {{Code|2}}), a te inne klucze są pomniejszane o dwa, w ten sposób jest utworzona tabela {{Code|argsfun}}. === Brak składowej drugiej tablicy, co świadczy, że nie sprawdzamy funkcji, tylko co innego === ==== Rewidowana jest liczba lub ciąg znaków liczba ==== Gdy nie ma składowej drugiej tablicy, tzn. {{Code|args[2]}}, to wtedy funkcja sprawdza, czy {{Code|args[1]}} to jest liczba w łańcuchu znakowym, lub bezpośrednio liczba. ==== Typ - ciag znaków ==== Jeżeli nie da się jej przetransformować na liczbę, to sprawdza, czy typem tej zmiennej jest {{Code|string}} (czy typem jest szereg). Po działaniu funkcją: {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}}, jeśli ma wtedy wartość: {{Code|"true"}}, wtedy ta rozważana na samym początku zmienna przyjmuje wartość {{Code|true}}, {{Code|"false"}}, wtedy {{Code|false}}, {{Code|"nil"}}, wtedy {{Code|nil}}. A jeżeli ta zmienna żadnej tej wartości nie przyjmuje z tych wartości, to wtedy jest transformowana na liczbę, jeżeli da się tą operację dokonać. === Walidacja przygotowanych parametrów podaną funkcją === Na samym końcu jest liczona wartość logiczna z przygotowanymi parametrami, według jednej z dwóch specjalnie przygotowanych funkcji. ==== Przypadek uruchamiania funkcji w kodzie ==== W postaci wywołania ogólnego: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); return (parametry_modul[funkcja]{[1]=parametr,[2]=argsfun,})and "tak" or nil; </syntaxhighlight> Gdzie {{Code|funkcja}}, to {{Code|CzyTak}} lub {{Code|CzyTakCiąg}}, a {{Code|parametr}}, to funkcja w jakimś module lub inna wartość, a {{Code|argsfun}}, to tabela argumentów ramki, dziecka, w kodzie {{lpg|Lua}} w {{lpr|Scribunto}}, w wikikodzie w szablonie rodzicu. Gdy ta funkcja zwróci wartość logiczną odpowiadającą {{Code|true}}, to wtedy zwraca {{Code|tak}}, w przeciwnym wypadku {{Code|nil}}. ==== Procedura zwracając wartość z ramki wiki kodu ==== Ta funkcja jest wykorzystywana, gdy jest uruchamiana w ramce, gdy mamy parametry ramki: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTakCiąg| Wartość |nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wyspecjalizowana=tak}} </syntaxhighlight> Podobnie jest z funkcją {{Code|{{sr|#p.CzyTak|p=Parametry}}}}. A jak jest tworzony parametr zmiennej z powyższych wywołań, to jest powiedziane powyżej. === Atrapa funkcji parametrów ramki rodzica === Równie dobrze możemy zefiniować atrapę funkcji {{Code|frame.getParent}}, wtedy: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul["CzyTakCiąg"]{args={ [1]=" Wartość ", [2]="", ["nazwa1"]="wartość1", ["nazwa2"]="wartość2", [3]="wartość3", [4]="wartość4", ["wyspecjalizowana"]="tak", }, getParent=function()end, }; </syntaxhighlight> Czasami tak potrzeba robić, by ominąc zabezpieczenia pewnych funkcji, nawet tutaj. == {{Śródtytuł|p["CzyTakCiąg"]}}{{Code|p["CzyTakCiąg"]}} == W tej funkcji parametry mogą być zbierane w osobnych parametrach lub w jednej tablicy albo ta funkcja może być uruchomiona w ramce. Funkcja do swojego działania wykorzystuje do tego {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}} i {{Code|{{sr|#p.CzyTak|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["CzyTakCiąg"]=function(...)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = zmienna | _1 = Funkcja - typ: {{Code|function}}, lub inna wartość sprawdzana, np. {{Code|string}}, czy odpowiada wartości prawdziwej. | 2 = parametry | _2 = Parametry funkcji sprawdzanej, gdy zmienna: {{Code|zmienna}}, jest funkcją. }} === Funkcja uruchamiania w ramce wiki kodu === ==== Normalne znaki z odstępami ==== Jeżeli ta funkcja jest uruchomiona w ramce, np. w postaci: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTakCiąg| Wartość |wyspecjalizowana=tak}} </syntaxhighlight> ==== Ciąg składający się z samych odstępów - wartość zwracana ==== To w tym przypadku funkcja zwraca wartość {{Code|tak}}, tak jak funkcja {{Code|{{sr|#p.CzyTak|p=Parametry}}}}, a w przypadku: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTakCiąg| |wyspecjalizowana=tak}} </syntaxhighlight> To w tym przypadku funkcja zwraca wartość równą ciągowi pustemu, mimo że funkcja {{Code|{{sr|#p.CzyTak|p=Parametry}}}} zwróci wartość {{Code|tak}}. === Funkcja uruchamiania w postaci funkcji bibliotecznej === ==== Ciąg z treściwymi znakami z odstępami ==== Podobnie jest w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, czyli: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul["CzyTakCiąg"](" Wartość "); </syntaxhighlight> Ta funkcja zwróci wartość {{Code|tak}}. ==== Brak takich znaków, tylko same odstępy ==== A teraz inny przykład: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul["CzyTakCiąg"](" "); </syntaxhighlight> Ta funkcja zwróci wartość {{Code|nil}}. == {{Code|p.CzyTak}} == W tej funkcji parametry mogą być zbierane w osobnych parametrach lub w jednej tablicy albo ta funkcja może być uruchomiona w ramce. Funkcja do swojego działania nie wykorzystuje do tego {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}}, tak jak to robi {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.CzyTak=function(...)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|1}} lub {{Code|zmienna}} | _1 = Sprawdzana zmienna, może być to funkcją. | 2 = {{Code|2}} lub {{Code|parametry}} | _2 = Parametry funkcji, może być to tablica parametrów, jest ona wykorzystywana, gdy powyższy element jest funkcją. }} === Funkcja działająca w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} === ==== Ciąg niepusty z treściwymi znakami z odstępami ==== Jeżeli ta funkcja jest uruchomiona w ramce, np. w postaci: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTak| Wartość |wyspecjalizowana=tak}} </syntaxhighlight> To w tym przypadku funkcja zwraca wartość {{Code|tak}}, tak jak funkcja {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}} ==== Ciąg z samych znaków odstępów ==== A w przypadku: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTak| |wyspecjalizowana=tak}} </syntaxhighlight> To w tym przypadku funkcja zwraca wartość równą ciągowi {{Code|tak}}, mimo że funkcja {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}} zwróci wartość równoważną ciągowi pustemu. ==== Ciąg pusty - jego rewidowanie ==== <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTak||wyspecjalizowana=tak}} </syntaxhighlight> Ta funkcja uruchomiona w ramce w wikikodzie zwraca wartość równą ciągowi pustemu, tak samo, jak funkcja {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}. === W postaci funkcji bibliotecznej - nie ramki === ==== Treściwe znaki z odstępami ==== Podobnie jest w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, czyli: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul.CzyTak(" Wartość "); </syntaxhighlight> Ta funkcja zwróci wartość {{Code|tak}}. ==== Same odstępy ==== A teraz inny przykład: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul.CzyTak(" "); </syntaxhighlight> Ta funkcja zwróci wartość {{Code|tak}}, niezależnie, czy tym ciągiem jest szereg składający się z samych znaków odstępów. ==== Ciąg pusty ==== A teraz inny przykład: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul.CzyTak(""); </syntaxhighlight> Ta funkcja wtedy zwróci wartość równą {{Code|nil}} w kodzie {{lpg|Lua}} w {{lpg|Lua|Scribunto}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> kts0bzz073s0ifmbhjd0z8fu7b80gqv 555770 555769 2026-09-12T00:31:58Z Persino 2851 555770 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == Funkcje prawdy i fałszu - ogólne przedstawienie == W funkcjach: {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}} i {{Code|{{sr|#p.CzyTak|p=Parametry}}}}, uruchomione w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, muszą posiadać dodatkowo parametr {{Parametr|wyspecjalizowana|tak}}, aby dało się w je wsadzić skutecznie parametry do samej tej ramki dziecka, a nie używać parametry szablonu rodzica. === Wzajemna zależność === W tej pierwszej funkcji jest wykorzystywana ta druga, w której w tej pierwszej w parametrze pierwszym, w przypadku łańcuchów znakowych wykorzystywana jest funkcja do usuwania dolnych myślników i odstępów na końcach, a potem jest uruchamiana ta druga. === Uzyskiwane wyniki w zależności od sprawdzanego parametru - różne typy wartości pierwszej zmiennej === ==== Parametr typu {{Code|string}} ==== Te funkcje rozważane tutaj powiedziane powyżej w wikikodzie w szablonie rodzicu, czy w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, służą do sprawdzenia, czy wartość, czy jest nierówna ciągowi uzyskanemu pustemu, w przypadku tej pierwszej funkcji, a w przypadku drugiej, czy nie jest ciągiem pustym. ==== Typu {{Code|number}} ==== Jeżeli jest to liczba, to czy jest nie równa {{Code|0}}. ==== Typu {{Code|boolean}} ==== Czy wartością logiczną jest jako {{Code|true}}. ==== Typu {{Code|table}} ==== Dla tabel, czy jest niepustą tabelą. ==== Typu {{Code|function}} ==== Ale za to w przypadku funkcji, czy funkcja o nazwie {{Code|zmienna}} z parametrami {{Code|parametry}}, czy zwraca wartość odpowiadająca {{Code|true}}, === Zwracane wartości === Jeżeli funkcja zwróci wartość odpowiadająca prawdziwej, to ta funkcja zwróci znak {{Code|tak}}, w przeciwnym wypadku w wikikodzie zwraca wartość pustą, a w kodzie, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, wartość {{Code|nil}}. == {{Śródtytuł|CzyTakSilnik}}{{Code|CzyTakSilnik}} == Funkcja pomocnicza służąca do liczenia wartości logicznej {{Code|tak}} lub {{Code|nil}} parametrów ramki, w wikikodzie, funkcji {{lpg|lua}} w {{lpr|Lua|Scribunto}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function CzyTakSilnik(args,funkcja)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|args}} | _1 = Tablica elementów z pierwszym elementem do sprawdzenia, z drugim jako nazwa modułu z funkcjami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w takim przypadku ten pierwszy element jest nazwą funkcji, który w połączeniu z nazwą modułu daje referencję do funkcji. | 2 = {{Code|funkcja}} | _2 = Funkcja, za pomocą której sprawdzamy logiczność pierwszego elementu tej tablicy. }} === Możliwe wartości drugiego parametru - funkcji === Możliwymi wartościami funkcji parametru {{Code|funkcja}} jest {{Code|CzyTak}} lub {{Code|CzyTakCiąg}} (ta funkcja wykorzystuje funkcję {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}} do swojego argumentu, który służy do sprawdzania, jaki spełnia warunek). === Sprawdzanie prawdziwości funkcji z jej zrzucanej, wartości === Gdy istnieje parametr tablicy {{Code|args}} funkcji o parametrze nienazwanym {{Code|args[2]}}, który jest nazwą modułu z funkcjami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a samą funkcją jest {{Code|args[1]}}, to tak utworzona funkcja jest zmienną {{Code|parametr}}, a jeżeli jej nie ma, to ona przyjmuje wartość {{Code|args[1]}}, a gdy jednak istnieje ten drugi element, to na podstawie którego zbierane są argumenty ramki nazwane jak nazwane, tzn. klucze i ich wartości przypisuje, a w przypadku parametrów nienazwanych (nie są zbierane elementy w tej tablicy o kluczach o wartości: {{Code|1}} i {{Code|2}}), a te inne klucze są pomniejszane o dwa, w ten sposób jest utworzona tabela {{Code|argsfun}}. === Brak składowej drugiej tablicy, co świadczy, że nie sprawdzamy funkcji, tylko co innego === ==== Rewidowana jest liczba lub ciąg znaków liczba ==== Gdy nie ma składowej drugiej tablicy, tzn. {{Code|args[2]}}, to wtedy funkcja sprawdza, czy {{Code|args[1]}} to jest liczba w łańcuchu znakowym, lub bezpośrednio liczba. ==== Typ - ciag znaków ==== Jeżeli nie da się jej przetransformować na liczbę, to sprawdza, czy typem tej zmiennej jest {{Code|string}} (czy typem jest szereg). Po działaniu funkcją: {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}}, jeśli ma wtedy wartość: {{Code|"true"}}, wtedy ta rozważana na samym początku zmienna przyjmuje wartość {{Code|true}}, {{Code|"false"}}, wtedy {{Code|false}}, {{Code|"nil"}}, wtedy {{Code|nil}}. A jeżeli ta zmienna żadnej tej wartości nie przyjmuje z tych wartości, to wtedy jest transformowana na liczbę, jeżeli da się tą operację dokonać. === Walidacja przygotowanych parametrów podaną funkcją === Na samym końcu jest liczona wartość logiczna z przygotowanymi parametrami, według jednej z dwóch specjalnie przygotowanych funkcji. ==== Przypadek uruchamiania funkcji w kodzie ==== W postaci wywołania ogólnego: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); return (parametry_modul[funkcja]{[1]=parametr,[2]=argsfun,})and "tak" or nil; </syntaxhighlight> Gdzie {{Code|funkcja}}, to {{Code|CzyTak}} lub {{Code|CzyTakCiąg}}, a {{Code|parametr}}, to funkcja w jakimś module lub inna wartość, a {{Code|argsfun}}, to tabela argumentów ramki, dziecka, w kodzie {{lpg|Lua}} w {{lpr|Scribunto}}, w wikikodzie w szablonie rodzicu. Gdy ta funkcja zwróci wartość logiczną odpowiadającą {{Code|true}}, to wtedy zwraca {{Code|tak}}, w przeciwnym wypadku {{Code|nil}}. ==== Procedura zwracając wartość z ramki wiki kodu ==== Ta funkcja jest wykorzystywana, gdy jest uruchamiana w ramce, gdy mamy parametry ramki: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTakCiąg| Wartość |nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wyspecjalizowana=tak}} </syntaxhighlight> Podobnie jest z funkcją {{Code|{{sr|#p.CzyTak|p=Parametry}}}}. A jak jest tworzony parametr zmiennej z powyższych wywołań, to jest powiedziane powyżej. === Atrapa funkcji parametrów ramki rodzica === Równie dobrze możemy zefiniować atrapę funkcji {{Code|frame.getParent}}, wtedy: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul["CzyTakCiąg"]{args={ [1]=" Wartość ", [2]="", ["nazwa1"]="wartość1", ["nazwa2"]="wartość2", [3]="wartość3", [4]="wartość4", ["wyspecjalizowana"]="tak", }, getParent=function()end, }; </syntaxhighlight> Czasami tak potrzeba robić, by ominąc zabezpieczenia pewnych funkcji, nawet tutaj. == {{Śródtytuł|p["CzyTakCiąg"]}}{{Code|p["CzyTakCiąg"]}} == W tej funkcji parametry mogą być zbierane w osobnych parametrach lub w jednej tablicy albo ta funkcja może być uruchomiona w ramce. Funkcja do swojego działania wykorzystuje do tego {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}} i {{Code|{{sr|#p.CzyTak|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["CzyTakCiąg"]=function(...)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = zmienna | _1 = Funkcja - typ: {{Code|function}}, lub inna wartość sprawdzana, np. {{Code|string}}, czy odpowiada wartości prawdziwej. | 2 = parametry | _2 = Parametry funkcji sprawdzanej, gdy zmienna: {{Code|zmienna}}, jest funkcją. }} === Funkcja uruchamiania w ramce wiki kodu === ==== Normalne znaki z odstępami ==== Jeżeli ta funkcja jest uruchomiona w ramce, np. w postaci: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTakCiąg| Wartość |wyspecjalizowana=tak}} </syntaxhighlight> ==== Ciąg składający się z samych odstępów - wartość zwracana ==== To w tym przypadku funkcja zwraca wartość {{Code|tak}}, tak jak funkcja {{Code|{{sr|#p.CzyTak|p=Parametry}}}}, a w przypadku: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTakCiąg| |wyspecjalizowana=tak}} </syntaxhighlight> To w tym przypadku funkcja zwraca wartość równą ciągowi pustemu, mimo że funkcja {{Code|{{sr|#p.CzyTak|p=Parametry}}}} zwróci wartość {{Code|tak}}. === Funkcja uruchamiania w postaci funkcji bibliotecznej === ==== Ciąg z treściwymi znakami z odstępami ==== Podobnie jest w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, czyli: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul["CzyTakCiąg"](" Wartość "); </syntaxhighlight> Ta funkcja zwróci wartość {{Code|tak}}. ==== Brak takich znaków, tylko same odstępy ==== A teraz inny przykład: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul["CzyTakCiąg"](" "); </syntaxhighlight> Ta funkcja zwróci wartość {{Code|nil}}. == {{Śródtytuł|p.CzyTak}}{{Code|p.CzyTak}} == W tej funkcji parametry mogą być zbierane w osobnych parametrach lub w jednej tablicy albo ta funkcja może być uruchomiona w ramce. Funkcja do swojego działania nie wykorzystuje do tego {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}}, tak jak to robi {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.CzyTak=function(...)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|1}} lub {{Code|zmienna}} | _1 = Sprawdzana zmienna, może być to funkcją. | 2 = {{Code|2}} lub {{Code|parametry}} | _2 = Parametry funkcji, może być to tablica parametrów, jest ona wykorzystywana, gdy powyższy element jest funkcją. }} === Funkcja działająca w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} === ==== Ciąg niepusty z treściwymi znakami z odstępami ==== Jeżeli ta funkcja jest uruchomiona w ramce, np. w postaci: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTak| Wartość |wyspecjalizowana=tak}} </syntaxhighlight> To w tym przypadku funkcja zwraca wartość {{Code|tak}}, tak jak funkcja {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}} ==== Ciąg z samych znaków odstępów ==== A w przypadku: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTak| |wyspecjalizowana=tak}} </syntaxhighlight> To w tym przypadku funkcja zwraca wartość równą ciągowi {{Code|tak}}, mimo że funkcja {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}} zwróci wartość równoważną ciągowi pustemu. ==== Ciąg pusty - jego rewidowanie ==== <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTak||wyspecjalizowana=tak}} </syntaxhighlight> Ta funkcja uruchomiona w ramce w wikikodzie zwraca wartość równą ciągowi pustemu, tak samo, jak funkcja {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}. === W postaci funkcji bibliotecznej - nie ramki === ==== Treściwe znaki z odstępami ==== Podobnie jest w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, czyli: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul.CzyTak(" Wartość "); </syntaxhighlight> Ta funkcja zwróci wartość {{Code|tak}}. ==== Same odstępy ==== A teraz inny przykład: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul.CzyTak(" "); </syntaxhighlight> Ta funkcja zwróci wartość {{Code|tak}}, niezależnie, czy tym ciągiem jest szereg składający się z samych znaków odstępów. ==== Ciąg pusty ==== A teraz inny przykład: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul.CzyTak(""); </syntaxhighlight> Ta funkcja wtedy zwróci wartość równą {{Code|nil}} w kodzie {{lpg|Lua}} w {{lpg|Lua|Scribunto}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 5lrgnrrepyrjb1u5y4ikezimqqtoehn 555771 555770 2026-09-12T00:35:48Z Persino 2851 /* Funkcje prawdy i fałszu - ogólne przedstawienie */ 555771 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == Funkcje prawdy i fałszu - ogólne przedstawienie == W funkcjach: {{LinkŚródtytuł|p["CzyTakCiąg"]}} i {{LinkŚródtytuł|p.CzyTak}}, uruchomione w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, muszą posiadać dodatkowo parametr {{Parametr|wyspecjalizowana|tak}}, aby dało się w je wsadzić skutecznie parametry do samej tej ramki dziecka, a nie używać parametry szablonu rodzica. === Wzajemna zależność === W tej pierwszej funkcji jest wykorzystywana ta druga, w której w tej pierwszej w parametrze pierwszym, w przypadku łańcuchów znakowych wykorzystywana jest funkcja do usuwania dolnych myślników i odstępów na końcach, a potem jest uruchamiana ta druga. === Uzyskiwane wyniki w zależności od sprawdzanego parametru - różne typy wartości pierwszej zmiennej === ==== Parametr typu {{Code|string}} ==== Te funkcje rozważane tutaj powiedziane powyżej w wikikodzie w szablonie rodzicu, czy w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, służą do sprawdzenia, czy wartość, czy jest nierówna ciągowi uzyskanemu pustemu, w przypadku tej pierwszej funkcji, a w przypadku drugiej, czy nie jest ciągiem pustym. ==== Typu {{Code|number}} ==== Jeżeli jest to liczba, to czy jest nie równa {{Code|0}}. ==== Typu {{Code|boolean}} ==== Czy wartością logiczną jest jako {{Code|true}}. ==== Typu {{Code|table}} ==== Dla tabel, czy jest niepustą tabelą. ==== Typu {{Code|function}} ==== Ale za to w przypadku funkcji, czy funkcja o nazwie {{Code|zmienna}} z parametrami {{Code|parametry}}, czy zwraca wartość odpowiadająca {{Code|true}}, === Zwracane wartości === Jeżeli funkcja zwróci wartość odpowiadająca prawdziwej, to ta funkcja zwróci znak {{Code|tak}}, w przeciwnym wypadku w wikikodzie zwraca wartość pustą, a w kodzie, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, wartość {{Code|nil}}. == {{Śródtytuł|CzyTakSilnik}}{{Code|CzyTakSilnik}} == Funkcja pomocnicza służąca do liczenia wartości logicznej {{Code|tak}} lub {{Code|nil}} parametrów ramki, w wikikodzie, funkcji {{lpg|lua}} w {{lpr|Lua|Scribunto}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function CzyTakSilnik(args,funkcja)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|args}} | _1 = Tablica elementów z pierwszym elementem do sprawdzenia, z drugim jako nazwa modułu z funkcjami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w takim przypadku ten pierwszy element jest nazwą funkcji, który w połączeniu z nazwą modułu daje referencję do funkcji. | 2 = {{Code|funkcja}} | _2 = Funkcja, za pomocą której sprawdzamy logiczność pierwszego elementu tej tablicy. }} === Możliwe wartości drugiego parametru - funkcji === Możliwymi wartościami funkcji parametru {{Code|funkcja}} jest {{Code|CzyTak}} lub {{Code|CzyTakCiąg}} (ta funkcja wykorzystuje funkcję {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}} do swojego argumentu, który służy do sprawdzania, jaki spełnia warunek). === Sprawdzanie prawdziwości funkcji z jej zrzucanej, wartości === Gdy istnieje parametr tablicy {{Code|args}} funkcji o parametrze nienazwanym {{Code|args[2]}}, który jest nazwą modułu z funkcjami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a samą funkcją jest {{Code|args[1]}}, to tak utworzona funkcja jest zmienną {{Code|parametr}}, a jeżeli jej nie ma, to ona przyjmuje wartość {{Code|args[1]}}, a gdy jednak istnieje ten drugi element, to na podstawie którego zbierane są argumenty ramki nazwane jak nazwane, tzn. klucze i ich wartości przypisuje, a w przypadku parametrów nienazwanych (nie są zbierane elementy w tej tablicy o kluczach o wartości: {{Code|1}} i {{Code|2}}), a te inne klucze są pomniejszane o dwa, w ten sposób jest utworzona tabela {{Code|argsfun}}. === Brak składowej drugiej tablicy, co świadczy, że nie sprawdzamy funkcji, tylko co innego === ==== Rewidowana jest liczba lub ciąg znaków liczba ==== Gdy nie ma składowej drugiej tablicy, tzn. {{Code|args[2]}}, to wtedy funkcja sprawdza, czy {{Code|args[1]}} to jest liczba w łańcuchu znakowym, lub bezpośrednio liczba. ==== Typ - ciag znaków ==== Jeżeli nie da się jej przetransformować na liczbę, to sprawdza, czy typem tej zmiennej jest {{Code|string}} (czy typem jest szereg). Po działaniu funkcją: {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}}, jeśli ma wtedy wartość: {{Code|"true"}}, wtedy ta rozważana na samym początku zmienna przyjmuje wartość {{Code|true}}, {{Code|"false"}}, wtedy {{Code|false}}, {{Code|"nil"}}, wtedy {{Code|nil}}. A jeżeli ta zmienna żadnej tej wartości nie przyjmuje z tych wartości, to wtedy jest transformowana na liczbę, jeżeli da się tą operację dokonać. === Walidacja przygotowanych parametrów podaną funkcją === Na samym końcu jest liczona wartość logiczna z przygotowanymi parametrami, według jednej z dwóch specjalnie przygotowanych funkcji. ==== Przypadek uruchamiania funkcji w kodzie ==== W postaci wywołania ogólnego: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); return (parametry_modul[funkcja]{[1]=parametr,[2]=argsfun,})and "tak" or nil; </syntaxhighlight> Gdzie {{Code|funkcja}}, to {{Code|CzyTak}} lub {{Code|CzyTakCiąg}}, a {{Code|parametr}}, to funkcja w jakimś module lub inna wartość, a {{Code|argsfun}}, to tabela argumentów ramki, dziecka, w kodzie {{lpg|Lua}} w {{lpr|Scribunto}}, w wikikodzie w szablonie rodzicu. Gdy ta funkcja zwróci wartość logiczną odpowiadającą {{Code|true}}, to wtedy zwraca {{Code|tak}}, w przeciwnym wypadku {{Code|nil}}. ==== Procedura zwracając wartość z ramki wiki kodu ==== Ta funkcja jest wykorzystywana, gdy jest uruchamiana w ramce, gdy mamy parametry ramki: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTakCiąg| Wartość |nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wyspecjalizowana=tak}} </syntaxhighlight> Podobnie jest z funkcją {{Code|{{sr|#p.CzyTak|p=Parametry}}}}. A jak jest tworzony parametr zmiennej z powyższych wywołań, to jest powiedziane powyżej. === Atrapa funkcji parametrów ramki rodzica === Równie dobrze możemy zefiniować atrapę funkcji {{Code|frame.getParent}}, wtedy: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul["CzyTakCiąg"]{args={ [1]=" Wartość ", [2]="", ["nazwa1"]="wartość1", ["nazwa2"]="wartość2", [3]="wartość3", [4]="wartość4", ["wyspecjalizowana"]="tak", }, getParent=function()end, }; </syntaxhighlight> Czasami tak potrzeba robić, by ominąc zabezpieczenia pewnych funkcji, nawet tutaj. == {{Śródtytuł|p["CzyTakCiąg"]}}{{Code|p["CzyTakCiąg"]}} == W tej funkcji parametry mogą być zbierane w osobnych parametrach lub w jednej tablicy albo ta funkcja może być uruchomiona w ramce. Funkcja do swojego działania wykorzystuje do tego {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}} i {{Code|{{sr|#p.CzyTak|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["CzyTakCiąg"]=function(...)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = zmienna | _1 = Funkcja - typ: {{Code|function}}, lub inna wartość sprawdzana, np. {{Code|string}}, czy odpowiada wartości prawdziwej. | 2 = parametry | _2 = Parametry funkcji sprawdzanej, gdy zmienna: {{Code|zmienna}}, jest funkcją. }} === Funkcja uruchamiania w ramce wiki kodu === ==== Normalne znaki z odstępami ==== Jeżeli ta funkcja jest uruchomiona w ramce, np. w postaci: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTakCiąg| Wartość |wyspecjalizowana=tak}} </syntaxhighlight> ==== Ciąg składający się z samych odstępów - wartość zwracana ==== To w tym przypadku funkcja zwraca wartość {{Code|tak}}, tak jak funkcja {{Code|{{sr|#p.CzyTak|p=Parametry}}}}, a w przypadku: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTakCiąg| |wyspecjalizowana=tak}} </syntaxhighlight> To w tym przypadku funkcja zwraca wartość równą ciągowi pustemu, mimo że funkcja {{Code|{{sr|#p.CzyTak|p=Parametry}}}} zwróci wartość {{Code|tak}}. === Funkcja uruchamiania w postaci funkcji bibliotecznej === ==== Ciąg z treściwymi znakami z odstępami ==== Podobnie jest w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, czyli: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul["CzyTakCiąg"](" Wartość "); </syntaxhighlight> Ta funkcja zwróci wartość {{Code|tak}}. ==== Brak takich znaków, tylko same odstępy ==== A teraz inny przykład: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul["CzyTakCiąg"](" "); </syntaxhighlight> Ta funkcja zwróci wartość {{Code|nil}}. == {{Śródtytuł|p.CzyTak}}{{Code|p.CzyTak}} == W tej funkcji parametry mogą być zbierane w osobnych parametrach lub w jednej tablicy albo ta funkcja może być uruchomiona w ramce. Funkcja do swojego działania nie wykorzystuje do tego {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}}, tak jak to robi {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.CzyTak=function(...)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|1}} lub {{Code|zmienna}} | _1 = Sprawdzana zmienna, może być to funkcją. | 2 = {{Code|2}} lub {{Code|parametry}} | _2 = Parametry funkcji, może być to tablica parametrów, jest ona wykorzystywana, gdy powyższy element jest funkcją. }} === Funkcja działająca w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} === ==== Ciąg niepusty z treściwymi znakami z odstępami ==== Jeżeli ta funkcja jest uruchomiona w ramce, np. w postaci: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTak| Wartość |wyspecjalizowana=tak}} </syntaxhighlight> To w tym przypadku funkcja zwraca wartość {{Code|tak}}, tak jak funkcja {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}} ==== Ciąg z samych znaków odstępów ==== A w przypadku: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTak| |wyspecjalizowana=tak}} </syntaxhighlight> To w tym przypadku funkcja zwraca wartość równą ciągowi {{Code|tak}}, mimo że funkcja {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}} zwróci wartość równoważną ciągowi pustemu. ==== Ciąg pusty - jego rewidowanie ==== <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTak||wyspecjalizowana=tak}} </syntaxhighlight> Ta funkcja uruchomiona w ramce w wikikodzie zwraca wartość równą ciągowi pustemu, tak samo, jak funkcja {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}. === W postaci funkcji bibliotecznej - nie ramki === ==== Treściwe znaki z odstępami ==== Podobnie jest w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, czyli: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul.CzyTak(" Wartość "); </syntaxhighlight> Ta funkcja zwróci wartość {{Code|tak}}. ==== Same odstępy ==== A teraz inny przykład: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul.CzyTak(" "); </syntaxhighlight> Ta funkcja zwróci wartość {{Code|tak}}, niezależnie, czy tym ciągiem jest szereg składający się z samych znaków odstępów. ==== Ciąg pusty ==== A teraz inny przykład: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul.CzyTak(""); </syntaxhighlight> Ta funkcja wtedy zwróci wartość równą {{Code|nil}} w kodzie {{lpg|Lua}} w {{lpg|Lua|Scribunto}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> abn03xopumqre5q9pch0ehoombw47ht 555772 555771 2026-09-12T00:38:40Z Persino 2851 /* Atrapa funkcji parametrów ramki rodzica (szablonu) */ 555772 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == Funkcje prawdy i fałszu - ogólne przedstawienie == W funkcjach: {{LinkŚródtytuł|p["CzyTakCiąg"]}} i {{LinkŚródtytuł|p.CzyTak}}, uruchomione w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, muszą posiadać dodatkowo parametr {{Parametr|wyspecjalizowana|tak}}, aby dało się w je wsadzić skutecznie parametry do samej tej ramki dziecka, a nie używać parametry szablonu rodzica. === Wzajemna zależność === W tej pierwszej funkcji jest wykorzystywana ta druga, w której w tej pierwszej w parametrze pierwszym, w przypadku łańcuchów znakowych wykorzystywana jest funkcja do usuwania dolnych myślników i odstępów na końcach, a potem jest uruchamiana ta druga. === Uzyskiwane wyniki w zależności od sprawdzanego parametru - różne typy wartości pierwszej zmiennej === ==== Parametr typu {{Code|string}} ==== Te funkcje rozważane tutaj powiedziane powyżej w wikikodzie w szablonie rodzicu, czy w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, służą do sprawdzenia, czy wartość, czy jest nierówna ciągowi uzyskanemu pustemu, w przypadku tej pierwszej funkcji, a w przypadku drugiej, czy nie jest ciągiem pustym. ==== Typu {{Code|number}} ==== Jeżeli jest to liczba, to czy jest nie równa {{Code|0}}. ==== Typu {{Code|boolean}} ==== Czy wartością logiczną jest jako {{Code|true}}. ==== Typu {{Code|table}} ==== Dla tabel, czy jest niepustą tabelą. ==== Typu {{Code|function}} ==== Ale za to w przypadku funkcji, czy funkcja o nazwie {{Code|zmienna}} z parametrami {{Code|parametry}}, czy zwraca wartość odpowiadająca {{Code|true}}, === Zwracane wartości === Jeżeli funkcja zwróci wartość odpowiadająca prawdziwej, to ta funkcja zwróci znak {{Code|tak}}, w przeciwnym wypadku w wikikodzie zwraca wartość pustą, a w kodzie, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, wartość {{Code|nil}}. == {{Śródtytuł|CzyTakSilnik}}{{Code|CzyTakSilnik}} == Funkcja pomocnicza służąca do liczenia wartości logicznej {{Code|tak}} lub {{Code|nil}} parametrów ramki, w wikikodzie, funkcji {{lpg|lua}} w {{lpr|Lua|Scribunto}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function CzyTakSilnik(args,funkcja)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|args}} | _1 = Tablica elementów z pierwszym elementem do sprawdzenia, z drugim jako nazwa modułu z funkcjami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w takim przypadku ten pierwszy element jest nazwą funkcji, który w połączeniu z nazwą modułu daje referencję do funkcji. | 2 = {{Code|funkcja}} | _2 = Funkcja, za pomocą której sprawdzamy logiczność pierwszego elementu tej tablicy. }} === Możliwe wartości drugiego parametru - funkcji === Możliwymi wartościami funkcji parametru {{Code|funkcja}} jest {{Code|CzyTak}} lub {{Code|CzyTakCiąg}} (ta funkcja wykorzystuje funkcję {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}} do swojego argumentu, który służy do sprawdzania, jaki spełnia warunek). === Sprawdzanie prawdziwości funkcji z jej zrzucanej, wartości === Gdy istnieje parametr tablicy {{Code|args}} funkcji o parametrze nienazwanym {{Code|args[2]}}, który jest nazwą modułu z funkcjami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a samą funkcją jest {{Code|args[1]}}, to tak utworzona funkcja jest zmienną {{Code|parametr}}, a jeżeli jej nie ma, to ona przyjmuje wartość {{Code|args[1]}}, a gdy jednak istnieje ten drugi element, to na podstawie którego zbierane są argumenty ramki nazwane jak nazwane, tzn. klucze i ich wartości przypisuje, a w przypadku parametrów nienazwanych (nie są zbierane elementy w tej tablicy o kluczach o wartości: {{Code|1}} i {{Code|2}}), a te inne klucze są pomniejszane o dwa, w ten sposób jest utworzona tabela {{Code|argsfun}}. === Brak składowej drugiej tablicy, co świadczy, że nie sprawdzamy funkcji, tylko co innego === ==== Rewidowana jest liczba lub ciąg znaków liczba ==== Gdy nie ma składowej drugiej tablicy, tzn. {{Code|args[2]}}, to wtedy funkcja sprawdza, czy {{Code|args[1]}} to jest liczba w łańcuchu znakowym, lub bezpośrednio liczba. ==== Typ - ciag znaków ==== Jeżeli nie da się jej przetransformować na liczbę, to sprawdza, czy typem tej zmiennej jest {{Code|string}} (czy typem jest szereg). Po działaniu funkcją: {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}}, jeśli ma wtedy wartość: {{Code|"true"}}, wtedy ta rozważana na samym początku zmienna przyjmuje wartość {{Code|true}}, {{Code|"false"}}, wtedy {{Code|false}}, {{Code|"nil"}}, wtedy {{Code|nil}}. A jeżeli ta zmienna żadnej tej wartości nie przyjmuje z tych wartości, to wtedy jest transformowana na liczbę, jeżeli da się tą operację dokonać. === Walidacja przygotowanych parametrów podaną funkcją === Na samym końcu jest liczona wartość logiczna z przygotowanymi parametrami, według jednej z dwóch specjalnie przygotowanych funkcji. ==== Przypadek uruchamiania funkcji w kodzie ==== W postaci wywołania ogólnego: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); return (parametry_modul[funkcja]{[1]=parametr,[2]=argsfun,})and "tak" or nil; </syntaxhighlight> Gdzie {{Code|funkcja}}, to {{Code|CzyTak}} lub {{Code|CzyTakCiąg}}, a {{Code|parametr}}, to funkcja w jakimś module lub inna wartość, a {{Code|argsfun}}, to tabela argumentów ramki, dziecka, w kodzie {{lpg|Lua}} w {{lpr|Scribunto}}, w wikikodzie w szablonie rodzicu. Gdy ta funkcja zwróci wartość logiczną odpowiadającą {{Code|true}}, to wtedy zwraca {{Code|tak}}, w przeciwnym wypadku {{Code|nil}}. ==== Procedura zwracając wartość z ramki wiki kodu ==== Ta funkcja jest wykorzystywana, gdy jest uruchamiana w ramce, gdy mamy parametry ramki: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTakCiąg| Wartość |nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wyspecjalizowana=tak}} </syntaxhighlight> Podobnie jest z funkcją {{Code|{{sr|#p.CzyTak|p=Parametry}}}}. A jak jest tworzony parametr zmiennej z powyższych wywołań, to jest powiedziane powyżej. === Atrapa funkcji parametrów ramki rodzica (szablonu) === Równie dobrze możemy zefiniować atrapę funkcji {{Code|frame.getParent}}, wtedy: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul["CzyTakCiąg"]{args={ [1]=" Wartość ", [2]="", ["nazwa1"]="wartość1", ["nazwa2"]="wartość2", [3]="wartość3", [4]="wartość4", ["wyspecjalizowana"]="tak", }, getParent=function()end, }; </syntaxhighlight> Czasami tak potrzeba robić, by ominąc zabezpieczenia pewnych funkcji, nawet tutaj. == {{Śródtytuł|p["CzyTakCiąg"]}}{{Code|p["CzyTakCiąg"]}} == W tej funkcji parametry mogą być zbierane w osobnych parametrach lub w jednej tablicy albo ta funkcja może być uruchomiona w ramce. Funkcja do swojego działania wykorzystuje do tego {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}} i {{Code|{{sr|#p.CzyTak|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["CzyTakCiąg"]=function(...)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = zmienna | _1 = Funkcja - typ: {{Code|function}}, lub inna wartość sprawdzana, np. {{Code|string}}, czy odpowiada wartości prawdziwej. | 2 = parametry | _2 = Parametry funkcji sprawdzanej, gdy zmienna: {{Code|zmienna}}, jest funkcją. }} === Funkcja uruchamiania w ramce wiki kodu === ==== Normalne znaki z odstępami ==== Jeżeli ta funkcja jest uruchomiona w ramce, np. w postaci: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTakCiąg| Wartość |wyspecjalizowana=tak}} </syntaxhighlight> ==== Ciąg składający się z samych odstępów - wartość zwracana ==== To w tym przypadku funkcja zwraca wartość {{Code|tak}}, tak jak funkcja {{Code|{{sr|#p.CzyTak|p=Parametry}}}}, a w przypadku: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTakCiąg| |wyspecjalizowana=tak}} </syntaxhighlight> To w tym przypadku funkcja zwraca wartość równą ciągowi pustemu, mimo że funkcja {{Code|{{sr|#p.CzyTak|p=Parametry}}}} zwróci wartość {{Code|tak}}. === Funkcja uruchamiania w postaci funkcji bibliotecznej === ==== Ciąg z treściwymi znakami z odstępami ==== Podobnie jest w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, czyli: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul["CzyTakCiąg"](" Wartość "); </syntaxhighlight> Ta funkcja zwróci wartość {{Code|tak}}. ==== Brak takich znaków, tylko same odstępy ==== A teraz inny przykład: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul["CzyTakCiąg"](" "); </syntaxhighlight> Ta funkcja zwróci wartość {{Code|nil}}. == {{Śródtytuł|p.CzyTak}}{{Code|p.CzyTak}} == W tej funkcji parametry mogą być zbierane w osobnych parametrach lub w jednej tablicy albo ta funkcja może być uruchomiona w ramce. Funkcja do swojego działania nie wykorzystuje do tego {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}}, tak jak to robi {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.CzyTak=function(...)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|1}} lub {{Code|zmienna}} | _1 = Sprawdzana zmienna, może być to funkcją. | 2 = {{Code|2}} lub {{Code|parametry}} | _2 = Parametry funkcji, może być to tablica parametrów, jest ona wykorzystywana, gdy powyższy element jest funkcją. }} === Funkcja działająca w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} === ==== Ciąg niepusty z treściwymi znakami z odstępami ==== Jeżeli ta funkcja jest uruchomiona w ramce, np. w postaci: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTak| Wartość |wyspecjalizowana=tak}} </syntaxhighlight> To w tym przypadku funkcja zwraca wartość {{Code|tak}}, tak jak funkcja {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}} ==== Ciąg z samych znaków odstępów ==== A w przypadku: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTak| |wyspecjalizowana=tak}} </syntaxhighlight> To w tym przypadku funkcja zwraca wartość równą ciągowi {{Code|tak}}, mimo że funkcja {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}} zwróci wartość równoważną ciągowi pustemu. ==== Ciąg pusty - jego rewidowanie ==== <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTak||wyspecjalizowana=tak}} </syntaxhighlight> Ta funkcja uruchomiona w ramce w wikikodzie zwraca wartość równą ciągowi pustemu, tak samo, jak funkcja {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}. === W postaci funkcji bibliotecznej - nie ramki === ==== Treściwe znaki z odstępami ==== Podobnie jest w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, czyli: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul.CzyTak(" Wartość "); </syntaxhighlight> Ta funkcja zwróci wartość {{Code|tak}}. ==== Same odstępy ==== A teraz inny przykład: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul.CzyTak(" "); </syntaxhighlight> Ta funkcja zwróci wartość {{Code|tak}}, niezależnie, czy tym ciągiem jest szereg składający się z samych znaków odstępów. ==== Ciąg pusty ==== A teraz inny przykład: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul.CzyTak(""); </syntaxhighlight> Ta funkcja wtedy zwróci wartość równą {{Code|nil}} w kodzie {{lpg|Lua}} w {{lpg|Lua|Scribunto}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> nyf1sqthea3qtqfj89r9x2cu242uxc0 555773 555772 2026-09-12T00:45:21Z Persino 2851 /* p["CzyTakCiąg"] */ 555773 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == Funkcje prawdy i fałszu - ogólne przedstawienie == W funkcjach: {{LinkŚródtytuł|p["CzyTakCiąg"]}} i {{LinkŚródtytuł|p.CzyTak}}, uruchomione w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, muszą posiadać dodatkowo parametr {{Parametr|wyspecjalizowana|tak}}, aby dało się w je wsadzić skutecznie parametry do samej tej ramki dziecka, a nie używać parametry szablonu rodzica. === Wzajemna zależność === W tej pierwszej funkcji jest wykorzystywana ta druga, w której w tej pierwszej w parametrze pierwszym, w przypadku łańcuchów znakowych wykorzystywana jest funkcja do usuwania dolnych myślników i odstępów na końcach, a potem jest uruchamiana ta druga. === Uzyskiwane wyniki w zależności od sprawdzanego parametru - różne typy wartości pierwszej zmiennej === ==== Parametr typu {{Code|string}} ==== Te funkcje rozważane tutaj powiedziane powyżej w wikikodzie w szablonie rodzicu, czy w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, służą do sprawdzenia, czy wartość, czy jest nierówna ciągowi uzyskanemu pustemu, w przypadku tej pierwszej funkcji, a w przypadku drugiej, czy nie jest ciągiem pustym. ==== Typu {{Code|number}} ==== Jeżeli jest to liczba, to czy jest nie równa {{Code|0}}. ==== Typu {{Code|boolean}} ==== Czy wartością logiczną jest jako {{Code|true}}. ==== Typu {{Code|table}} ==== Dla tabel, czy jest niepustą tabelą. ==== Typu {{Code|function}} ==== Ale za to w przypadku funkcji, czy funkcja o nazwie {{Code|zmienna}} z parametrami {{Code|parametry}}, czy zwraca wartość odpowiadająca {{Code|true}}, === Zwracane wartości === Jeżeli funkcja zwróci wartość odpowiadająca prawdziwej, to ta funkcja zwróci znak {{Code|tak}}, w przeciwnym wypadku w wikikodzie zwraca wartość pustą, a w kodzie, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, wartość {{Code|nil}}. == {{Śródtytuł|CzyTakSilnik}}{{Code|CzyTakSilnik}} == Funkcja pomocnicza służąca do liczenia wartości logicznej {{Code|tak}} lub {{Code|nil}} parametrów ramki, w wikikodzie, funkcji {{lpg|lua}} w {{lpr|Lua|Scribunto}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function CzyTakSilnik(args,funkcja)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|args}} | _1 = Tablica elementów z pierwszym elementem do sprawdzenia, z drugim jako nazwa modułu z funkcjami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w takim przypadku ten pierwszy element jest nazwą funkcji, który w połączeniu z nazwą modułu daje referencję do funkcji. | 2 = {{Code|funkcja}} | _2 = Funkcja, za pomocą której sprawdzamy logiczność pierwszego elementu tej tablicy. }} === Możliwe wartości drugiego parametru - funkcji === Możliwymi wartościami funkcji parametru {{Code|funkcja}} jest {{Code|CzyTak}} lub {{Code|CzyTakCiąg}} (ta funkcja wykorzystuje funkcję {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}} do swojego argumentu, który służy do sprawdzania, jaki spełnia warunek). === Sprawdzanie prawdziwości funkcji z jej zrzucanej, wartości === Gdy istnieje parametr tablicy {{Code|args}} funkcji o parametrze nienazwanym {{Code|args[2]}}, który jest nazwą modułu z funkcjami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a samą funkcją jest {{Code|args[1]}}, to tak utworzona funkcja jest zmienną {{Code|parametr}}, a jeżeli jej nie ma, to ona przyjmuje wartość {{Code|args[1]}}, a gdy jednak istnieje ten drugi element, to na podstawie którego zbierane są argumenty ramki nazwane jak nazwane, tzn. klucze i ich wartości przypisuje, a w przypadku parametrów nienazwanych (nie są zbierane elementy w tej tablicy o kluczach o wartości: {{Code|1}} i {{Code|2}}), a te inne klucze są pomniejszane o dwa, w ten sposób jest utworzona tabela {{Code|argsfun}}. === Brak składowej drugiej tablicy, co świadczy, że nie sprawdzamy funkcji, tylko co innego === ==== Rewidowana jest liczba lub ciąg znaków liczba ==== Gdy nie ma składowej drugiej tablicy, tzn. {{Code|args[2]}}, to wtedy funkcja sprawdza, czy {{Code|args[1]}} to jest liczba w łańcuchu znakowym, lub bezpośrednio liczba. ==== Typ - ciag znaków ==== Jeżeli nie da się jej przetransformować na liczbę, to sprawdza, czy typem tej zmiennej jest {{Code|string}} (czy typem jest szereg). Po działaniu funkcją: {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}}, jeśli ma wtedy wartość: {{Code|"true"}}, wtedy ta rozważana na samym początku zmienna przyjmuje wartość {{Code|true}}, {{Code|"false"}}, wtedy {{Code|false}}, {{Code|"nil"}}, wtedy {{Code|nil}}. A jeżeli ta zmienna żadnej tej wartości nie przyjmuje z tych wartości, to wtedy jest transformowana na liczbę, jeżeli da się tą operację dokonać. === Walidacja przygotowanych parametrów podaną funkcją === Na samym końcu jest liczona wartość logiczna z przygotowanymi parametrami, według jednej z dwóch specjalnie przygotowanych funkcji. ==== Przypadek uruchamiania funkcji w kodzie ==== W postaci wywołania ogólnego: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); return (parametry_modul[funkcja]{[1]=parametr,[2]=argsfun,})and "tak" or nil; </syntaxhighlight> Gdzie {{Code|funkcja}}, to {{Code|CzyTak}} lub {{Code|CzyTakCiąg}}, a {{Code|parametr}}, to funkcja w jakimś module lub inna wartość, a {{Code|argsfun}}, to tabela argumentów ramki, dziecka, w kodzie {{lpg|Lua}} w {{lpr|Scribunto}}, w wikikodzie w szablonie rodzicu. Gdy ta funkcja zwróci wartość logiczną odpowiadającą {{Code|true}}, to wtedy zwraca {{Code|tak}}, w przeciwnym wypadku {{Code|nil}}. ==== Procedura zwracając wartość z ramki wiki kodu ==== Ta funkcja jest wykorzystywana, gdy jest uruchamiana w ramce, gdy mamy parametry ramki: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTakCiąg| Wartość |nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wyspecjalizowana=tak}} </syntaxhighlight> Podobnie jest z funkcją {{Code|{{sr|#p.CzyTak|p=Parametry}}}}. A jak jest tworzony parametr zmiennej z powyższych wywołań, to jest powiedziane powyżej. === Atrapa funkcji parametrów ramki rodzica (szablonu) === Równie dobrze możemy zefiniować atrapę funkcji {{Code|frame.getParent}}, wtedy: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul["CzyTakCiąg"]{args={ [1]=" Wartość ", [2]="", ["nazwa1"]="wartość1", ["nazwa2"]="wartość2", [3]="wartość3", [4]="wartość4", ["wyspecjalizowana"]="tak", }, getParent=function()end, }; </syntaxhighlight> Czasami tak potrzeba robić, by ominąc zabezpieczenia pewnych funkcji, nawet tutaj. == {{Śródtytuł|p["CzyTakCiąg"]}}{{Code|p["CzyTakCiąg"]}} == W tej funkcji parametry mogą być zbierane w osobnych parametrach lub w jednej tablicy albo ta funkcja może być uruchomiona w ramce. Funkcja do swojego działania wykorzystuje do tego {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}} i {{Code|{{sr|#p.CzyTak|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["CzyTakCiąg"]=function(...)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = zmienna | _1 = Funkcja - typ: {{Code|function}}, lub inna wartość sprawdzana, np. {{Code|string}}, czy odpowiada wartości prawdziwej. | 2 = parametry | _2 = Parametry funkcji sprawdzanej, gdy zmienna: {{Code|zmienna}}, jest funkcją. }} Funkcja, gdy jest uruchamiania w ramce, to wtedy elementem sprawdzany jest tablica, a ponieważ ma ona w sobie zdefiniowaną funkcję: {{LzLua|frame:getParent}}, to wtedy jest uruchamiania funkcja: {{LinkŚródtytuł|CzyTakSilnik}}. === Funkcja uruchamiania w ramce wiki kodu === ==== Normalne znaki z odstępami ==== Jeżeli ta funkcja jest uruchomiona w ramce, np. w postaci: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTakCiąg| Wartość |wyspecjalizowana=tak}} </syntaxhighlight> ==== Ciąg składający się z samych odstępów - wartość zwracana ==== To w tym przypadku funkcja zwraca wartość {{Code|tak}}, tak jak funkcja {{Code|{{sr|#p.CzyTak|p=Parametry}}}}, a w przypadku: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTakCiąg| |wyspecjalizowana=tak}} </syntaxhighlight> To w tym przypadku funkcja zwraca wartość równą ciągowi pustemu, mimo że funkcja {{Code|{{sr|#p.CzyTak|p=Parametry}}}} zwróci wartość {{Code|tak}}. === Funkcja uruchamiania w postaci funkcji bibliotecznej === ==== Ciąg z treściwymi znakami z odstępami ==== Podobnie jest w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, czyli: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul["CzyTakCiąg"](" Wartość "); </syntaxhighlight> Ta funkcja zwróci wartość {{Code|tak}}. ==== Brak takich znaków, tylko same odstępy ==== A teraz inny przykład: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul["CzyTakCiąg"](" "); </syntaxhighlight> Ta funkcja zwróci wartość {{Code|nil}}. == {{Śródtytuł|p.CzyTak}}{{Code|p.CzyTak}} == W tej funkcji parametry mogą być zbierane w osobnych parametrach lub w jednej tablicy albo ta funkcja może być uruchomiona w ramce. Funkcja do swojego działania nie wykorzystuje do tego {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}}, tak jak to robi {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.CzyTak=function(...)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|1}} lub {{Code|zmienna}} | _1 = Sprawdzana zmienna, może być to funkcją. | 2 = {{Code|2}} lub {{Code|parametry}} | _2 = Parametry funkcji, może być to tablica parametrów, jest ona wykorzystywana, gdy powyższy element jest funkcją. }} === Funkcja działająca w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} === ==== Ciąg niepusty z treściwymi znakami z odstępami ==== Jeżeli ta funkcja jest uruchomiona w ramce, np. w postaci: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTak| Wartość |wyspecjalizowana=tak}} </syntaxhighlight> To w tym przypadku funkcja zwraca wartość {{Code|tak}}, tak jak funkcja {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}} ==== Ciąg z samych znaków odstępów ==== A w przypadku: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTak| |wyspecjalizowana=tak}} </syntaxhighlight> To w tym przypadku funkcja zwraca wartość równą ciągowi {{Code|tak}}, mimo że funkcja {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}} zwróci wartość równoważną ciągowi pustemu. ==== Ciąg pusty - jego rewidowanie ==== <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTak||wyspecjalizowana=tak}} </syntaxhighlight> Ta funkcja uruchomiona w ramce w wikikodzie zwraca wartość równą ciągowi pustemu, tak samo, jak funkcja {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}. === W postaci funkcji bibliotecznej - nie ramki === ==== Treściwe znaki z odstępami ==== Podobnie jest w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, czyli: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul.CzyTak(" Wartość "); </syntaxhighlight> Ta funkcja zwróci wartość {{Code|tak}}. ==== Same odstępy ==== A teraz inny przykład: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul.CzyTak(" "); </syntaxhighlight> Ta funkcja zwróci wartość {{Code|tak}}, niezależnie, czy tym ciągiem jest szereg składający się z samych znaków odstępów. ==== Ciąg pusty ==== A teraz inny przykład: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul.CzyTak(""); </syntaxhighlight> Ta funkcja wtedy zwróci wartość równą {{Code|nil}} w kodzie {{lpg|Lua}} w {{lpg|Lua|Scribunto}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 9jgr3k0hrwfggyopf5c724wyucktana 555774 555773 2026-09-12T00:46:36Z Persino 2851 /* p["CzyTakCiąg"] */ 555774 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == Funkcje prawdy i fałszu - ogólne przedstawienie == W funkcjach: {{LinkŚródtytuł|p["CzyTakCiąg"]}} i {{LinkŚródtytuł|p.CzyTak}}, uruchomione w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, muszą posiadać dodatkowo parametr {{Parametr|wyspecjalizowana|tak}}, aby dało się w je wsadzić skutecznie parametry do samej tej ramki dziecka, a nie używać parametry szablonu rodzica. === Wzajemna zależność === W tej pierwszej funkcji jest wykorzystywana ta druga, w której w tej pierwszej w parametrze pierwszym, w przypadku łańcuchów znakowych wykorzystywana jest funkcja do usuwania dolnych myślników i odstępów na końcach, a potem jest uruchamiana ta druga. === Uzyskiwane wyniki w zależności od sprawdzanego parametru - różne typy wartości pierwszej zmiennej === ==== Parametr typu {{Code|string}} ==== Te funkcje rozważane tutaj powiedziane powyżej w wikikodzie w szablonie rodzicu, czy w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, służą do sprawdzenia, czy wartość, czy jest nierówna ciągowi uzyskanemu pustemu, w przypadku tej pierwszej funkcji, a w przypadku drugiej, czy nie jest ciągiem pustym. ==== Typu {{Code|number}} ==== Jeżeli jest to liczba, to czy jest nie równa {{Code|0}}. ==== Typu {{Code|boolean}} ==== Czy wartością logiczną jest jako {{Code|true}}. ==== Typu {{Code|table}} ==== Dla tabel, czy jest niepustą tabelą. ==== Typu {{Code|function}} ==== Ale za to w przypadku funkcji, czy funkcja o nazwie {{Code|zmienna}} z parametrami {{Code|parametry}}, czy zwraca wartość odpowiadająca {{Code|true}}, === Zwracane wartości === Jeżeli funkcja zwróci wartość odpowiadająca prawdziwej, to ta funkcja zwróci znak {{Code|tak}}, w przeciwnym wypadku w wikikodzie zwraca wartość pustą, a w kodzie, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, wartość {{Code|nil}}. == {{Śródtytuł|CzyTakSilnik}}{{Code|CzyTakSilnik}} == Funkcja pomocnicza służąca do liczenia wartości logicznej {{Code|tak}} lub {{Code|nil}} parametrów ramki, w wikikodzie, funkcji {{lpg|lua}} w {{lpr|Lua|Scribunto}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function CzyTakSilnik(args,funkcja)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|args}} | _1 = Tablica elementów z pierwszym elementem do sprawdzenia, z drugim jako nazwa modułu z funkcjami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w takim przypadku ten pierwszy element jest nazwą funkcji, który w połączeniu z nazwą modułu daje referencję do funkcji. | 2 = {{Code|funkcja}} | _2 = Funkcja, za pomocą której sprawdzamy logiczność pierwszego elementu tej tablicy. }} === Możliwe wartości drugiego parametru - funkcji === Możliwymi wartościami funkcji parametru {{Code|funkcja}} jest {{Code|CzyTak}} lub {{Code|CzyTakCiąg}} (ta funkcja wykorzystuje funkcję {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}} do swojego argumentu, który służy do sprawdzania, jaki spełnia warunek). === Sprawdzanie prawdziwości funkcji z jej zrzucanej, wartości === Gdy istnieje parametr tablicy {{Code|args}} funkcji o parametrze nienazwanym {{Code|args[2]}}, który jest nazwą modułu z funkcjami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a samą funkcją jest {{Code|args[1]}}, to tak utworzona funkcja jest zmienną {{Code|parametr}}, a jeżeli jej nie ma, to ona przyjmuje wartość {{Code|args[1]}}, a gdy jednak istnieje ten drugi element, to na podstawie którego zbierane są argumenty ramki nazwane jak nazwane, tzn. klucze i ich wartości przypisuje, a w przypadku parametrów nienazwanych (nie są zbierane elementy w tej tablicy o kluczach o wartości: {{Code|1}} i {{Code|2}}), a te inne klucze są pomniejszane o dwa, w ten sposób jest utworzona tabela {{Code|argsfun}}. === Brak składowej drugiej tablicy, co świadczy, że nie sprawdzamy funkcji, tylko co innego === ==== Rewidowana jest liczba lub ciąg znaków liczba ==== Gdy nie ma składowej drugiej tablicy, tzn. {{Code|args[2]}}, to wtedy funkcja sprawdza, czy {{Code|args[1]}} to jest liczba w łańcuchu znakowym, lub bezpośrednio liczba. ==== Typ - ciag znaków ==== Jeżeli nie da się jej przetransformować na liczbę, to sprawdza, czy typem tej zmiennej jest {{Code|string}} (czy typem jest szereg). Po działaniu funkcją: {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}}, jeśli ma wtedy wartość: {{Code|"true"}}, wtedy ta rozważana na samym początku zmienna przyjmuje wartość {{Code|true}}, {{Code|"false"}}, wtedy {{Code|false}}, {{Code|"nil"}}, wtedy {{Code|nil}}. A jeżeli ta zmienna żadnej tej wartości nie przyjmuje z tych wartości, to wtedy jest transformowana na liczbę, jeżeli da się tą operację dokonać. === Walidacja przygotowanych parametrów podaną funkcją === Na samym końcu jest liczona wartość logiczna z przygotowanymi parametrami, według jednej z dwóch specjalnie przygotowanych funkcji. ==== Przypadek uruchamiania funkcji w kodzie ==== W postaci wywołania ogólnego: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); return (parametry_modul[funkcja]{[1]=parametr,[2]=argsfun,})and "tak" or nil; </syntaxhighlight> Gdzie {{Code|funkcja}}, to {{Code|CzyTak}} lub {{Code|CzyTakCiąg}}, a {{Code|parametr}}, to funkcja w jakimś module lub inna wartość, a {{Code|argsfun}}, to tabela argumentów ramki, dziecka, w kodzie {{lpg|Lua}} w {{lpr|Scribunto}}, w wikikodzie w szablonie rodzicu. Gdy ta funkcja zwróci wartość logiczną odpowiadającą {{Code|true}}, to wtedy zwraca {{Code|tak}}, w przeciwnym wypadku {{Code|nil}}. ==== Procedura zwracając wartość z ramki wiki kodu ==== Ta funkcja jest wykorzystywana, gdy jest uruchamiana w ramce, gdy mamy parametry ramki: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTakCiąg| Wartość |nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wyspecjalizowana=tak}} </syntaxhighlight> Podobnie jest z funkcją {{Code|{{sr|#p.CzyTak|p=Parametry}}}}. A jak jest tworzony parametr zmiennej z powyższych wywołań, to jest powiedziane powyżej. === Atrapa funkcji parametrów ramki rodzica (szablonu) === Równie dobrze możemy zefiniować atrapę funkcji {{Code|frame.getParent}}, wtedy: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul["CzyTakCiąg"]{args={ [1]=" Wartość ", [2]="", ["nazwa1"]="wartość1", ["nazwa2"]="wartość2", [3]="wartość3", [4]="wartość4", ["wyspecjalizowana"]="tak", }, getParent=function()end, }; </syntaxhighlight> Czasami tak potrzeba robić, by ominąc zabezpieczenia pewnych funkcji, nawet tutaj. == {{Śródtytuł|p["CzyTakCiąg"]}}{{Code|p["CzyTakCiąg"]}} == W tej funkcji parametry mogą być zbierane w osobnych parametrach lub w jednej tablicy albo ta funkcja może być uruchomiona w ramce. Funkcja do swojego działania wykorzystuje do tego {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}} i {{Code|{{sr|#p.CzyTak|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["CzyTakCiąg"]=function(...)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = zmienna | _1 = Funkcja - typ: {{Code|function}}, lub inna wartość sprawdzana, np. {{Code|string}}, czy odpowiada wartości prawdziwej. | 2 = parametry | _2 = Parametry funkcji sprawdzanej, gdy zmienna: {{Code|zmienna}}, jest funkcją. }} Funkcja, gdy jest uruchamiania w ramce, to wtedy elementem sprawdzany jest tablica ramki tablicy transportu modułu, a ponieważ ma ona w sobie zdefiniowaną funkcję: {{LzLua|frame:getParent}}, to wtedy jest uruchamiania funkcja: {{LinkŚródtytuł|CzyTakSilnik}}. === Funkcja uruchamiania w ramce wiki kodu === ==== Normalne znaki z odstępami ==== Jeżeli ta funkcja jest uruchomiona w ramce, np. w postaci: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTakCiąg| Wartość |wyspecjalizowana=tak}} </syntaxhighlight> ==== Ciąg składający się z samych odstępów - wartość zwracana ==== To w tym przypadku funkcja zwraca wartość {{Code|tak}}, tak jak funkcja {{Code|{{sr|#p.CzyTak|p=Parametry}}}}, a w przypadku: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTakCiąg| |wyspecjalizowana=tak}} </syntaxhighlight> To w tym przypadku funkcja zwraca wartość równą ciągowi pustemu, mimo że funkcja {{Code|{{sr|#p.CzyTak|p=Parametry}}}} zwróci wartość {{Code|tak}}. === Funkcja uruchamiania w postaci funkcji bibliotecznej === ==== Ciąg z treściwymi znakami z odstępami ==== Podobnie jest w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, czyli: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul["CzyTakCiąg"](" Wartość "); </syntaxhighlight> Ta funkcja zwróci wartość {{Code|tak}}. ==== Brak takich znaków, tylko same odstępy ==== A teraz inny przykład: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul["CzyTakCiąg"](" "); </syntaxhighlight> Ta funkcja zwróci wartość {{Code|nil}}. == {{Śródtytuł|p.CzyTak}}{{Code|p.CzyTak}} == W tej funkcji parametry mogą być zbierane w osobnych parametrach lub w jednej tablicy albo ta funkcja może być uruchomiona w ramce. Funkcja do swojego działania nie wykorzystuje do tego {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}}, tak jak to robi {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.CzyTak=function(...)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|1}} lub {{Code|zmienna}} | _1 = Sprawdzana zmienna, może być to funkcją. | 2 = {{Code|2}} lub {{Code|parametry}} | _2 = Parametry funkcji, może być to tablica parametrów, jest ona wykorzystywana, gdy powyższy element jest funkcją. }} === Funkcja działająca w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} === ==== Ciąg niepusty z treściwymi znakami z odstępami ==== Jeżeli ta funkcja jest uruchomiona w ramce, np. w postaci: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTak| Wartość |wyspecjalizowana=tak}} </syntaxhighlight> To w tym przypadku funkcja zwraca wartość {{Code|tak}}, tak jak funkcja {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}} ==== Ciąg z samych znaków odstępów ==== A w przypadku: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTak| |wyspecjalizowana=tak}} </syntaxhighlight> To w tym przypadku funkcja zwraca wartość równą ciągowi {{Code|tak}}, mimo że funkcja {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}} zwróci wartość równoważną ciągowi pustemu. ==== Ciąg pusty - jego rewidowanie ==== <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTak||wyspecjalizowana=tak}} </syntaxhighlight> Ta funkcja uruchomiona w ramce w wikikodzie zwraca wartość równą ciągowi pustemu, tak samo, jak funkcja {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}. === W postaci funkcji bibliotecznej - nie ramki === ==== Treściwe znaki z odstępami ==== Podobnie jest w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, czyli: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul.CzyTak(" Wartość "); </syntaxhighlight> Ta funkcja zwróci wartość {{Code|tak}}. ==== Same odstępy ==== A teraz inny przykład: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul.CzyTak(" "); </syntaxhighlight> Ta funkcja zwróci wartość {{Code|tak}}, niezależnie, czy tym ciągiem jest szereg składający się z samych znaków odstępów. ==== Ciąg pusty ==== A teraz inny przykład: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul.CzyTak(""); </syntaxhighlight> Ta funkcja wtedy zwróci wartość równą {{Code|nil}} w kodzie {{lpg|Lua}} w {{lpg|Lua|Scribunto}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 6jql4sqw2cjc0i4qhnd7nukfqdil9uz 555775 555774 2026-09-12T00:49:07Z Persino 2851 /* p["CzyTakCiąg"] */ 555775 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == Funkcje prawdy i fałszu - ogólne przedstawienie == W funkcjach: {{LinkŚródtytuł|p["CzyTakCiąg"]}} i {{LinkŚródtytuł|p.CzyTak}}, uruchomione w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, muszą posiadać dodatkowo parametr {{Parametr|wyspecjalizowana|tak}}, aby dało się w je wsadzić skutecznie parametry do samej tej ramki dziecka, a nie używać parametry szablonu rodzica. === Wzajemna zależność === W tej pierwszej funkcji jest wykorzystywana ta druga, w której w tej pierwszej w parametrze pierwszym, w przypadku łańcuchów znakowych wykorzystywana jest funkcja do usuwania dolnych myślników i odstępów na końcach, a potem jest uruchamiana ta druga. === Uzyskiwane wyniki w zależności od sprawdzanego parametru - różne typy wartości pierwszej zmiennej === ==== Parametr typu {{Code|string}} ==== Te funkcje rozważane tutaj powiedziane powyżej w wikikodzie w szablonie rodzicu, czy w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, służą do sprawdzenia, czy wartość, czy jest nierówna ciągowi uzyskanemu pustemu, w przypadku tej pierwszej funkcji, a w przypadku drugiej, czy nie jest ciągiem pustym. ==== Typu {{Code|number}} ==== Jeżeli jest to liczba, to czy jest nie równa {{Code|0}}. ==== Typu {{Code|boolean}} ==== Czy wartością logiczną jest jako {{Code|true}}. ==== Typu {{Code|table}} ==== Dla tabel, czy jest niepustą tabelą. ==== Typu {{Code|function}} ==== Ale za to w przypadku funkcji, czy funkcja o nazwie {{Code|zmienna}} z parametrami {{Code|parametry}}, czy zwraca wartość odpowiadająca {{Code|true}}, === Zwracane wartości === Jeżeli funkcja zwróci wartość odpowiadająca prawdziwej, to ta funkcja zwróci znak {{Code|tak}}, w przeciwnym wypadku w wikikodzie zwraca wartość pustą, a w kodzie, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, wartość {{Code|nil}}. == {{Śródtytuł|CzyTakSilnik}}{{Code|CzyTakSilnik}} == Funkcja pomocnicza służąca do liczenia wartości logicznej {{Code|tak}} lub {{Code|nil}} parametrów ramki, w wikikodzie, funkcji {{lpg|lua}} w {{lpr|Lua|Scribunto}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function CzyTakSilnik(args,funkcja)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|args}} | _1 = Tablica elementów z pierwszym elementem do sprawdzenia, z drugim jako nazwa modułu z funkcjami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w takim przypadku ten pierwszy element jest nazwą funkcji, który w połączeniu z nazwą modułu daje referencję do funkcji. | 2 = {{Code|funkcja}} | _2 = Funkcja, za pomocą której sprawdzamy logiczność pierwszego elementu tej tablicy. }} === Możliwe wartości drugiego parametru - funkcji === Możliwymi wartościami funkcji parametru {{Code|funkcja}} jest {{Code|CzyTak}} lub {{Code|CzyTakCiąg}} (ta funkcja wykorzystuje funkcję {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}} do swojego argumentu, który służy do sprawdzania, jaki spełnia warunek). === Sprawdzanie prawdziwości funkcji z jej zrzucanej, wartości === Gdy istnieje parametr tablicy {{Code|args}} funkcji o parametrze nienazwanym {{Code|args[2]}}, który jest nazwą modułu z funkcjami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a samą funkcją jest {{Code|args[1]}}, to tak utworzona funkcja jest zmienną {{Code|parametr}}, a jeżeli jej nie ma, to ona przyjmuje wartość {{Code|args[1]}}, a gdy jednak istnieje ten drugi element, to na podstawie którego zbierane są argumenty ramki nazwane jak nazwane, tzn. klucze i ich wartości przypisuje, a w przypadku parametrów nienazwanych (nie są zbierane elementy w tej tablicy o kluczach o wartości: {{Code|1}} i {{Code|2}}), a te inne klucze są pomniejszane o dwa, w ten sposób jest utworzona tabela {{Code|argsfun}}. === Brak składowej drugiej tablicy, co świadczy, że nie sprawdzamy funkcji, tylko co innego === ==== Rewidowana jest liczba lub ciąg znaków liczba ==== Gdy nie ma składowej drugiej tablicy, tzn. {{Code|args[2]}}, to wtedy funkcja sprawdza, czy {{Code|args[1]}} to jest liczba w łańcuchu znakowym, lub bezpośrednio liczba. ==== Typ - ciag znaków ==== Jeżeli nie da się jej przetransformować na liczbę, to sprawdza, czy typem tej zmiennej jest {{Code|string}} (czy typem jest szereg). Po działaniu funkcją: {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}}, jeśli ma wtedy wartość: {{Code|"true"}}, wtedy ta rozważana na samym początku zmienna przyjmuje wartość {{Code|true}}, {{Code|"false"}}, wtedy {{Code|false}}, {{Code|"nil"}}, wtedy {{Code|nil}}. A jeżeli ta zmienna żadnej tej wartości nie przyjmuje z tych wartości, to wtedy jest transformowana na liczbę, jeżeli da się tą operację dokonać. === Walidacja przygotowanych parametrów podaną funkcją === Na samym końcu jest liczona wartość logiczna z przygotowanymi parametrami, według jednej z dwóch specjalnie przygotowanych funkcji. ==== Przypadek uruchamiania funkcji w kodzie ==== W postaci wywołania ogólnego: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); return (parametry_modul[funkcja]{[1]=parametr,[2]=argsfun,})and "tak" or nil; </syntaxhighlight> Gdzie {{Code|funkcja}}, to {{Code|CzyTak}} lub {{Code|CzyTakCiąg}}, a {{Code|parametr}}, to funkcja w jakimś module lub inna wartość, a {{Code|argsfun}}, to tabela argumentów ramki, dziecka, w kodzie {{lpg|Lua}} w {{lpr|Scribunto}}, w wikikodzie w szablonie rodzicu. Gdy ta funkcja zwróci wartość logiczną odpowiadającą {{Code|true}}, to wtedy zwraca {{Code|tak}}, w przeciwnym wypadku {{Code|nil}}. ==== Procedura zwracając wartość z ramki wiki kodu ==== Ta funkcja jest wykorzystywana, gdy jest uruchamiana w ramce, gdy mamy parametry ramki: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTakCiąg| Wartość |nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wyspecjalizowana=tak}} </syntaxhighlight> Podobnie jest z funkcją {{Code|{{sr|#p.CzyTak|p=Parametry}}}}. A jak jest tworzony parametr zmiennej z powyższych wywołań, to jest powiedziane powyżej. === Atrapa funkcji parametrów ramki rodzica (szablonu) === Równie dobrze możemy zefiniować atrapę funkcji {{Code|frame.getParent}}, wtedy: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul["CzyTakCiąg"]{args={ [1]=" Wartość ", [2]="", ["nazwa1"]="wartość1", ["nazwa2"]="wartość2", [3]="wartość3", [4]="wartość4", ["wyspecjalizowana"]="tak", }, getParent=function()end, }; </syntaxhighlight> Czasami tak potrzeba robić, by ominąc zabezpieczenia pewnych funkcji, nawet tutaj. == {{Śródtytuł|p["CzyTakCiąg"]}}{{Code|p["CzyTakCiąg"]}} == W tej funkcji parametry mogą być zbierane w osobnych parametrach lub w jednej tablicy albo ta funkcja może być uruchomiona w ramce. Funkcja do swojego działania wykorzystuje do tego {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}} i {{LinkŚródtytuł|p.CzyTak}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["CzyTakCiąg"]=function(...)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = zmienna | _1 = Funkcja - typ: {{Code|function}}, lub inna wartość sprawdzana, np. {{Code|string}}, czy odpowiada wartości prawdziwej. | 2 = parametry | _2 = Parametry funkcji sprawdzanej, gdy zmienna: {{Code|zmienna}}, jest funkcją. }} Funkcja, gdy jest uruchamiania w ramce, to wtedy elementem sprawdzany jest tablica ramki tablicy transportu modułu, a ponieważ ma ona w sobie zdefiniowaną funkcję: {{LzLua|frame:getParent}}, to wtedy jest uruchamiania funkcja: {{LinkŚródtytuł|CzyTakSilnik}}. === Funkcja uruchamiania w ramce wiki kodu === ==== Normalne znaki z odstępami ==== Jeżeli ta funkcja jest uruchomiona w ramce, np. w postaci: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTakCiąg| Wartość |wyspecjalizowana=tak}} </syntaxhighlight> ==== Ciąg składający się z samych odstępów - wartość zwracana ==== To w tym przypadku funkcja zwraca wartość {{Code|tak}}, tak jak funkcja {{Code|{{sr|#p.CzyTak|p=Parametry}}}}, a w przypadku: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTakCiąg| |wyspecjalizowana=tak}} </syntaxhighlight> To w tym przypadku funkcja zwraca wartość równą ciągowi pustemu, mimo że funkcja {{Code|{{sr|#p.CzyTak|p=Parametry}}}} zwróci wartość {{Code|tak}}. === Funkcja uruchamiania w postaci funkcji bibliotecznej === ==== Ciąg z treściwymi znakami z odstępami ==== Podobnie jest w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, czyli: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul["CzyTakCiąg"](" Wartość "); </syntaxhighlight> Ta funkcja zwróci wartość {{Code|tak}}. ==== Brak takich znaków, tylko same odstępy ==== A teraz inny przykład: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul["CzyTakCiąg"](" "); </syntaxhighlight> Ta funkcja zwróci wartość {{Code|nil}}. == {{Śródtytuł|p.CzyTak}}{{Code|p.CzyTak}} == W tej funkcji parametry mogą być zbierane w osobnych parametrach lub w jednej tablicy albo ta funkcja może być uruchomiona w ramce. Funkcja do swojego działania nie wykorzystuje do tego {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}}, tak jak to robi {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.CzyTak=function(...)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|1}} lub {{Code|zmienna}} | _1 = Sprawdzana zmienna, może być to funkcją. | 2 = {{Code|2}} lub {{Code|parametry}} | _2 = Parametry funkcji, może być to tablica parametrów, jest ona wykorzystywana, gdy powyższy element jest funkcją. }} === Funkcja działająca w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} === ==== Ciąg niepusty z treściwymi znakami z odstępami ==== Jeżeli ta funkcja jest uruchomiona w ramce, np. w postaci: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTak| Wartość |wyspecjalizowana=tak}} </syntaxhighlight> To w tym przypadku funkcja zwraca wartość {{Code|tak}}, tak jak funkcja {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}} ==== Ciąg z samych znaków odstępów ==== A w przypadku: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTak| |wyspecjalizowana=tak}} </syntaxhighlight> To w tym przypadku funkcja zwraca wartość równą ciągowi {{Code|tak}}, mimo że funkcja {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}} zwróci wartość równoważną ciągowi pustemu. ==== Ciąg pusty - jego rewidowanie ==== <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTak||wyspecjalizowana=tak}} </syntaxhighlight> Ta funkcja uruchomiona w ramce w wikikodzie zwraca wartość równą ciągowi pustemu, tak samo, jak funkcja {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}. === W postaci funkcji bibliotecznej - nie ramki === ==== Treściwe znaki z odstępami ==== Podobnie jest w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, czyli: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul.CzyTak(" Wartość "); </syntaxhighlight> Ta funkcja zwróci wartość {{Code|tak}}. ==== Same odstępy ==== A teraz inny przykład: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul.CzyTak(" "); </syntaxhighlight> Ta funkcja zwróci wartość {{Code|tak}}, niezależnie, czy tym ciągiem jest szereg składający się z samych znaków odstępów. ==== Ciąg pusty ==== A teraz inny przykład: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul.CzyTak(""); </syntaxhighlight> Ta funkcja wtedy zwróci wartość równą {{Code|nil}} w kodzie {{lpg|Lua}} w {{lpg|Lua|Scribunto}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 7bb7m9g7466b2atgbw6wapotsazvfll 555776 555775 2026-09-12T00:51:45Z Persino 2851 /* Ciąg składający się z samych odstępów - wartość zwracana */ 555776 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == Funkcje prawdy i fałszu - ogólne przedstawienie == W funkcjach: {{LinkŚródtytuł|p["CzyTakCiąg"]}} i {{LinkŚródtytuł|p.CzyTak}}, uruchomione w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, muszą posiadać dodatkowo parametr {{Parametr|wyspecjalizowana|tak}}, aby dało się w je wsadzić skutecznie parametry do samej tej ramki dziecka, a nie używać parametry szablonu rodzica. === Wzajemna zależność === W tej pierwszej funkcji jest wykorzystywana ta druga, w której w tej pierwszej w parametrze pierwszym, w przypadku łańcuchów znakowych wykorzystywana jest funkcja do usuwania dolnych myślników i odstępów na końcach, a potem jest uruchamiana ta druga. === Uzyskiwane wyniki w zależności od sprawdzanego parametru - różne typy wartości pierwszej zmiennej === ==== Parametr typu {{Code|string}} ==== Te funkcje rozważane tutaj powiedziane powyżej w wikikodzie w szablonie rodzicu, czy w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, służą do sprawdzenia, czy wartość, czy jest nierówna ciągowi uzyskanemu pustemu, w przypadku tej pierwszej funkcji, a w przypadku drugiej, czy nie jest ciągiem pustym. ==== Typu {{Code|number}} ==== Jeżeli jest to liczba, to czy jest nie równa {{Code|0}}. ==== Typu {{Code|boolean}} ==== Czy wartością logiczną jest jako {{Code|true}}. ==== Typu {{Code|table}} ==== Dla tabel, czy jest niepustą tabelą. ==== Typu {{Code|function}} ==== Ale za to w przypadku funkcji, czy funkcja o nazwie {{Code|zmienna}} z parametrami {{Code|parametry}}, czy zwraca wartość odpowiadająca {{Code|true}}, === Zwracane wartości === Jeżeli funkcja zwróci wartość odpowiadająca prawdziwej, to ta funkcja zwróci znak {{Code|tak}}, w przeciwnym wypadku w wikikodzie zwraca wartość pustą, a w kodzie, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, wartość {{Code|nil}}. == {{Śródtytuł|CzyTakSilnik}}{{Code|CzyTakSilnik}} == Funkcja pomocnicza służąca do liczenia wartości logicznej {{Code|tak}} lub {{Code|nil}} parametrów ramki, w wikikodzie, funkcji {{lpg|lua}} w {{lpr|Lua|Scribunto}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function CzyTakSilnik(args,funkcja)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|args}} | _1 = Tablica elementów z pierwszym elementem do sprawdzenia, z drugim jako nazwa modułu z funkcjami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w takim przypadku ten pierwszy element jest nazwą funkcji, który w połączeniu z nazwą modułu daje referencję do funkcji. | 2 = {{Code|funkcja}} | _2 = Funkcja, za pomocą której sprawdzamy logiczność pierwszego elementu tej tablicy. }} === Możliwe wartości drugiego parametru - funkcji === Możliwymi wartościami funkcji parametru {{Code|funkcja}} jest {{Code|CzyTak}} lub {{Code|CzyTakCiąg}} (ta funkcja wykorzystuje funkcję {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}} do swojego argumentu, który służy do sprawdzania, jaki spełnia warunek). === Sprawdzanie prawdziwości funkcji z jej zrzucanej, wartości === Gdy istnieje parametr tablicy {{Code|args}} funkcji o parametrze nienazwanym {{Code|args[2]}}, który jest nazwą modułu z funkcjami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a samą funkcją jest {{Code|args[1]}}, to tak utworzona funkcja jest zmienną {{Code|parametr}}, a jeżeli jej nie ma, to ona przyjmuje wartość {{Code|args[1]}}, a gdy jednak istnieje ten drugi element, to na podstawie którego zbierane są argumenty ramki nazwane jak nazwane, tzn. klucze i ich wartości przypisuje, a w przypadku parametrów nienazwanych (nie są zbierane elementy w tej tablicy o kluczach o wartości: {{Code|1}} i {{Code|2}}), a te inne klucze są pomniejszane o dwa, w ten sposób jest utworzona tabela {{Code|argsfun}}. === Brak składowej drugiej tablicy, co świadczy, że nie sprawdzamy funkcji, tylko co innego === ==== Rewidowana jest liczba lub ciąg znaków liczba ==== Gdy nie ma składowej drugiej tablicy, tzn. {{Code|args[2]}}, to wtedy funkcja sprawdza, czy {{Code|args[1]}} to jest liczba w łańcuchu znakowym, lub bezpośrednio liczba. ==== Typ - ciag znaków ==== Jeżeli nie da się jej przetransformować na liczbę, to sprawdza, czy typem tej zmiennej jest {{Code|string}} (czy typem jest szereg). Po działaniu funkcją: {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}}, jeśli ma wtedy wartość: {{Code|"true"}}, wtedy ta rozważana na samym początku zmienna przyjmuje wartość {{Code|true}}, {{Code|"false"}}, wtedy {{Code|false}}, {{Code|"nil"}}, wtedy {{Code|nil}}. A jeżeli ta zmienna żadnej tej wartości nie przyjmuje z tych wartości, to wtedy jest transformowana na liczbę, jeżeli da się tą operację dokonać. === Walidacja przygotowanych parametrów podaną funkcją === Na samym końcu jest liczona wartość logiczna z przygotowanymi parametrami, według jednej z dwóch specjalnie przygotowanych funkcji. ==== Przypadek uruchamiania funkcji w kodzie ==== W postaci wywołania ogólnego: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); return (parametry_modul[funkcja]{[1]=parametr,[2]=argsfun,})and "tak" or nil; </syntaxhighlight> Gdzie {{Code|funkcja}}, to {{Code|CzyTak}} lub {{Code|CzyTakCiąg}}, a {{Code|parametr}}, to funkcja w jakimś module lub inna wartość, a {{Code|argsfun}}, to tabela argumentów ramki, dziecka, w kodzie {{lpg|Lua}} w {{lpr|Scribunto}}, w wikikodzie w szablonie rodzicu. Gdy ta funkcja zwróci wartość logiczną odpowiadającą {{Code|true}}, to wtedy zwraca {{Code|tak}}, w przeciwnym wypadku {{Code|nil}}. ==== Procedura zwracając wartość z ramki wiki kodu ==== Ta funkcja jest wykorzystywana, gdy jest uruchamiana w ramce, gdy mamy parametry ramki: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTakCiąg| Wartość |nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wyspecjalizowana=tak}} </syntaxhighlight> Podobnie jest z funkcją {{Code|{{sr|#p.CzyTak|p=Parametry}}}}. A jak jest tworzony parametr zmiennej z powyższych wywołań, to jest powiedziane powyżej. === Atrapa funkcji parametrów ramki rodzica (szablonu) === Równie dobrze możemy zefiniować atrapę funkcji {{Code|frame.getParent}}, wtedy: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul["CzyTakCiąg"]{args={ [1]=" Wartość ", [2]="", ["nazwa1"]="wartość1", ["nazwa2"]="wartość2", [3]="wartość3", [4]="wartość4", ["wyspecjalizowana"]="tak", }, getParent=function()end, }; </syntaxhighlight> Czasami tak potrzeba robić, by ominąc zabezpieczenia pewnych funkcji, nawet tutaj. == {{Śródtytuł|p["CzyTakCiąg"]}}{{Code|p["CzyTakCiąg"]}} == W tej funkcji parametry mogą być zbierane w osobnych parametrach lub w jednej tablicy albo ta funkcja może być uruchomiona w ramce. Funkcja do swojego działania wykorzystuje do tego {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}} i {{LinkŚródtytuł|p.CzyTak}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["CzyTakCiąg"]=function(...)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = zmienna | _1 = Funkcja - typ: {{Code|function}}, lub inna wartość sprawdzana, np. {{Code|string}}, czy odpowiada wartości prawdziwej. | 2 = parametry | _2 = Parametry funkcji sprawdzanej, gdy zmienna: {{Code|zmienna}}, jest funkcją. }} Funkcja, gdy jest uruchamiania w ramce, to wtedy elementem sprawdzany jest tablica ramki tablicy transportu modułu, a ponieważ ma ona w sobie zdefiniowaną funkcję: {{LzLua|frame:getParent}}, to wtedy jest uruchamiania funkcja: {{LinkŚródtytuł|CzyTakSilnik}}. === Funkcja uruchamiania w ramce wiki kodu === ==== Normalne znaki z odstępami ==== Jeżeli ta funkcja jest uruchomiona w ramce, np. w postaci: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTakCiąg| Wartość |wyspecjalizowana=tak}} </syntaxhighlight> ==== Ciąg składający się z samych odstępów - wartość zwracana ==== To w tym przypadku funkcja zwraca wartość {{Code|tak}}, tak jak funkcja {{LinkŚródtytuł|p.CzyTak}}, a w przypadku: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTakCiąg| |wyspecjalizowana=tak}} </syntaxhighlight> To w tym przypadku funkcja zwraca wartość równą ciągowi pustemu, mimo że funkcja {{LinkŚródtytuł|p.CzyTak}} zwróci wartość {{Code|tak}}. === Funkcja uruchamiania w postaci funkcji bibliotecznej === ==== Ciąg z treściwymi znakami z odstępami ==== Podobnie jest w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, czyli: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul["CzyTakCiąg"](" Wartość "); </syntaxhighlight> Ta funkcja zwróci wartość {{Code|tak}}. ==== Brak takich znaków, tylko same odstępy ==== A teraz inny przykład: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul["CzyTakCiąg"](" "); </syntaxhighlight> Ta funkcja zwróci wartość {{Code|nil}}. == {{Śródtytuł|p.CzyTak}}{{Code|p.CzyTak}} == W tej funkcji parametry mogą być zbierane w osobnych parametrach lub w jednej tablicy albo ta funkcja może być uruchomiona w ramce. Funkcja do swojego działania nie wykorzystuje do tego {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}}, tak jak to robi {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.CzyTak=function(...)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|1}} lub {{Code|zmienna}} | _1 = Sprawdzana zmienna, może być to funkcją. | 2 = {{Code|2}} lub {{Code|parametry}} | _2 = Parametry funkcji, może być to tablica parametrów, jest ona wykorzystywana, gdy powyższy element jest funkcją. }} === Funkcja działająca w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} === ==== Ciąg niepusty z treściwymi znakami z odstępami ==== Jeżeli ta funkcja jest uruchomiona w ramce, np. w postaci: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTak| Wartość |wyspecjalizowana=tak}} </syntaxhighlight> To w tym przypadku funkcja zwraca wartość {{Code|tak}}, tak jak funkcja {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}} ==== Ciąg z samych znaków odstępów ==== A w przypadku: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTak| |wyspecjalizowana=tak}} </syntaxhighlight> To w tym przypadku funkcja zwraca wartość równą ciągowi {{Code|tak}}, mimo że funkcja {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}} zwróci wartość równoważną ciągowi pustemu. ==== Ciąg pusty - jego rewidowanie ==== <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTak||wyspecjalizowana=tak}} </syntaxhighlight> Ta funkcja uruchomiona w ramce w wikikodzie zwraca wartość równą ciągowi pustemu, tak samo, jak funkcja {{Code|{{sr|#p["CzyTakCiąg"]|p=Parametry}}}}. === W postaci funkcji bibliotecznej - nie ramki === ==== Treściwe znaki z odstępami ==== Podobnie jest w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, czyli: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul.CzyTak(" Wartość "); </syntaxhighlight> Ta funkcja zwróci wartość {{Code|tak}}. ==== Same odstępy ==== A teraz inny przykład: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul.CzyTak(" "); </syntaxhighlight> Ta funkcja zwróci wartość {{Code|tak}}, niezależnie, czy tym ciągiem jest szereg składający się z samych znaków odstępów. ==== Ciąg pusty ==== A teraz inny przykład: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul.CzyTak(""); </syntaxhighlight> Ta funkcja wtedy zwróci wartość równą {{Code|nil}} w kodzie {{lpg|Lua}} w {{lpg|Lua|Scribunto}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> bmzai278aqv9uy08kpojm04ixq1v2io 555777 555776 2026-09-12T00:57:40Z Persino 2851 /* p.CzyTak */ 555777 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == Funkcje prawdy i fałszu - ogólne przedstawienie == W funkcjach: {{LinkŚródtytuł|p["CzyTakCiąg"]}} i {{LinkŚródtytuł|p.CzyTak}}, uruchomione w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, muszą posiadać dodatkowo parametr {{Parametr|wyspecjalizowana|tak}}, aby dało się w je wsadzić skutecznie parametry do samej tej ramki dziecka, a nie używać parametry szablonu rodzica. === Wzajemna zależność === W tej pierwszej funkcji jest wykorzystywana ta druga, w której w tej pierwszej w parametrze pierwszym, w przypadku łańcuchów znakowych wykorzystywana jest funkcja do usuwania dolnych myślników i odstępów na końcach, a potem jest uruchamiana ta druga. === Uzyskiwane wyniki w zależności od sprawdzanego parametru - różne typy wartości pierwszej zmiennej === ==== Parametr typu {{Code|string}} ==== Te funkcje rozważane tutaj powiedziane powyżej w wikikodzie w szablonie rodzicu, czy w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, służą do sprawdzenia, czy wartość, czy jest nierówna ciągowi uzyskanemu pustemu, w przypadku tej pierwszej funkcji, a w przypadku drugiej, czy nie jest ciągiem pustym. ==== Typu {{Code|number}} ==== Jeżeli jest to liczba, to czy jest nie równa {{Code|0}}. ==== Typu {{Code|boolean}} ==== Czy wartością logiczną jest jako {{Code|true}}. ==== Typu {{Code|table}} ==== Dla tabel, czy jest niepustą tabelą. ==== Typu {{Code|function}} ==== Ale za to w przypadku funkcji, czy funkcja o nazwie {{Code|zmienna}} z parametrami {{Code|parametry}}, czy zwraca wartość odpowiadająca {{Code|true}}, === Zwracane wartości === Jeżeli funkcja zwróci wartość odpowiadająca prawdziwej, to ta funkcja zwróci znak {{Code|tak}}, w przeciwnym wypadku w wikikodzie zwraca wartość pustą, a w kodzie, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, wartość {{Code|nil}}. == {{Śródtytuł|CzyTakSilnik}}{{Code|CzyTakSilnik}} == Funkcja pomocnicza służąca do liczenia wartości logicznej {{Code|tak}} lub {{Code|nil}} parametrów ramki, w wikikodzie, funkcji {{lpg|lua}} w {{lpr|Lua|Scribunto}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function CzyTakSilnik(args,funkcja)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|args}} | _1 = Tablica elementów z pierwszym elementem do sprawdzenia, z drugim jako nazwa modułu z funkcjami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w takim przypadku ten pierwszy element jest nazwą funkcji, który w połączeniu z nazwą modułu daje referencję do funkcji. | 2 = {{Code|funkcja}} | _2 = Funkcja, za pomocą której sprawdzamy logiczność pierwszego elementu tej tablicy. }} === Możliwe wartości drugiego parametru - funkcji === Możliwymi wartościami funkcji parametru {{Code|funkcja}} jest {{Code|CzyTak}} lub {{Code|CzyTakCiąg}} (ta funkcja wykorzystuje funkcję {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}} do swojego argumentu, który służy do sprawdzania, jaki spełnia warunek). === Sprawdzanie prawdziwości funkcji z jej zrzucanej, wartości === Gdy istnieje parametr tablicy {{Code|args}} funkcji o parametrze nienazwanym {{Code|args[2]}}, który jest nazwą modułu z funkcjami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a samą funkcją jest {{Code|args[1]}}, to tak utworzona funkcja jest zmienną {{Code|parametr}}, a jeżeli jej nie ma, to ona przyjmuje wartość {{Code|args[1]}}, a gdy jednak istnieje ten drugi element, to na podstawie którego zbierane są argumenty ramki nazwane jak nazwane, tzn. klucze i ich wartości przypisuje, a w przypadku parametrów nienazwanych (nie są zbierane elementy w tej tablicy o kluczach o wartości: {{Code|1}} i {{Code|2}}), a te inne klucze są pomniejszane o dwa, w ten sposób jest utworzona tabela {{Code|argsfun}}. === Brak składowej drugiej tablicy, co świadczy, że nie sprawdzamy funkcji, tylko co innego === ==== Rewidowana jest liczba lub ciąg znaków liczba ==== Gdy nie ma składowej drugiej tablicy, tzn. {{Code|args[2]}}, to wtedy funkcja sprawdza, czy {{Code|args[1]}} to jest liczba w łańcuchu znakowym, lub bezpośrednio liczba. ==== Typ - ciag znaków ==== Jeżeli nie da się jej przetransformować na liczbę, to sprawdza, czy typem tej zmiennej jest {{Code|string}} (czy typem jest szereg). Po działaniu funkcją: {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}}, jeśli ma wtedy wartość: {{Code|"true"}}, wtedy ta rozważana na samym początku zmienna przyjmuje wartość {{Code|true}}, {{Code|"false"}}, wtedy {{Code|false}}, {{Code|"nil"}}, wtedy {{Code|nil}}. A jeżeli ta zmienna żadnej tej wartości nie przyjmuje z tych wartości, to wtedy jest transformowana na liczbę, jeżeli da się tą operację dokonać. === Walidacja przygotowanych parametrów podaną funkcją === Na samym końcu jest liczona wartość logiczna z przygotowanymi parametrami, według jednej z dwóch specjalnie przygotowanych funkcji. ==== Przypadek uruchamiania funkcji w kodzie ==== W postaci wywołania ogólnego: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); return (parametry_modul[funkcja]{[1]=parametr,[2]=argsfun,})and "tak" or nil; </syntaxhighlight> Gdzie {{Code|funkcja}}, to {{Code|CzyTak}} lub {{Code|CzyTakCiąg}}, a {{Code|parametr}}, to funkcja w jakimś module lub inna wartość, a {{Code|argsfun}}, to tabela argumentów ramki, dziecka, w kodzie {{lpg|Lua}} w {{lpr|Scribunto}}, w wikikodzie w szablonie rodzicu. Gdy ta funkcja zwróci wartość logiczną odpowiadającą {{Code|true}}, to wtedy zwraca {{Code|tak}}, w przeciwnym wypadku {{Code|nil}}. ==== Procedura zwracając wartość z ramki wiki kodu ==== Ta funkcja jest wykorzystywana, gdy jest uruchamiana w ramce, gdy mamy parametry ramki: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTakCiąg| Wartość |nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wyspecjalizowana=tak}} </syntaxhighlight> Podobnie jest z funkcją {{Code|{{sr|#p.CzyTak|p=Parametry}}}}. A jak jest tworzony parametr zmiennej z powyższych wywołań, to jest powiedziane powyżej. === Atrapa funkcji parametrów ramki rodzica (szablonu) === Równie dobrze możemy zefiniować atrapę funkcji {{Code|frame.getParent}}, wtedy: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul["CzyTakCiąg"]{args={ [1]=" Wartość ", [2]="", ["nazwa1"]="wartość1", ["nazwa2"]="wartość2", [3]="wartość3", [4]="wartość4", ["wyspecjalizowana"]="tak", }, getParent=function()end, }; </syntaxhighlight> Czasami tak potrzeba robić, by ominąc zabezpieczenia pewnych funkcji, nawet tutaj. == {{Śródtytuł|p["CzyTakCiąg"]}}{{Code|p["CzyTakCiąg"]}} == W tej funkcji parametry mogą być zbierane w osobnych parametrach lub w jednej tablicy albo ta funkcja może być uruchomiona w ramce. Funkcja do swojego działania wykorzystuje do tego {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}} i {{LinkŚródtytuł|p.CzyTak}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["CzyTakCiąg"]=function(...)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = zmienna | _1 = Funkcja - typ: {{Code|function}}, lub inna wartość sprawdzana, np. {{Code|string}}, czy odpowiada wartości prawdziwej. | 2 = parametry | _2 = Parametry funkcji sprawdzanej, gdy zmienna: {{Code|zmienna}}, jest funkcją. }} Funkcja, gdy jest uruchamiania w ramce, to wtedy elementem sprawdzany jest tablica ramki tablicy transportu modułu, a ponieważ ma ona w sobie zdefiniowaną funkcję: {{LzLua|frame:getParent}}, to wtedy jest uruchamiania funkcja: {{LinkŚródtytuł|CzyTakSilnik}}. === Funkcja uruchamiania w ramce wiki kodu === ==== Normalne znaki z odstępami ==== Jeżeli ta funkcja jest uruchomiona w ramce, np. w postaci: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTakCiąg| Wartość |wyspecjalizowana=tak}} </syntaxhighlight> ==== Ciąg składający się z samych odstępów - wartość zwracana ==== To w tym przypadku funkcja zwraca wartość {{Code|tak}}, tak jak funkcja {{LinkŚródtytuł|p.CzyTak}}, a w przypadku: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTakCiąg| |wyspecjalizowana=tak}} </syntaxhighlight> To w tym przypadku funkcja zwraca wartość równą ciągowi pustemu, mimo że funkcja {{LinkŚródtytuł|p.CzyTak}} zwróci wartość {{Code|tak}}. === Funkcja uruchamiania w postaci funkcji bibliotecznej === ==== Ciąg z treściwymi znakami z odstępami ==== Podobnie jest w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, czyli: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul["CzyTakCiąg"](" Wartość "); </syntaxhighlight> Ta funkcja zwróci wartość {{Code|tak}}. ==== Brak takich znaków, tylko same odstępy ==== A teraz inny przykład: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul["CzyTakCiąg"](" "); </syntaxhighlight> Ta funkcja zwróci wartość {{Code|nil}}. == {{Śródtytuł|p.CzyTak}}{{Code|p.CzyTak}} == W tej funkcji parametry mogą być zbierane w osobnych parametrach lub w jednej tablicy albo ta funkcja może być uruchomiona w ramce. Funkcja do swojego działania nie wykorzystuje do tego {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}}, tak jak to robi {{LinkŚródtytuł|p["CzyTakCiąg"]}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.CzyTak=function(...)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|1}} lub {{Code|zmienna}} | _1 = Sprawdzana zmienna, może być to funkcją. | 2 = {{Code|2}} lub {{Code|parametry}} | _2 = Parametry funkcji, może być to tablica parametrów, jest ona wykorzystywana, gdy powyższy element jest funkcją. }} === Funkcja działająca w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} === ==== Ciąg niepusty z treściwymi znakami z odstępami ==== Jeżeli ta funkcja jest uruchomiona w ramce, np. w postaci: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTak| Wartość |wyspecjalizowana=tak}} </syntaxhighlight> To w tym przypadku funkcja zwraca wartość {{Code|tak}}, tak jak funkcja {{LinkŚródtytuł|p["CzyTakCiąg"]}} ==== Ciąg z samych znaków odstępów ==== A w przypadku: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTak| |wyspecjalizowana=tak}} </syntaxhighlight> To w tym przypadku funkcja zwraca wartość równą ciągowi {{Code|tak}}, mimo że funkcja {{LinkŚródtytuł|p["CzyTakCiąg"]}} zwróci wartość równoważną ciągowi pustemu. ==== Ciąg pusty - jego rewidowanie ==== <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTak||wyspecjalizowana=tak}} </syntaxhighlight> Ta funkcja uruchomiona w ramce w wikikodzie zwraca wartość równą ciągowi pustemu, tak samo, jak funkcja {{LinkŚródtytuł|p["CzyTakCiąg"]}}. === W postaci funkcji bibliotecznej - nie ramki === ==== Treściwe znaki z odstępami ==== Podobnie jest w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, czyli: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul.CzyTak(" Wartość "); </syntaxhighlight> Ta funkcja zwróci wartość {{Code|tak}}. ==== Same odstępy ==== A teraz inny przykład: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul.CzyTak(" "); </syntaxhighlight> Ta funkcja zwróci wartość {{Code|tak}}, niezależnie, czy tym ciągiem jest szereg składający się z samych znaków odstępów. ==== Ciąg pusty ==== A teraz inny przykład: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul.CzyTak(""); </syntaxhighlight> Ta funkcja wtedy zwróci wartość równą {{Code|nil}} w kodzie {{lpg|Lua}} w {{lpg|Lua|Scribunto}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 2s91w9g3coisj1yjgqbcp40efgzrnqm 555778 555777 2026-09-12T01:04:38Z Persino 2851 /* p.CzyTak */ 555778 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == Funkcje prawdy i fałszu - ogólne przedstawienie == W funkcjach: {{LinkŚródtytuł|p["CzyTakCiąg"]}} i {{LinkŚródtytuł|p.CzyTak}}, uruchomione w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, muszą posiadać dodatkowo parametr {{Parametr|wyspecjalizowana|tak}}, aby dało się w je wsadzić skutecznie parametry do samej tej ramki dziecka, a nie używać parametry szablonu rodzica. === Wzajemna zależność === W tej pierwszej funkcji jest wykorzystywana ta druga, w której w tej pierwszej w parametrze pierwszym, w przypadku łańcuchów znakowych wykorzystywana jest funkcja do usuwania dolnych myślników i odstępów na końcach, a potem jest uruchamiana ta druga. === Uzyskiwane wyniki w zależności od sprawdzanego parametru - różne typy wartości pierwszej zmiennej === ==== Parametr typu {{Code|string}} ==== Te funkcje rozważane tutaj powiedziane powyżej w wikikodzie w szablonie rodzicu, czy w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, służą do sprawdzenia, czy wartość, czy jest nierówna ciągowi uzyskanemu pustemu, w przypadku tej pierwszej funkcji, a w przypadku drugiej, czy nie jest ciągiem pustym. ==== Typu {{Code|number}} ==== Jeżeli jest to liczba, to czy jest nie równa {{Code|0}}. ==== Typu {{Code|boolean}} ==== Czy wartością logiczną jest jako {{Code|true}}. ==== Typu {{Code|table}} ==== Dla tabel, czy jest niepustą tabelą. ==== Typu {{Code|function}} ==== Ale za to w przypadku funkcji, czy funkcja o nazwie {{Code|zmienna}} z parametrami {{Code|parametry}}, czy zwraca wartość odpowiadająca {{Code|true}}, === Zwracane wartości === Jeżeli funkcja zwróci wartość odpowiadająca prawdziwej, to ta funkcja zwróci znak {{Code|tak}}, w przeciwnym wypadku w wikikodzie zwraca wartość pustą, a w kodzie, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, wartość {{Code|nil}}. == {{Śródtytuł|CzyTakSilnik}}{{Code|CzyTakSilnik}} == Funkcja pomocnicza służąca do liczenia wartości logicznej {{Code|tak}} lub {{Code|nil}} parametrów ramki, w wikikodzie, funkcji {{lpg|lua}} w {{lpr|Lua|Scribunto}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function CzyTakSilnik(args,funkcja)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|args}} | _1 = Tablica elementów z pierwszym elementem do sprawdzenia, z drugim jako nazwa modułu z funkcjami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w takim przypadku ten pierwszy element jest nazwą funkcji, który w połączeniu z nazwą modułu daje referencję do funkcji. | 2 = {{Code|funkcja}} | _2 = Funkcja, za pomocą której sprawdzamy logiczność pierwszego elementu tej tablicy. }} === Możliwe wartości drugiego parametru - funkcji === Możliwymi wartościami funkcji parametru {{Code|funkcja}} jest {{Code|CzyTak}} lub {{Code|CzyTakCiąg}} (ta funkcja wykorzystuje funkcję {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}} do swojego argumentu, który służy do sprawdzania, jaki spełnia warunek). === Sprawdzanie prawdziwości funkcji z jej zrzucanej, wartości === Gdy istnieje parametr tablicy {{Code|args}} funkcji o parametrze nienazwanym {{Code|args[2]}}, który jest nazwą modułu z funkcjami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a samą funkcją jest {{Code|args[1]}}, to tak utworzona funkcja jest zmienną {{Code|parametr}}, a jeżeli jej nie ma, to ona przyjmuje wartość {{Code|args[1]}}, a gdy jednak istnieje ten drugi element, to na podstawie którego zbierane są argumenty ramki nazwane jak nazwane, tzn. klucze i ich wartości przypisuje, a w przypadku parametrów nienazwanych (nie są zbierane elementy w tej tablicy o kluczach o wartości: {{Code|1}} i {{Code|2}}), a te inne klucze są pomniejszane o dwa, w ten sposób jest utworzona tabela {{Code|argsfun}}. === Brak składowej drugiej tablicy, co świadczy, że nie sprawdzamy funkcji, tylko co innego === ==== Rewidowana jest liczba lub ciąg znaków liczba ==== Gdy nie ma składowej drugiej tablicy, tzn. {{Code|args[2]}}, to wtedy funkcja sprawdza, czy {{Code|args[1]}} to jest liczba w łańcuchu znakowym, lub bezpośrednio liczba. ==== Typ - ciag znaków ==== Jeżeli nie da się jej przetransformować na liczbę, to sprawdza, czy typem tej zmiennej jest {{Code|string}} (czy typem jest szereg). Po działaniu funkcją: {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}}, jeśli ma wtedy wartość: {{Code|"true"}}, wtedy ta rozważana na samym początku zmienna przyjmuje wartość {{Code|true}}, {{Code|"false"}}, wtedy {{Code|false}}, {{Code|"nil"}}, wtedy {{Code|nil}}. A jeżeli ta zmienna żadnej tej wartości nie przyjmuje z tych wartości, to wtedy jest transformowana na liczbę, jeżeli da się tą operację dokonać. === Walidacja przygotowanych parametrów podaną funkcją === Na samym końcu jest liczona wartość logiczna z przygotowanymi parametrami, według jednej z dwóch specjalnie przygotowanych funkcji. ==== Przypadek uruchamiania funkcji w kodzie ==== W postaci wywołania ogólnego: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); return (parametry_modul[funkcja]{[1]=parametr,[2]=argsfun,})and "tak" or nil; </syntaxhighlight> Gdzie {{Code|funkcja}}, to {{Code|CzyTak}} lub {{Code|CzyTakCiąg}}, a {{Code|parametr}}, to funkcja w jakimś module lub inna wartość, a {{Code|argsfun}}, to tabela argumentów ramki, dziecka, w kodzie {{lpg|Lua}} w {{lpr|Scribunto}}, w wikikodzie w szablonie rodzicu. Gdy ta funkcja zwróci wartość logiczną odpowiadającą {{Code|true}}, to wtedy zwraca {{Code|tak}}, w przeciwnym wypadku {{Code|nil}}. ==== Procedura zwracając wartość z ramki wiki kodu ==== Ta funkcja jest wykorzystywana, gdy jest uruchamiana w ramce, gdy mamy parametry ramki: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTakCiąg| Wartość |nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wyspecjalizowana=tak}} </syntaxhighlight> Podobnie jest z funkcją {{Code|{{sr|#p.CzyTak|p=Parametry}}}}. A jak jest tworzony parametr zmiennej z powyższych wywołań, to jest powiedziane powyżej. === Atrapa funkcji parametrów ramki rodzica (szablonu) === Równie dobrze możemy zefiniować atrapę funkcji {{Code|frame.getParent}}, wtedy: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul["CzyTakCiąg"]{args={ [1]=" Wartość ", [2]="", ["nazwa1"]="wartość1", ["nazwa2"]="wartość2", [3]="wartość3", [4]="wartość4", ["wyspecjalizowana"]="tak", }, getParent=function()end, }; </syntaxhighlight> Czasami tak potrzeba robić, by ominąc zabezpieczenia pewnych funkcji, nawet tutaj. == {{Śródtytuł|p["CzyTakCiąg"]}}{{Code|p["CzyTakCiąg"]}} == W tej funkcji parametry mogą być zbierane w osobnych parametrach lub w jednej tablicy albo ta funkcja może być uruchomiona w ramce. Funkcja do swojego działania wykorzystuje do tego {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}} i {{LinkŚródtytuł|p.CzyTak}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["CzyTakCiąg"]=function(...)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = zmienna | _1 = Funkcja - typ: {{Code|function}}, lub inna wartość sprawdzana, np. {{Code|string}}, czy odpowiada wartości prawdziwej. | 2 = parametry | _2 = Parametry funkcji sprawdzanej, gdy zmienna: {{Code|zmienna}}, jest funkcją. }} Funkcja, gdy jest uruchamiania w ramce, to wtedy elementem sprawdzany jest tablica ramki tablicy transportu modułu, a ponieważ ma ona w sobie zdefiniowaną funkcję: {{LzLua|frame:getParent}}, to wtedy jest uruchamiania funkcja: {{LinkŚródtytuł|CzyTakSilnik}}. === Funkcja uruchamiania w ramce wiki kodu === ==== Normalne znaki z odstępami ==== Jeżeli ta funkcja jest uruchomiona w ramce, np. w postaci: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTakCiąg| Wartość |wyspecjalizowana=tak}} </syntaxhighlight> ==== Ciąg składający się z samych odstępów - wartość zwracana ==== To w tym przypadku funkcja zwraca wartość {{Code|tak}}, tak jak funkcja {{LinkŚródtytuł|p.CzyTak}}, a w przypadku: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTakCiąg| |wyspecjalizowana=tak}} </syntaxhighlight> To w tym przypadku funkcja zwraca wartość równą ciągowi pustemu, mimo że funkcja {{LinkŚródtytuł|p.CzyTak}} zwróci wartość {{Code|tak}}. === Funkcja uruchamiania w postaci funkcji bibliotecznej === ==== Ciąg z treściwymi znakami z odstępami ==== Podobnie jest w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, czyli: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul["CzyTakCiąg"](" Wartość "); </syntaxhighlight> Ta funkcja zwróci wartość {{Code|tak}}. ==== Brak takich znaków, tylko same odstępy ==== A teraz inny przykład: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul["CzyTakCiąg"](" "); </syntaxhighlight> Ta funkcja zwróci wartość {{Code|nil}}. == {{Śródtytuł|p.CzyTak}}{{Code|p.CzyTak}} == W tej funkcji parametry mogą być zbierane w osobnych parametrach lub w jednej tablicy albo ta funkcja może być uruchomiona w ramce. Funkcja do swojego działania nie wykorzystuje do tego {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}}, tak jak to robi {{LinkŚródtytuł|p["CzyTakCiąg"]}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.CzyTak=function(...)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|1}} lub {{Code|zmienna}} | _1 = Sprawdzana zmienna, może być to funkcją. | 2 = {{Code|2}} lub {{Code|parametry}} | _2 = Parametry funkcji, może być to tablica parametrów, jest ona wykorzystywana, gdy powyższy element jest funkcją. }} W przypadku uruchamiania funkcji w ramce, wtedy parametrem pierwszym tej funkcji jest tablica ramka wikikodu {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, więc ma w sobie zdefiniowaną tablicę {{LzLua|frame:getParent}}, stąd wtedy jest stosowana funkcja lokalna: {{LinkŚródtytuł|CzyTakSilnik}}, z drugim parametrem: {{Code|CzyTak}}. === Funkcja działająca w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} === ==== Ciąg niepusty z treściwymi znakami z odstępami ==== Jeżeli ta funkcja jest uruchomiona w ramce, np. w postaci: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTak| Wartość |wyspecjalizowana=tak}} </syntaxhighlight> To w tym przypadku funkcja zwraca wartość {{Code|tak}}, tak jak funkcja {{LinkŚródtytuł|p["CzyTakCiąg"]}} ==== Ciąg z samych znaków odstępów ==== A w przypadku: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTak| |wyspecjalizowana=tak}} </syntaxhighlight> To w tym przypadku funkcja zwraca wartość równą ciągowi {{Code|tak}}, mimo że funkcja {{LinkŚródtytuł|p["CzyTakCiąg"]}} zwróci wartość równoważną ciągowi pustemu. ==== Ciąg pusty - jego rewidowanie ==== <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTak||wyspecjalizowana=tak}} </syntaxhighlight> Ta funkcja uruchomiona w ramce w wikikodzie zwraca wartość równą ciągowi pustemu, tak samo, jak funkcja {{LinkŚródtytuł|p["CzyTakCiąg"]}}. === W postaci funkcji bibliotecznej - nie ramki === ==== Treściwe znaki z odstępami ==== Podobnie jest w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, czyli: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul.CzyTak(" Wartość "); </syntaxhighlight> Ta funkcja zwróci wartość {{Code|tak}}. ==== Same odstępy ==== A teraz inny przykład: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul.CzyTak(" "); </syntaxhighlight> Ta funkcja zwróci wartość {{Code|tak}}, niezależnie, czy tym ciągiem jest szereg składający się z samych znaków odstępów. ==== Ciąg pusty ==== A teraz inny przykład: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul.CzyTak(""); </syntaxhighlight> Ta funkcja wtedy zwróci wartość równą {{Code|nil}} w kodzie {{lpg|Lua}} w {{lpg|Lua|Scribunto}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> g476iv3jqvwvle6f5pf5xr1xnf8v5iz 555779 555778 2026-09-12T01:05:46Z Persino 2851 /* p.CzyTak */ 555779 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == Funkcje prawdy i fałszu - ogólne przedstawienie == W funkcjach: {{LinkŚródtytuł|p["CzyTakCiąg"]}} i {{LinkŚródtytuł|p.CzyTak}}, uruchomione w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, muszą posiadać dodatkowo parametr {{Parametr|wyspecjalizowana|tak}}, aby dało się w je wsadzić skutecznie parametry do samej tej ramki dziecka, a nie używać parametry szablonu rodzica. === Wzajemna zależność === W tej pierwszej funkcji jest wykorzystywana ta druga, w której w tej pierwszej w parametrze pierwszym, w przypadku łańcuchów znakowych wykorzystywana jest funkcja do usuwania dolnych myślników i odstępów na końcach, a potem jest uruchamiana ta druga. === Uzyskiwane wyniki w zależności od sprawdzanego parametru - różne typy wartości pierwszej zmiennej === ==== Parametr typu {{Code|string}} ==== Te funkcje rozważane tutaj powiedziane powyżej w wikikodzie w szablonie rodzicu, czy w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, służą do sprawdzenia, czy wartość, czy jest nierówna ciągowi uzyskanemu pustemu, w przypadku tej pierwszej funkcji, a w przypadku drugiej, czy nie jest ciągiem pustym. ==== Typu {{Code|number}} ==== Jeżeli jest to liczba, to czy jest nie równa {{Code|0}}. ==== Typu {{Code|boolean}} ==== Czy wartością logiczną jest jako {{Code|true}}. ==== Typu {{Code|table}} ==== Dla tabel, czy jest niepustą tabelą. ==== Typu {{Code|function}} ==== Ale za to w przypadku funkcji, czy funkcja o nazwie {{Code|zmienna}} z parametrami {{Code|parametry}}, czy zwraca wartość odpowiadająca {{Code|true}}, === Zwracane wartości === Jeżeli funkcja zwróci wartość odpowiadająca prawdziwej, to ta funkcja zwróci znak {{Code|tak}}, w przeciwnym wypadku w wikikodzie zwraca wartość pustą, a w kodzie, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, wartość {{Code|nil}}. == {{Śródtytuł|CzyTakSilnik}}{{Code|CzyTakSilnik}} == Funkcja pomocnicza służąca do liczenia wartości logicznej {{Code|tak}} lub {{Code|nil}} parametrów ramki, w wikikodzie, funkcji {{lpg|lua}} w {{lpr|Lua|Scribunto}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function CzyTakSilnik(args,funkcja)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|args}} | _1 = Tablica elementów z pierwszym elementem do sprawdzenia, z drugim jako nazwa modułu z funkcjami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w takim przypadku ten pierwszy element jest nazwą funkcji, który w połączeniu z nazwą modułu daje referencję do funkcji. | 2 = {{Code|funkcja}} | _2 = Funkcja, za pomocą której sprawdzamy logiczność pierwszego elementu tej tablicy. }} === Możliwe wartości drugiego parametru - funkcji === Możliwymi wartościami funkcji parametru {{Code|funkcja}} jest {{Code|CzyTak}} lub {{Code|CzyTakCiąg}} (ta funkcja wykorzystuje funkcję {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}} do swojego argumentu, który służy do sprawdzania, jaki spełnia warunek). === Sprawdzanie prawdziwości funkcji z jej zrzucanej, wartości === Gdy istnieje parametr tablicy {{Code|args}} funkcji o parametrze nienazwanym {{Code|args[2]}}, który jest nazwą modułu z funkcjami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a samą funkcją jest {{Code|args[1]}}, to tak utworzona funkcja jest zmienną {{Code|parametr}}, a jeżeli jej nie ma, to ona przyjmuje wartość {{Code|args[1]}}, a gdy jednak istnieje ten drugi element, to na podstawie którego zbierane są argumenty ramki nazwane jak nazwane, tzn. klucze i ich wartości przypisuje, a w przypadku parametrów nienazwanych (nie są zbierane elementy w tej tablicy o kluczach o wartości: {{Code|1}} i {{Code|2}}), a te inne klucze są pomniejszane o dwa, w ten sposób jest utworzona tabela {{Code|argsfun}}. === Brak składowej drugiej tablicy, co świadczy, że nie sprawdzamy funkcji, tylko co innego === ==== Rewidowana jest liczba lub ciąg znaków liczba ==== Gdy nie ma składowej drugiej tablicy, tzn. {{Code|args[2]}}, to wtedy funkcja sprawdza, czy {{Code|args[1]}} to jest liczba w łańcuchu znakowym, lub bezpośrednio liczba. ==== Typ - ciag znaków ==== Jeżeli nie da się jej przetransformować na liczbę, to sprawdza, czy typem tej zmiennej jest {{Code|string}} (czy typem jest szereg). Po działaniu funkcją: {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}}, jeśli ma wtedy wartość: {{Code|"true"}}, wtedy ta rozważana na samym początku zmienna przyjmuje wartość {{Code|true}}, {{Code|"false"}}, wtedy {{Code|false}}, {{Code|"nil"}}, wtedy {{Code|nil}}. A jeżeli ta zmienna żadnej tej wartości nie przyjmuje z tych wartości, to wtedy jest transformowana na liczbę, jeżeli da się tą operację dokonać. === Walidacja przygotowanych parametrów podaną funkcją === Na samym końcu jest liczona wartość logiczna z przygotowanymi parametrami, według jednej z dwóch specjalnie przygotowanych funkcji. ==== Przypadek uruchamiania funkcji w kodzie ==== W postaci wywołania ogólnego: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); return (parametry_modul[funkcja]{[1]=parametr,[2]=argsfun,})and "tak" or nil; </syntaxhighlight> Gdzie {{Code|funkcja}}, to {{Code|CzyTak}} lub {{Code|CzyTakCiąg}}, a {{Code|parametr}}, to funkcja w jakimś module lub inna wartość, a {{Code|argsfun}}, to tabela argumentów ramki, dziecka, w kodzie {{lpg|Lua}} w {{lpr|Scribunto}}, w wikikodzie w szablonie rodzicu. Gdy ta funkcja zwróci wartość logiczną odpowiadającą {{Code|true}}, to wtedy zwraca {{Code|tak}}, w przeciwnym wypadku {{Code|nil}}. ==== Procedura zwracając wartość z ramki wiki kodu ==== Ta funkcja jest wykorzystywana, gdy jest uruchamiana w ramce, gdy mamy parametry ramki: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTakCiąg| Wartość |nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wyspecjalizowana=tak}} </syntaxhighlight> Podobnie jest z funkcją {{Code|{{sr|#p.CzyTak|p=Parametry}}}}. A jak jest tworzony parametr zmiennej z powyższych wywołań, to jest powiedziane powyżej. === Atrapa funkcji parametrów ramki rodzica (szablonu) === Równie dobrze możemy zefiniować atrapę funkcji {{Code|frame.getParent}}, wtedy: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul["CzyTakCiąg"]{args={ [1]=" Wartość ", [2]="", ["nazwa1"]="wartość1", ["nazwa2"]="wartość2", [3]="wartość3", [4]="wartość4", ["wyspecjalizowana"]="tak", }, getParent=function()end, }; </syntaxhighlight> Czasami tak potrzeba robić, by ominąc zabezpieczenia pewnych funkcji, nawet tutaj. == {{Śródtytuł|p["CzyTakCiąg"]}}{{Code|p["CzyTakCiąg"]}} == W tej funkcji parametry mogą być zbierane w osobnych parametrach lub w jednej tablicy albo ta funkcja może być uruchomiona w ramce. Funkcja do swojego działania wykorzystuje do tego {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}} i {{LinkŚródtytuł|p.CzyTak}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["CzyTakCiąg"]=function(...)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = zmienna | _1 = Funkcja - typ: {{Code|function}}, lub inna wartość sprawdzana, np. {{Code|string}}, czy odpowiada wartości prawdziwej. | 2 = parametry | _2 = Parametry funkcji sprawdzanej, gdy zmienna: {{Code|zmienna}}, jest funkcją. }} Funkcja, gdy jest uruchamiania w ramce, to wtedy elementem sprawdzany jest tablica ramki tablicy transportu modułu, a ponieważ ma ona w sobie zdefiniowaną funkcję: {{LzLua|frame:getParent}}, to wtedy jest uruchamiania funkcja: {{LinkŚródtytuł|CzyTakSilnik}}. === Funkcja uruchamiania w ramce wiki kodu === ==== Normalne znaki z odstępami ==== Jeżeli ta funkcja jest uruchomiona w ramce, np. w postaci: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTakCiąg| Wartość |wyspecjalizowana=tak}} </syntaxhighlight> ==== Ciąg składający się z samych odstępów - wartość zwracana ==== To w tym przypadku funkcja zwraca wartość {{Code|tak}}, tak jak funkcja {{LinkŚródtytuł|p.CzyTak}}, a w przypadku: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTakCiąg| |wyspecjalizowana=tak}} </syntaxhighlight> To w tym przypadku funkcja zwraca wartość równą ciągowi pustemu, mimo że funkcja {{LinkŚródtytuł|p.CzyTak}} zwróci wartość {{Code|tak}}. === Funkcja uruchamiania w postaci funkcji bibliotecznej === ==== Ciąg z treściwymi znakami z odstępami ==== Podobnie jest w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, czyli: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul["CzyTakCiąg"](" Wartość "); </syntaxhighlight> Ta funkcja zwróci wartość {{Code|tak}}. ==== Brak takich znaków, tylko same odstępy ==== A teraz inny przykład: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul["CzyTakCiąg"](" "); </syntaxhighlight> Ta funkcja zwróci wartość {{Code|nil}}. == {{Śródtytuł|p.CzyTak}}{{Code|p.CzyTak}} == W tej funkcji parametry mogą być zbierane w osobnych parametrach lub w jednej tablicy albo ta funkcja może być uruchomiona w ramce. Funkcja do swojego działania nie wykorzystuje do tego {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}}, tak jak to robi {{LinkŚródtytuł|p["CzyTakCiąg"]}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.CzyTak=function(...)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|1}} lub {{Code|zmienna}} | _1 = Sprawdzana zmienna, może być to funkcją. | 2 = {{Code|2}} lub {{Code|parametry}} | _2 = Parametry funkcji, może być to tablica parametrów, jest ona wykorzystywana, gdy powyższy element jest funkcją. }} W przypadku uruchamiania funkcji w ramce, wtedy parametrem pierwszym tej funkcji jest tablica ramka wikikodu {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, więc ma w sobie zdefiniowaną funkcję: {{LzLua|frame:getParent}}, stąd wtedy jest stosowana funkcja lokalna: {{LinkŚródtytuł|CzyTakSilnik}}, z drugim parametrem: {{Code|CzyTak}}. === Funkcja działająca w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} === ==== Ciąg niepusty z treściwymi znakami z odstępami ==== Jeżeli ta funkcja jest uruchomiona w ramce, np. w postaci: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTak| Wartość |wyspecjalizowana=tak}} </syntaxhighlight> To w tym przypadku funkcja zwraca wartość {{Code|tak}}, tak jak funkcja {{LinkŚródtytuł|p["CzyTakCiąg"]}} ==== Ciąg z samych znaków odstępów ==== A w przypadku: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTak| |wyspecjalizowana=tak}} </syntaxhighlight> To w tym przypadku funkcja zwraca wartość równą ciągowi {{Code|tak}}, mimo że funkcja {{LinkŚródtytuł|p["CzyTakCiąg"]}} zwróci wartość równoważną ciągowi pustemu. ==== Ciąg pusty - jego rewidowanie ==== <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTak||wyspecjalizowana=tak}} </syntaxhighlight> Ta funkcja uruchomiona w ramce w wikikodzie zwraca wartość równą ciągowi pustemu, tak samo, jak funkcja {{LinkŚródtytuł|p["CzyTakCiąg"]}}. === W postaci funkcji bibliotecznej - nie ramki === ==== Treściwe znaki z odstępami ==== Podobnie jest w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, czyli: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul.CzyTak(" Wartość "); </syntaxhighlight> Ta funkcja zwróci wartość {{Code|tak}}. ==== Same odstępy ==== A teraz inny przykład: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul.CzyTak(" "); </syntaxhighlight> Ta funkcja zwróci wartość {{Code|tak}}, niezależnie, czy tym ciągiem jest szereg składający się z samych znaków odstępów. ==== Ciąg pusty ==== A teraz inny przykład: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul.CzyTak(""); </syntaxhighlight> Ta funkcja wtedy zwróci wartość równą {{Code|nil}} w kodzie {{lpg|Lua}} w {{lpg|Lua|Scribunto}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> mbw3g5ebdgmgbv00w8y6tq0koigh2ip 555780 555779 2026-09-12T01:08:50Z Persino 2851 /* p["CzyTakCiąg"] */ 555780 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == Funkcje prawdy i fałszu - ogólne przedstawienie == W funkcjach: {{LinkŚródtytuł|p["CzyTakCiąg"]}} i {{LinkŚródtytuł|p.CzyTak}}, uruchomione w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, muszą posiadać dodatkowo parametr {{Parametr|wyspecjalizowana|tak}}, aby dało się w je wsadzić skutecznie parametry do samej tej ramki dziecka, a nie używać parametry szablonu rodzica. === Wzajemna zależność === W tej pierwszej funkcji jest wykorzystywana ta druga, w której w tej pierwszej w parametrze pierwszym, w przypadku łańcuchów znakowych wykorzystywana jest funkcja do usuwania dolnych myślników i odstępów na końcach, a potem jest uruchamiana ta druga. === Uzyskiwane wyniki w zależności od sprawdzanego parametru - różne typy wartości pierwszej zmiennej === ==== Parametr typu {{Code|string}} ==== Te funkcje rozważane tutaj powiedziane powyżej w wikikodzie w szablonie rodzicu, czy w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, służą do sprawdzenia, czy wartość, czy jest nierówna ciągowi uzyskanemu pustemu, w przypadku tej pierwszej funkcji, a w przypadku drugiej, czy nie jest ciągiem pustym. ==== Typu {{Code|number}} ==== Jeżeli jest to liczba, to czy jest nie równa {{Code|0}}. ==== Typu {{Code|boolean}} ==== Czy wartością logiczną jest jako {{Code|true}}. ==== Typu {{Code|table}} ==== Dla tabel, czy jest niepustą tabelą. ==== Typu {{Code|function}} ==== Ale za to w przypadku funkcji, czy funkcja o nazwie {{Code|zmienna}} z parametrami {{Code|parametry}}, czy zwraca wartość odpowiadająca {{Code|true}}, === Zwracane wartości === Jeżeli funkcja zwróci wartość odpowiadająca prawdziwej, to ta funkcja zwróci znak {{Code|tak}}, w przeciwnym wypadku w wikikodzie zwraca wartość pustą, a w kodzie, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, wartość {{Code|nil}}. == {{Śródtytuł|CzyTakSilnik}}{{Code|CzyTakSilnik}} == Funkcja pomocnicza służąca do liczenia wartości logicznej {{Code|tak}} lub {{Code|nil}} parametrów ramki, w wikikodzie, funkcji {{lpg|lua}} w {{lpr|Lua|Scribunto}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function CzyTakSilnik(args,funkcja)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|args}} | _1 = Tablica elementów z pierwszym elementem do sprawdzenia, z drugim jako nazwa modułu z funkcjami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w takim przypadku ten pierwszy element jest nazwą funkcji, który w połączeniu z nazwą modułu daje referencję do funkcji. | 2 = {{Code|funkcja}} | _2 = Funkcja, za pomocą której sprawdzamy logiczność pierwszego elementu tej tablicy. }} === Możliwe wartości drugiego parametru - funkcji === Możliwymi wartościami funkcji parametru {{Code|funkcja}} jest {{Code|CzyTak}} lub {{Code|CzyTakCiąg}} (ta funkcja wykorzystuje funkcję {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}} do swojego argumentu, który służy do sprawdzania, jaki spełnia warunek). === Sprawdzanie prawdziwości funkcji z jej zrzucanej, wartości === Gdy istnieje parametr tablicy {{Code|args}} funkcji o parametrze nienazwanym {{Code|args[2]}}, który jest nazwą modułu z funkcjami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a samą funkcją jest {{Code|args[1]}}, to tak utworzona funkcja jest zmienną {{Code|parametr}}, a jeżeli jej nie ma, to ona przyjmuje wartość {{Code|args[1]}}, a gdy jednak istnieje ten drugi element, to na podstawie którego zbierane są argumenty ramki nazwane jak nazwane, tzn. klucze i ich wartości przypisuje, a w przypadku parametrów nienazwanych (nie są zbierane elementy w tej tablicy o kluczach o wartości: {{Code|1}} i {{Code|2}}), a te inne klucze są pomniejszane o dwa, w ten sposób jest utworzona tabela {{Code|argsfun}}. === Brak składowej drugiej tablicy, co świadczy, że nie sprawdzamy funkcji, tylko co innego === ==== Rewidowana jest liczba lub ciąg znaków liczba ==== Gdy nie ma składowej drugiej tablicy, tzn. {{Code|args[2]}}, to wtedy funkcja sprawdza, czy {{Code|args[1]}} to jest liczba w łańcuchu znakowym, lub bezpośrednio liczba. ==== Typ - ciag znaków ==== Jeżeli nie da się jej przetransformować na liczbę, to sprawdza, czy typem tej zmiennej jest {{Code|string}} (czy typem jest szereg). Po działaniu funkcją: {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}}, jeśli ma wtedy wartość: {{Code|"true"}}, wtedy ta rozważana na samym początku zmienna przyjmuje wartość {{Code|true}}, {{Code|"false"}}, wtedy {{Code|false}}, {{Code|"nil"}}, wtedy {{Code|nil}}. A jeżeli ta zmienna żadnej tej wartości nie przyjmuje z tych wartości, to wtedy jest transformowana na liczbę, jeżeli da się tą operację dokonać. === Walidacja przygotowanych parametrów podaną funkcją === Na samym końcu jest liczona wartość logiczna z przygotowanymi parametrami, według jednej z dwóch specjalnie przygotowanych funkcji. ==== Przypadek uruchamiania funkcji w kodzie ==== W postaci wywołania ogólnego: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); return (parametry_modul[funkcja]{[1]=parametr,[2]=argsfun,})and "tak" or nil; </syntaxhighlight> Gdzie {{Code|funkcja}}, to {{Code|CzyTak}} lub {{Code|CzyTakCiąg}}, a {{Code|parametr}}, to funkcja w jakimś module lub inna wartość, a {{Code|argsfun}}, to tabela argumentów ramki, dziecka, w kodzie {{lpg|Lua}} w {{lpr|Scribunto}}, w wikikodzie w szablonie rodzicu. Gdy ta funkcja zwróci wartość logiczną odpowiadającą {{Code|true}}, to wtedy zwraca {{Code|tak}}, w przeciwnym wypadku {{Code|nil}}. ==== Procedura zwracając wartość z ramki wiki kodu ==== Ta funkcja jest wykorzystywana, gdy jest uruchamiana w ramce, gdy mamy parametry ramki: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTakCiąg| Wartość |nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wyspecjalizowana=tak}} </syntaxhighlight> Podobnie jest z funkcją {{Code|{{sr|#p.CzyTak|p=Parametry}}}}. A jak jest tworzony parametr zmiennej z powyższych wywołań, to jest powiedziane powyżej. === Atrapa funkcji parametrów ramki rodzica (szablonu) === Równie dobrze możemy zefiniować atrapę funkcji {{Code|frame.getParent}}, wtedy: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul["CzyTakCiąg"]{args={ [1]=" Wartość ", [2]="", ["nazwa1"]="wartość1", ["nazwa2"]="wartość2", [3]="wartość3", [4]="wartość4", ["wyspecjalizowana"]="tak", }, getParent=function()end, }; </syntaxhighlight> Czasami tak potrzeba robić, by ominąc zabezpieczenia pewnych funkcji, nawet tutaj. == {{Śródtytuł|p["CzyTakCiąg"]}}{{Code|p["CzyTakCiąg"]}} == W tej funkcji parametry mogą być zbierane w osobnych parametrach lub w jednej tablicy albo ta funkcja może być uruchomiona w ramce. Funkcja do swojego działania wykorzystuje do tego {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}} i {{LinkŚródtytuł|p.CzyTak}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["CzyTakCiąg"]=function(...)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = zmienna | _1 = Funkcja - typ: {{Code|function}}, lub inna wartość sprawdzana, np. {{Code|string}}, czy odpowiada wartości prawdziwej. | 2 = parametry | _2 = Parametry funkcji sprawdzanej, gdy zmienna: {{Code|zmienna}}, jest funkcją. }} Funkcja, gdy jest uruchamiania w ramce, to wtedy elementem sprawdzany jest tablica ramki tablicy transportu modułu, a ponieważ ma ona w sobie zdefiniowaną funkcję: {{LzLua|frame:getParent}}, to wtedy jest uruchamiania funkcja: {{LinkŚródtytuł|CzyTakSilnik}}, z drugim parametrem: {{Code|CzyTakCiąg}}. === Funkcja uruchamiania w ramce wiki kodu === ==== Normalne znaki z odstępami ==== Jeżeli ta funkcja jest uruchomiona w ramce, np. w postaci: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTakCiąg| Wartość |wyspecjalizowana=tak}} </syntaxhighlight> ==== Ciąg składający się z samych odstępów - wartość zwracana ==== To w tym przypadku funkcja zwraca wartość {{Code|tak}}, tak jak funkcja {{LinkŚródtytuł|p.CzyTak}}, a w przypadku: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTakCiąg| |wyspecjalizowana=tak}} </syntaxhighlight> To w tym przypadku funkcja zwraca wartość równą ciągowi pustemu, mimo że funkcja {{LinkŚródtytuł|p.CzyTak}} zwróci wartość {{Code|tak}}. === Funkcja uruchamiania w postaci funkcji bibliotecznej === ==== Ciąg z treściwymi znakami z odstępami ==== Podobnie jest w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, czyli: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul["CzyTakCiąg"](" Wartość "); </syntaxhighlight> Ta funkcja zwróci wartość {{Code|tak}}. ==== Brak takich znaków, tylko same odstępy ==== A teraz inny przykład: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul["CzyTakCiąg"](" "); </syntaxhighlight> Ta funkcja zwróci wartość {{Code|nil}}. == {{Śródtytuł|p.CzyTak}}{{Code|p.CzyTak}} == W tej funkcji parametry mogą być zbierane w osobnych parametrach lub w jednej tablicy albo ta funkcja może być uruchomiona w ramce. Funkcja do swojego działania nie wykorzystuje do tego {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}}, tak jak to robi {{LinkŚródtytuł|p["CzyTakCiąg"]}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.CzyTak=function(...)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|1}} lub {{Code|zmienna}} | _1 = Sprawdzana zmienna, może być to funkcją. | 2 = {{Code|2}} lub {{Code|parametry}} | _2 = Parametry funkcji, może być to tablica parametrów, jest ona wykorzystywana, gdy powyższy element jest funkcją. }} W przypadku uruchamiania funkcji w ramce, wtedy parametrem pierwszym tej funkcji jest tablica ramka wikikodu {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, więc ma w sobie zdefiniowaną funkcję: {{LzLua|frame:getParent}}, stąd wtedy jest stosowana funkcja lokalna: {{LinkŚródtytuł|CzyTakSilnik}}, z drugim parametrem: {{Code|CzyTak}}. === Funkcja działająca w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} === ==== Ciąg niepusty z treściwymi znakami z odstępami ==== Jeżeli ta funkcja jest uruchomiona w ramce, np. w postaci: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTak| Wartość |wyspecjalizowana=tak}} </syntaxhighlight> To w tym przypadku funkcja zwraca wartość {{Code|tak}}, tak jak funkcja {{LinkŚródtytuł|p["CzyTakCiąg"]}} ==== Ciąg z samych znaków odstępów ==== A w przypadku: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTak| |wyspecjalizowana=tak}} </syntaxhighlight> To w tym przypadku funkcja zwraca wartość równą ciągowi {{Code|tak}}, mimo że funkcja {{LinkŚródtytuł|p["CzyTakCiąg"]}} zwróci wartość równoważną ciągowi pustemu. ==== Ciąg pusty - jego rewidowanie ==== <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTak||wyspecjalizowana=tak}} </syntaxhighlight> Ta funkcja uruchomiona w ramce w wikikodzie zwraca wartość równą ciągowi pustemu, tak samo, jak funkcja {{LinkŚródtytuł|p["CzyTakCiąg"]}}. === W postaci funkcji bibliotecznej - nie ramki === ==== Treściwe znaki z odstępami ==== Podobnie jest w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, czyli: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul.CzyTak(" Wartość "); </syntaxhighlight> Ta funkcja zwróci wartość {{Code|tak}}. ==== Same odstępy ==== A teraz inny przykład: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul.CzyTak(" "); </syntaxhighlight> Ta funkcja zwróci wartość {{Code|tak}}, niezależnie, czy tym ciągiem jest szereg składający się z samych znaków odstępów. ==== Ciąg pusty ==== A teraz inny przykład: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul.CzyTak(""); </syntaxhighlight> Ta funkcja wtedy zwróci wartość równą {{Code|nil}} w kodzie {{lpg|Lua}} w {{lpg|Lua|Scribunto}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 727mfubliih6emxly20nw78azjl32xf 555781 555780 2026-09-12T01:12:17Z Persino 2851 /* p["CzyTakCiąg"] */ 555781 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == Funkcje prawdy i fałszu - ogólne przedstawienie == W funkcjach: {{LinkŚródtytuł|p["CzyTakCiąg"]}} i {{LinkŚródtytuł|p.CzyTak}}, uruchomione w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, muszą posiadać dodatkowo parametr {{Parametr|wyspecjalizowana|tak}}, aby dało się w je wsadzić skutecznie parametry do samej tej ramki dziecka, a nie używać parametry szablonu rodzica. === Wzajemna zależność === W tej pierwszej funkcji jest wykorzystywana ta druga, w której w tej pierwszej w parametrze pierwszym, w przypadku łańcuchów znakowych wykorzystywana jest funkcja do usuwania dolnych myślników i odstępów na końcach, a potem jest uruchamiana ta druga. === Uzyskiwane wyniki w zależności od sprawdzanego parametru - różne typy wartości pierwszej zmiennej === ==== Parametr typu {{Code|string}} ==== Te funkcje rozważane tutaj powiedziane powyżej w wikikodzie w szablonie rodzicu, czy w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, służą do sprawdzenia, czy wartość, czy jest nierówna ciągowi uzyskanemu pustemu, w przypadku tej pierwszej funkcji, a w przypadku drugiej, czy nie jest ciągiem pustym. ==== Typu {{Code|number}} ==== Jeżeli jest to liczba, to czy jest nie równa {{Code|0}}. ==== Typu {{Code|boolean}} ==== Czy wartością logiczną jest jako {{Code|true}}. ==== Typu {{Code|table}} ==== Dla tabel, czy jest niepustą tabelą. ==== Typu {{Code|function}} ==== Ale za to w przypadku funkcji, czy funkcja o nazwie {{Code|zmienna}} z parametrami {{Code|parametry}}, czy zwraca wartość odpowiadająca {{Code|true}}, === Zwracane wartości === Jeżeli funkcja zwróci wartość odpowiadająca prawdziwej, to ta funkcja zwróci znak {{Code|tak}}, w przeciwnym wypadku w wikikodzie zwraca wartość pustą, a w kodzie, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, wartość {{Code|nil}}. == {{Śródtytuł|CzyTakSilnik}}{{Code|CzyTakSilnik}} == Funkcja pomocnicza służąca do liczenia wartości logicznej {{Code|tak}} lub {{Code|nil}} parametrów ramki, w wikikodzie, funkcji {{lpg|lua}} w {{lpr|Lua|Scribunto}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function CzyTakSilnik(args,funkcja)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|args}} | _1 = Tablica elementów z pierwszym elementem do sprawdzenia, z drugim jako nazwa modułu z funkcjami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w takim przypadku ten pierwszy element jest nazwą funkcji, który w połączeniu z nazwą modułu daje referencję do funkcji. | 2 = {{Code|funkcja}} | _2 = Funkcja, za pomocą której sprawdzamy logiczność pierwszego elementu tej tablicy. }} === Możliwe wartości drugiego parametru - funkcji === Możliwymi wartościami funkcji parametru {{Code|funkcja}} jest {{Code|CzyTak}} lub {{Code|CzyTakCiąg}} (ta funkcja wykorzystuje funkcję {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}} do swojego argumentu, który służy do sprawdzania, jaki spełnia warunek). === Sprawdzanie prawdziwości funkcji z jej zrzucanej, wartości === Gdy istnieje parametr tablicy {{Code|args}} funkcji o parametrze nienazwanym {{Code|args[2]}}, który jest nazwą modułu z funkcjami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a samą funkcją jest {{Code|args[1]}}, to tak utworzona funkcja jest zmienną {{Code|parametr}}, a jeżeli jej nie ma, to ona przyjmuje wartość {{Code|args[1]}}, a gdy jednak istnieje ten drugi element, to na podstawie którego zbierane są argumenty ramki nazwane jak nazwane, tzn. klucze i ich wartości przypisuje, a w przypadku parametrów nienazwanych (nie są zbierane elementy w tej tablicy o kluczach o wartości: {{Code|1}} i {{Code|2}}), a te inne klucze są pomniejszane o dwa, w ten sposób jest utworzona tabela {{Code|argsfun}}. === Brak składowej drugiej tablicy, co świadczy, że nie sprawdzamy funkcji, tylko co innego === ==== Rewidowana jest liczba lub ciąg znaków liczba ==== Gdy nie ma składowej drugiej tablicy, tzn. {{Code|args[2]}}, to wtedy funkcja sprawdza, czy {{Code|args[1]}} to jest liczba w łańcuchu znakowym, lub bezpośrednio liczba. ==== Typ - ciag znaków ==== Jeżeli nie da się jej przetransformować na liczbę, to sprawdza, czy typem tej zmiennej jest {{Code|string}} (czy typem jest szereg). Po działaniu funkcją: {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}}, jeśli ma wtedy wartość: {{Code|"true"}}, wtedy ta rozważana na samym początku zmienna przyjmuje wartość {{Code|true}}, {{Code|"false"}}, wtedy {{Code|false}}, {{Code|"nil"}}, wtedy {{Code|nil}}. A jeżeli ta zmienna żadnej tej wartości nie przyjmuje z tych wartości, to wtedy jest transformowana na liczbę, jeżeli da się tą operację dokonać. === Walidacja przygotowanych parametrów podaną funkcją === Na samym końcu jest liczona wartość logiczna z przygotowanymi parametrami, według jednej z dwóch specjalnie przygotowanych funkcji. ==== Przypadek uruchamiania funkcji w kodzie ==== W postaci wywołania ogólnego: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); return (parametry_modul[funkcja]{[1]=parametr,[2]=argsfun,})and "tak" or nil; </syntaxhighlight> Gdzie {{Code|funkcja}}, to {{Code|CzyTak}} lub {{Code|CzyTakCiąg}}, a {{Code|parametr}}, to funkcja w jakimś module lub inna wartość, a {{Code|argsfun}}, to tabela argumentów ramki, dziecka, w kodzie {{lpg|Lua}} w {{lpr|Scribunto}}, w wikikodzie w szablonie rodzicu. Gdy ta funkcja zwróci wartość logiczną odpowiadającą {{Code|true}}, to wtedy zwraca {{Code|tak}}, w przeciwnym wypadku {{Code|nil}}. ==== Procedura zwracając wartość z ramki wiki kodu ==== Ta funkcja jest wykorzystywana, gdy jest uruchamiana w ramce, gdy mamy parametry ramki: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTakCiąg| Wartość |nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wyspecjalizowana=tak}} </syntaxhighlight> Podobnie jest z funkcją {{Code|{{sr|#p.CzyTak|p=Parametry}}}}. A jak jest tworzony parametr zmiennej z powyższych wywołań, to jest powiedziane powyżej. === Atrapa funkcji parametrów ramki rodzica (szablonu) === Równie dobrze możemy zefiniować atrapę funkcji {{Code|frame.getParent}}, wtedy: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul["CzyTakCiąg"]{args={ [1]=" Wartość ", [2]="", ["nazwa1"]="wartość1", ["nazwa2"]="wartość2", [3]="wartość3", [4]="wartość4", ["wyspecjalizowana"]="tak", }, getParent=function()end, }; </syntaxhighlight> Czasami tak potrzeba robić, by ominąc zabezpieczenia pewnych funkcji, nawet tutaj. == {{Śródtytuł|p["CzyTakCiąg"]}}{{Code|p["CzyTakCiąg"]}} == W tej funkcji parametry mogą być zbierane w osobnych parametrach lub w jednej tablicy albo ta funkcja może być uruchomiona w ramce. Funkcja do swojego działania wykorzystuje do tego {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}} i {{LinkŚródtytuł|p.CzyTak}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["CzyTakCiąg"]=function(...)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|zmienna}} lub {{Code|1}}| _1 = Funkcja - typ: {{Code|function}}, lub inna wartość sprawdzana, np. {{Code|string}}, czy odpowiada wartości prawdziwej. | 2 = {{Code|parametry}} lub {{Code|2}} | _2 = Parametry funkcji sprawdzanej, gdy zmienna: {{Code|zmienna}}, jest funkcją. }} Funkcja, gdy jest uruchamiania w ramce, to wtedy elementem sprawdzany jest tablica ramki tablicy transportu modułu, a ponieważ ma ona w sobie zdefiniowaną funkcję: {{LzLua|frame:getParent}}, to wtedy jest uruchamiania funkcja: {{LinkŚródtytuł|CzyTakSilnik}}, z drugim parametrem: {{Code|CzyTakCiąg}}. === Funkcja uruchamiania w ramce wiki kodu === ==== Normalne znaki z odstępami ==== Jeżeli ta funkcja jest uruchomiona w ramce, np. w postaci: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTakCiąg| Wartość |wyspecjalizowana=tak}} </syntaxhighlight> ==== Ciąg składający się z samych odstępów - wartość zwracana ==== To w tym przypadku funkcja zwraca wartość {{Code|tak}}, tak jak funkcja {{LinkŚródtytuł|p.CzyTak}}, a w przypadku: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTakCiąg| |wyspecjalizowana=tak}} </syntaxhighlight> To w tym przypadku funkcja zwraca wartość równą ciągowi pustemu, mimo że funkcja {{LinkŚródtytuł|p.CzyTak}} zwróci wartość {{Code|tak}}. === Funkcja uruchamiania w postaci funkcji bibliotecznej === ==== Ciąg z treściwymi znakami z odstępami ==== Podobnie jest w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, czyli: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul["CzyTakCiąg"](" Wartość "); </syntaxhighlight> Ta funkcja zwróci wartość {{Code|tak}}. ==== Brak takich znaków, tylko same odstępy ==== A teraz inny przykład: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul["CzyTakCiąg"](" "); </syntaxhighlight> Ta funkcja zwróci wartość {{Code|nil}}. == {{Śródtytuł|p.CzyTak}}{{Code|p.CzyTak}} == W tej funkcji parametry mogą być zbierane w osobnych parametrach lub w jednej tablicy albo ta funkcja może być uruchomiona w ramce. Funkcja do swojego działania nie wykorzystuje do tego {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}}, tak jak to robi {{LinkŚródtytuł|p["CzyTakCiąg"]}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.CzyTak=function(...)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|1}} lub {{Code|zmienna}} | _1 = Sprawdzana zmienna, może być to funkcją. | 2 = {{Code|2}} lub {{Code|parametry}} | _2 = Parametry funkcji, może być to tablica parametrów, jest ona wykorzystywana, gdy powyższy element jest funkcją. }} W przypadku uruchamiania funkcji w ramce, wtedy parametrem pierwszym tej funkcji jest tablica ramka wikikodu {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, więc ma w sobie zdefiniowaną funkcję: {{LzLua|frame:getParent}}, stąd wtedy jest stosowana funkcja lokalna: {{LinkŚródtytuł|CzyTakSilnik}}, z drugim parametrem: {{Code|CzyTak}}. === Funkcja działająca w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} === ==== Ciąg niepusty z treściwymi znakami z odstępami ==== Jeżeli ta funkcja jest uruchomiona w ramce, np. w postaci: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTak| Wartość |wyspecjalizowana=tak}} </syntaxhighlight> To w tym przypadku funkcja zwraca wartość {{Code|tak}}, tak jak funkcja {{LinkŚródtytuł|p["CzyTakCiąg"]}} ==== Ciąg z samych znaków odstępów ==== A w przypadku: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTak| |wyspecjalizowana=tak}} </syntaxhighlight> To w tym przypadku funkcja zwraca wartość równą ciągowi {{Code|tak}}, mimo że funkcja {{LinkŚródtytuł|p["CzyTakCiąg"]}} zwróci wartość równoważną ciągowi pustemu. ==== Ciąg pusty - jego rewidowanie ==== <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTak||wyspecjalizowana=tak}} </syntaxhighlight> Ta funkcja uruchomiona w ramce w wikikodzie zwraca wartość równą ciągowi pustemu, tak samo, jak funkcja {{LinkŚródtytuł|p["CzyTakCiąg"]}}. === W postaci funkcji bibliotecznej - nie ramki === ==== Treściwe znaki z odstępami ==== Podobnie jest w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, czyli: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul.CzyTak(" Wartość "); </syntaxhighlight> Ta funkcja zwróci wartość {{Code|tak}}. ==== Same odstępy ==== A teraz inny przykład: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul.CzyTak(" "); </syntaxhighlight> Ta funkcja zwróci wartość {{Code|tak}}, niezależnie, czy tym ciągiem jest szereg składający się z samych znaków odstępów. ==== Ciąg pusty ==== A teraz inny przykład: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul.CzyTak(""); </syntaxhighlight> Ta funkcja wtedy zwróci wartość równą {{Code|nil}} w kodzie {{lpg|Lua}} w {{lpg|Lua|Scribunto}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> m9nvcqfibtaqcgqs3xycv70mf6gcx42 555782 555781 2026-09-12T01:14:10Z Persino 2851 /* p.CzyTak */ 555782 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == Funkcje prawdy i fałszu - ogólne przedstawienie == W funkcjach: {{LinkŚródtytuł|p["CzyTakCiąg"]}} i {{LinkŚródtytuł|p.CzyTak}}, uruchomione w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, muszą posiadać dodatkowo parametr {{Parametr|wyspecjalizowana|tak}}, aby dało się w je wsadzić skutecznie parametry do samej tej ramki dziecka, a nie używać parametry szablonu rodzica. === Wzajemna zależność === W tej pierwszej funkcji jest wykorzystywana ta druga, w której w tej pierwszej w parametrze pierwszym, w przypadku łańcuchów znakowych wykorzystywana jest funkcja do usuwania dolnych myślników i odstępów na końcach, a potem jest uruchamiana ta druga. === Uzyskiwane wyniki w zależności od sprawdzanego parametru - różne typy wartości pierwszej zmiennej === ==== Parametr typu {{Code|string}} ==== Te funkcje rozważane tutaj powiedziane powyżej w wikikodzie w szablonie rodzicu, czy w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, służą do sprawdzenia, czy wartość, czy jest nierówna ciągowi uzyskanemu pustemu, w przypadku tej pierwszej funkcji, a w przypadku drugiej, czy nie jest ciągiem pustym. ==== Typu {{Code|number}} ==== Jeżeli jest to liczba, to czy jest nie równa {{Code|0}}. ==== Typu {{Code|boolean}} ==== Czy wartością logiczną jest jako {{Code|true}}. ==== Typu {{Code|table}} ==== Dla tabel, czy jest niepustą tabelą. ==== Typu {{Code|function}} ==== Ale za to w przypadku funkcji, czy funkcja o nazwie {{Code|zmienna}} z parametrami {{Code|parametry}}, czy zwraca wartość odpowiadająca {{Code|true}}, === Zwracane wartości === Jeżeli funkcja zwróci wartość odpowiadająca prawdziwej, to ta funkcja zwróci znak {{Code|tak}}, w przeciwnym wypadku w wikikodzie zwraca wartość pustą, a w kodzie, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, wartość {{Code|nil}}. == {{Śródtytuł|CzyTakSilnik}}{{Code|CzyTakSilnik}} == Funkcja pomocnicza służąca do liczenia wartości logicznej {{Code|tak}} lub {{Code|nil}} parametrów ramki, w wikikodzie, funkcji {{lpg|lua}} w {{lpr|Lua|Scribunto}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function CzyTakSilnik(args,funkcja)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|args}} | _1 = Tablica elementów z pierwszym elementem do sprawdzenia, z drugim jako nazwa modułu z funkcjami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w takim przypadku ten pierwszy element jest nazwą funkcji, który w połączeniu z nazwą modułu daje referencję do funkcji. | 2 = {{Code|funkcja}} | _2 = Funkcja, za pomocą której sprawdzamy logiczność pierwszego elementu tej tablicy. }} === Możliwe wartości drugiego parametru - funkcji === Możliwymi wartościami funkcji parametru {{Code|funkcja}} jest {{Code|CzyTak}} lub {{Code|CzyTakCiąg}} (ta funkcja wykorzystuje funkcję {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}} do swojego argumentu, który służy do sprawdzania, jaki spełnia warunek). === Sprawdzanie prawdziwości funkcji z jej zrzucanej, wartości === Gdy istnieje parametr tablicy {{Code|args}} funkcji o parametrze nienazwanym {{Code|args[2]}}, który jest nazwą modułu z funkcjami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a samą funkcją jest {{Code|args[1]}}, to tak utworzona funkcja jest zmienną {{Code|parametr}}, a jeżeli jej nie ma, to ona przyjmuje wartość {{Code|args[1]}}, a gdy jednak istnieje ten drugi element, to na podstawie którego zbierane są argumenty ramki nazwane jak nazwane, tzn. klucze i ich wartości przypisuje, a w przypadku parametrów nienazwanych (nie są zbierane elementy w tej tablicy o kluczach o wartości: {{Code|1}} i {{Code|2}}), a te inne klucze są pomniejszane o dwa, w ten sposób jest utworzona tabela {{Code|argsfun}}. === Brak składowej drugiej tablicy, co świadczy, że nie sprawdzamy funkcji, tylko co innego === ==== Rewidowana jest liczba lub ciąg znaków liczba ==== Gdy nie ma składowej drugiej tablicy, tzn. {{Code|args[2]}}, to wtedy funkcja sprawdza, czy {{Code|args[1]}} to jest liczba w łańcuchu znakowym, lub bezpośrednio liczba. ==== Typ - ciag znaków ==== Jeżeli nie da się jej przetransformować na liczbę, to sprawdza, czy typem tej zmiennej jest {{Code|string}} (czy typem jest szereg). Po działaniu funkcją: {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}}, jeśli ma wtedy wartość: {{Code|"true"}}, wtedy ta rozważana na samym początku zmienna przyjmuje wartość {{Code|true}}, {{Code|"false"}}, wtedy {{Code|false}}, {{Code|"nil"}}, wtedy {{Code|nil}}. A jeżeli ta zmienna żadnej tej wartości nie przyjmuje z tych wartości, to wtedy jest transformowana na liczbę, jeżeli da się tą operację dokonać. === Walidacja przygotowanych parametrów podaną funkcją === Na samym końcu jest liczona wartość logiczna z przygotowanymi parametrami, według jednej z dwóch specjalnie przygotowanych funkcji. ==== Przypadek uruchamiania funkcji w kodzie ==== W postaci wywołania ogólnego: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); return (parametry_modul[funkcja]{[1]=parametr,[2]=argsfun,})and "tak" or nil; </syntaxhighlight> Gdzie {{Code|funkcja}}, to {{Code|CzyTak}} lub {{Code|CzyTakCiąg}}, a {{Code|parametr}}, to funkcja w jakimś module lub inna wartość, a {{Code|argsfun}}, to tabela argumentów ramki, dziecka, w kodzie {{lpg|Lua}} w {{lpr|Scribunto}}, w wikikodzie w szablonie rodzicu. Gdy ta funkcja zwróci wartość logiczną odpowiadającą {{Code|true}}, to wtedy zwraca {{Code|tak}}, w przeciwnym wypadku {{Code|nil}}. ==== Procedura zwracając wartość z ramki wiki kodu ==== Ta funkcja jest wykorzystywana, gdy jest uruchamiana w ramce, gdy mamy parametry ramki: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTakCiąg| Wartość |nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wyspecjalizowana=tak}} </syntaxhighlight> Podobnie jest z funkcją {{Code|{{sr|#p.CzyTak|p=Parametry}}}}. A jak jest tworzony parametr zmiennej z powyższych wywołań, to jest powiedziane powyżej. === Atrapa funkcji parametrów ramki rodzica (szablonu) === Równie dobrze możemy zefiniować atrapę funkcji {{Code|frame.getParent}}, wtedy: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul["CzyTakCiąg"]{args={ [1]=" Wartość ", [2]="", ["nazwa1"]="wartość1", ["nazwa2"]="wartość2", [3]="wartość3", [4]="wartość4", ["wyspecjalizowana"]="tak", }, getParent=function()end, }; </syntaxhighlight> Czasami tak potrzeba robić, by ominąc zabezpieczenia pewnych funkcji, nawet tutaj. == {{Śródtytuł|p["CzyTakCiąg"]}}{{Code|p["CzyTakCiąg"]}} == W tej funkcji parametry mogą być zbierane w osobnych parametrach lub w jednej tablicy albo ta funkcja może być uruchomiona w ramce. Funkcja do swojego działania wykorzystuje do tego {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}} i {{LinkŚródtytuł|p.CzyTak}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["CzyTakCiąg"]=function(...)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|zmienna}} lub {{Code|1}}| _1 = Funkcja - typ: {{Code|function}}, lub inna wartość sprawdzana, np. {{Code|string}}, czy odpowiada wartości prawdziwej. | 2 = {{Code|parametry}} lub {{Code|2}} | _2 = Parametry funkcji sprawdzanej, gdy zmienna: {{Code|zmienna}}, jest funkcją. }} Funkcja, gdy jest uruchamiania w ramce, to wtedy elementem sprawdzany jest tablica ramki tablicy transportu modułu, a ponieważ ma ona w sobie zdefiniowaną funkcję: {{LzLua|frame:getParent}}, to wtedy jest uruchamiania funkcja: {{LinkŚródtytuł|CzyTakSilnik}}, z drugim parametrem: {{Code|CzyTakCiąg}}. === Funkcja uruchamiania w ramce wiki kodu === ==== Normalne znaki z odstępami ==== Jeżeli ta funkcja jest uruchomiona w ramce, np. w postaci: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTakCiąg| Wartość |wyspecjalizowana=tak}} </syntaxhighlight> ==== Ciąg składający się z samych odstępów - wartość zwracana ==== To w tym przypadku funkcja zwraca wartość {{Code|tak}}, tak jak funkcja {{LinkŚródtytuł|p.CzyTak}}, a w przypadku: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTakCiąg| |wyspecjalizowana=tak}} </syntaxhighlight> To w tym przypadku funkcja zwraca wartość równą ciągowi pustemu, mimo że funkcja {{LinkŚródtytuł|p.CzyTak}} zwróci wartość {{Code|tak}}. === Funkcja uruchamiania w postaci funkcji bibliotecznej === ==== Ciąg z treściwymi znakami z odstępami ==== Podobnie jest w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, czyli: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul["CzyTakCiąg"](" Wartość "); </syntaxhighlight> Ta funkcja zwróci wartość {{Code|tak}}. ==== Brak takich znaków, tylko same odstępy ==== A teraz inny przykład: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul["CzyTakCiąg"](" "); </syntaxhighlight> Ta funkcja zwróci wartość {{Code|nil}}. == {{Śródtytuł|p.CzyTak}}{{Code|p.CzyTak}} == W tej funkcji parametry mogą być zbierane w osobnych parametrach lub w jednej tablicy albo ta funkcja może być uruchomiona w ramce. Funkcja do swojego działania nie wykorzystuje do tego {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}}, tak jak to robi {{LinkŚródtytuł|p["CzyTakCiąg"]}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.CzyTak=function(...)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|zmienna}} lub {{Code|1}} | _1 = Sprawdzana zmienna, może być to funkcją. | 2 = {{Code|parametry}} lub {{Code|2}} | _2 = Parametry funkcji, może być to tablica parametrów, jest ona wykorzystywana, gdy powyższy element jest funkcją. }} W przypadku uruchamiania funkcji w ramce, wtedy parametrem pierwszym tej funkcji jest tablica ramka wikikodu {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, więc ma w sobie zdefiniowaną funkcję: {{LzLua|frame:getParent}}, stąd wtedy jest stosowana funkcja lokalna: {{LinkŚródtytuł|CzyTakSilnik}}, z drugim parametrem: {{Code|CzyTak}}. === Funkcja działająca w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} === ==== Ciąg niepusty z treściwymi znakami z odstępami ==== Jeżeli ta funkcja jest uruchomiona w ramce, np. w postaci: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTak| Wartość |wyspecjalizowana=tak}} </syntaxhighlight> To w tym przypadku funkcja zwraca wartość {{Code|tak}}, tak jak funkcja {{LinkŚródtytuł|p["CzyTakCiąg"]}} ==== Ciąg z samych znaków odstępów ==== A w przypadku: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTak| |wyspecjalizowana=tak}} </syntaxhighlight> To w tym przypadku funkcja zwraca wartość równą ciągowi {{Code|tak}}, mimo że funkcja {{LinkŚródtytuł|p["CzyTakCiąg"]}} zwróci wartość równoważną ciągowi pustemu. ==== Ciąg pusty - jego rewidowanie ==== <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTak||wyspecjalizowana=tak}} </syntaxhighlight> Ta funkcja uruchomiona w ramce w wikikodzie zwraca wartość równą ciągowi pustemu, tak samo, jak funkcja {{LinkŚródtytuł|p["CzyTakCiąg"]}}. === W postaci funkcji bibliotecznej - nie ramki === ==== Treściwe znaki z odstępami ==== Podobnie jest w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, czyli: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul.CzyTak(" Wartość "); </syntaxhighlight> Ta funkcja zwróci wartość {{Code|tak}}. ==== Same odstępy ==== A teraz inny przykład: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul.CzyTak(" "); </syntaxhighlight> Ta funkcja zwróci wartość {{Code|tak}}, niezależnie, czy tym ciągiem jest szereg składający się z samych znaków odstępów. ==== Ciąg pusty ==== A teraz inny przykład: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul.CzyTak(""); </syntaxhighlight> Ta funkcja wtedy zwróci wartość równą {{Code|nil}} w kodzie {{lpg|Lua}} w {{lpg|Lua|Scribunto}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 0e2m5befe06s3sta3686o7wmg8kr1xv 555784 555782 2026-09-12T01:24:03Z Persino 2851 /* CzyTakSilnik */ 555784 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == Funkcje prawdy i fałszu - ogólne przedstawienie == W funkcjach: {{LinkŚródtytuł|p["CzyTakCiąg"]}} i {{LinkŚródtytuł|p.CzyTak}}, uruchomione w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, muszą posiadać dodatkowo parametr {{Parametr|wyspecjalizowana|tak}}, aby dało się w je wsadzić skutecznie parametry do samej tej ramki dziecka, a nie używać parametry szablonu rodzica. === Wzajemna zależność === W tej pierwszej funkcji jest wykorzystywana ta druga, w której w tej pierwszej w parametrze pierwszym, w przypadku łańcuchów znakowych wykorzystywana jest funkcja do usuwania dolnych myślników i odstępów na końcach, a potem jest uruchamiana ta druga. === Uzyskiwane wyniki w zależności od sprawdzanego parametru - różne typy wartości pierwszej zmiennej === ==== Parametr typu {{Code|string}} ==== Te funkcje rozważane tutaj powiedziane powyżej w wikikodzie w szablonie rodzicu, czy w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, służą do sprawdzenia, czy wartość, czy jest nierówna ciągowi uzyskanemu pustemu, w przypadku tej pierwszej funkcji, a w przypadku drugiej, czy nie jest ciągiem pustym. ==== Typu {{Code|number}} ==== Jeżeli jest to liczba, to czy jest nie równa {{Code|0}}. ==== Typu {{Code|boolean}} ==== Czy wartością logiczną jest jako {{Code|true}}. ==== Typu {{Code|table}} ==== Dla tabel, czy jest niepustą tabelą. ==== Typu {{Code|function}} ==== Ale za to w przypadku funkcji, czy funkcja o nazwie {{Code|zmienna}} z parametrami {{Code|parametry}}, czy zwraca wartość odpowiadająca {{Code|true}}, === Zwracane wartości === Jeżeli funkcja zwróci wartość odpowiadająca prawdziwej, to ta funkcja zwróci znak {{Code|tak}}, w przeciwnym wypadku w wikikodzie zwraca wartość pustą, a w kodzie, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, wartość {{Code|nil}}. == {{Śródtytuł|CzyTakSilnik}}{{Code|CzyTakSilnik}} == Funkcja pomocnicza służąca do liczenia wartości logicznej {{Code|tak}} lub {{Code|nil}} parametrów ramki, w wikikodzie, funkcji {{lpg|lua}} w {{lpr|Lua|Scribunto}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function CzyTakSilnik(args,funkcja)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|args}} | _1 = Tablica elementów z pierwszym elementem do sprawdzenia, z drugim jako nazwa modułu z funkcjami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w takim przypadku ten pierwszy element jest nazwą funkcji, który w połączeniu z nazwą modułu daje referencję do funkcji. | 2 = {{Code|funkcja}} | _2 = Funkcja, za pomocą której sprawdzamy logiczność pierwszego elementu tej tablicy. }} === Możliwe wartości drugiego parametru - funkcji === Możliwymi wartościami funkcji parametru {{Code|funkcja}} jest {{Code|CzyTak}} lub {{Code|CzyTakCiąg}} (ta funkcja wykorzystuje funkcję {{LinkŚródtytuł|p["Odstępy"]|Parametry/Tom VI}} do swojego argumentu, który służy do sprawdzania, jaki spełnia warunek). === Sprawdzanie prawdziwości funkcji z jej zrzucanej, wartości === Gdy istnieje parametr tablicy {{Code|args}} funkcji o parametrze nienazwanym {{Code|args[2]}}, który jest nazwą modułu z funkcjami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a samą funkcją jest {{Code|args[1]}}, to tak utworzona funkcja jest zmienną {{Code|parametr}}, a jeżeli jej nie ma, to ona przyjmuje wartość {{Code|args[1]}}, a gdy jednak istnieje ten drugi element, to na podstawie którego zbierane są argumenty ramki nazwane jak nazwane, tzn. klucze i ich wartości przypisuje, a w przypadku parametrów nienazwanych (nie są zbierane elementy w tej tablicy o kluczach o wartości: {{Code|1}} i {{Code|2}}), a te inne klucze są pomniejszane o dwa, w ten sposób jest utworzona tabela {{Code|argsfun}}. === Brak składowej drugiej tablicy, co świadczy, że nie sprawdzamy funkcji, tylko co innego === ==== Rewidowana jest liczba lub ciąg znaków liczba ==== Gdy nie ma składowej drugiej tablicy, tzn. {{Code|args[2]}}, to wtedy funkcja sprawdza, czy {{Code|args[1]}} to jest liczba w łańcuchu znakowym, lub bezpośrednio liczba. ==== Typ - ciag znaków ==== Jeżeli nie da się jej przetransformować na liczbę, to sprawdza, czy typem tej zmiennej jest {{Code|string}} (czy typem jest szereg). Po działaniu funkcją: {{LinkŚródtytuł|p["Odstępy"]|Parametry/Tom VI}}, jeśli ma wtedy wartość: {{Code|"true"}}, wtedy ta rozważana na samym początku zmienna przyjmuje wartość {{Code|true}}, {{Code|"false"}}, wtedy {{Code|false}}, {{Code|"nil"}}, wtedy {{Code|nil}}. A jeżeli ta zmienna żadnej tej wartości nie przyjmuje z tych wartości, to wtedy jest transformowana na liczbę, jeżeli da się tą operację dokonać. === Walidacja przygotowanych parametrów podaną funkcją === Na samym końcu jest liczona wartość logiczna z przygotowanymi parametrami, według jednej z dwóch specjalnie przygotowanych funkcji. ==== Przypadek uruchamiania funkcji w kodzie ==== W postaci wywołania ogólnego: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); return (parametry_modul[funkcja]{[1]=parametr,[2]=argsfun,})and "tak" or nil; </syntaxhighlight> Gdzie {{Code|funkcja}}, to {{Code|CzyTak}} lub {{Code|CzyTakCiąg}}, a {{Code|parametr}}, to funkcja w jakimś module lub inna wartość, a {{Code|argsfun}}, to tabela argumentów ramki, dziecka, w kodzie {{lpg|Lua}} w {{lpr|Scribunto}}, w wikikodzie w szablonie rodzicu. Gdy ta funkcja zwróci wartość logiczną odpowiadającą {{Code|true}}, to wtedy zwraca {{Code|tak}}, w przeciwnym wypadku {{Code|nil}}. ==== Procedura zwracając wartość z ramki wiki kodu ==== Ta funkcja jest wykorzystywana, gdy jest uruchamiana w ramce, gdy mamy parametry ramki: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTakCiąg| Wartość |nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wyspecjalizowana=tak}} </syntaxhighlight> Podobnie jest z funkcją {{Code|{{sr|#p.CzyTak|p=Parametry}}}}. A jak jest tworzony parametr zmiennej z powyższych wywołań, to jest powiedziane powyżej. === Atrapa funkcji parametrów ramki rodzica (szablonu) === Równie dobrze możemy zefiniować atrapę funkcji {{Code|frame.getParent}}, wtedy: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul["CzyTakCiąg"]{args={ [1]=" Wartość ", [2]="", ["nazwa1"]="wartość1", ["nazwa2"]="wartość2", [3]="wartość3", [4]="wartość4", ["wyspecjalizowana"]="tak", }, getParent=function()end, }; </syntaxhighlight> Czasami tak potrzeba robić, by ominąc zabezpieczenia pewnych funkcji, nawet tutaj. == {{Śródtytuł|p["CzyTakCiąg"]}}{{Code|p["CzyTakCiąg"]}} == W tej funkcji parametry mogą być zbierane w osobnych parametrach lub w jednej tablicy albo ta funkcja może być uruchomiona w ramce. Funkcja do swojego działania wykorzystuje do tego {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}} i {{LinkŚródtytuł|p.CzyTak}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["CzyTakCiąg"]=function(...)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|zmienna}} lub {{Code|1}}| _1 = Funkcja - typ: {{Code|function}}, lub inna wartość sprawdzana, np. {{Code|string}}, czy odpowiada wartości prawdziwej. | 2 = {{Code|parametry}} lub {{Code|2}} | _2 = Parametry funkcji sprawdzanej, gdy zmienna: {{Code|zmienna}}, jest funkcją. }} Funkcja, gdy jest uruchamiania w ramce, to wtedy elementem sprawdzany jest tablica ramki tablicy transportu modułu, a ponieważ ma ona w sobie zdefiniowaną funkcję: {{LzLua|frame:getParent}}, to wtedy jest uruchamiania funkcja: {{LinkŚródtytuł|CzyTakSilnik}}, z drugim parametrem: {{Code|CzyTakCiąg}}. === Funkcja uruchamiania w ramce wiki kodu === ==== Normalne znaki z odstępami ==== Jeżeli ta funkcja jest uruchomiona w ramce, np. w postaci: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTakCiąg| Wartość |wyspecjalizowana=tak}} </syntaxhighlight> ==== Ciąg składający się z samych odstępów - wartość zwracana ==== To w tym przypadku funkcja zwraca wartość {{Code|tak}}, tak jak funkcja {{LinkŚródtytuł|p.CzyTak}}, a w przypadku: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTakCiąg| |wyspecjalizowana=tak}} </syntaxhighlight> To w tym przypadku funkcja zwraca wartość równą ciągowi pustemu, mimo że funkcja {{LinkŚródtytuł|p.CzyTak}} zwróci wartość {{Code|tak}}. === Funkcja uruchamiania w postaci funkcji bibliotecznej === ==== Ciąg z treściwymi znakami z odstępami ==== Podobnie jest w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, czyli: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul["CzyTakCiąg"](" Wartość "); </syntaxhighlight> Ta funkcja zwróci wartość {{Code|tak}}. ==== Brak takich znaków, tylko same odstępy ==== A teraz inny przykład: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul["CzyTakCiąg"](" "); </syntaxhighlight> Ta funkcja zwróci wartość {{Code|nil}}. == {{Śródtytuł|p.CzyTak}}{{Code|p.CzyTak}} == W tej funkcji parametry mogą być zbierane w osobnych parametrach lub w jednej tablicy albo ta funkcja może być uruchomiona w ramce. Funkcja do swojego działania nie wykorzystuje do tego {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}}, tak jak to robi {{LinkŚródtytuł|p["CzyTakCiąg"]}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.CzyTak=function(...)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|zmienna}} lub {{Code|1}} | _1 = Sprawdzana zmienna, może być to funkcją. | 2 = {{Code|parametry}} lub {{Code|2}} | _2 = Parametry funkcji, może być to tablica parametrów, jest ona wykorzystywana, gdy powyższy element jest funkcją. }} W przypadku uruchamiania funkcji w ramce, wtedy parametrem pierwszym tej funkcji jest tablica ramka wikikodu {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, więc ma w sobie zdefiniowaną funkcję: {{LzLua|frame:getParent}}, stąd wtedy jest stosowana funkcja lokalna: {{LinkŚródtytuł|CzyTakSilnik}}, z drugim parametrem: {{Code|CzyTak}}. === Funkcja działająca w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} === ==== Ciąg niepusty z treściwymi znakami z odstępami ==== Jeżeli ta funkcja jest uruchomiona w ramce, np. w postaci: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTak| Wartość |wyspecjalizowana=tak}} </syntaxhighlight> To w tym przypadku funkcja zwraca wartość {{Code|tak}}, tak jak funkcja {{LinkŚródtytuł|p["CzyTakCiąg"]}} ==== Ciąg z samych znaków odstępów ==== A w przypadku: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTak| |wyspecjalizowana=tak}} </syntaxhighlight> To w tym przypadku funkcja zwraca wartość równą ciągowi {{Code|tak}}, mimo że funkcja {{LinkŚródtytuł|p["CzyTakCiąg"]}} zwróci wartość równoważną ciągowi pustemu. ==== Ciąg pusty - jego rewidowanie ==== <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTak||wyspecjalizowana=tak}} </syntaxhighlight> Ta funkcja uruchomiona w ramce w wikikodzie zwraca wartość równą ciągowi pustemu, tak samo, jak funkcja {{LinkŚródtytuł|p["CzyTakCiąg"]}}. === W postaci funkcji bibliotecznej - nie ramki === ==== Treściwe znaki z odstępami ==== Podobnie jest w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, czyli: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul.CzyTak(" Wartość "); </syntaxhighlight> Ta funkcja zwróci wartość {{Code|tak}}. ==== Same odstępy ==== A teraz inny przykład: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul.CzyTak(" "); </syntaxhighlight> Ta funkcja zwróci wartość {{Code|tak}}, niezależnie, czy tym ciągiem jest szereg składający się z samych znaków odstępów. ==== Ciąg pusty ==== A teraz inny przykład: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul.CzyTak(""); </syntaxhighlight> Ta funkcja wtedy zwróci wartość równą {{Code|nil}} w kodzie {{lpg|Lua}} w {{lpg|Lua|Scribunto}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> h9bk91if7ac09g3c2okeyctartbzbtd 555785 555784 2026-09-12T01:28:47Z Persino 2851 /* p["CzyTakCiąg"] */ 555785 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == Funkcje prawdy i fałszu - ogólne przedstawienie == W funkcjach: {{LinkŚródtytuł|p["CzyTakCiąg"]}} i {{LinkŚródtytuł|p.CzyTak}}, uruchomione w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, muszą posiadać dodatkowo parametr {{Parametr|wyspecjalizowana|tak}}, aby dało się w je wsadzić skutecznie parametry do samej tej ramki dziecka, a nie używać parametry szablonu rodzica. === Wzajemna zależność === W tej pierwszej funkcji jest wykorzystywana ta druga, w której w tej pierwszej w parametrze pierwszym, w przypadku łańcuchów znakowych wykorzystywana jest funkcja do usuwania dolnych myślników i odstępów na końcach, a potem jest uruchamiana ta druga. === Uzyskiwane wyniki w zależności od sprawdzanego parametru - różne typy wartości pierwszej zmiennej === ==== Parametr typu {{Code|string}} ==== Te funkcje rozważane tutaj powiedziane powyżej w wikikodzie w szablonie rodzicu, czy w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, służą do sprawdzenia, czy wartość, czy jest nierówna ciągowi uzyskanemu pustemu, w przypadku tej pierwszej funkcji, a w przypadku drugiej, czy nie jest ciągiem pustym. ==== Typu {{Code|number}} ==== Jeżeli jest to liczba, to czy jest nie równa {{Code|0}}. ==== Typu {{Code|boolean}} ==== Czy wartością logiczną jest jako {{Code|true}}. ==== Typu {{Code|table}} ==== Dla tabel, czy jest niepustą tabelą. ==== Typu {{Code|function}} ==== Ale za to w przypadku funkcji, czy funkcja o nazwie {{Code|zmienna}} z parametrami {{Code|parametry}}, czy zwraca wartość odpowiadająca {{Code|true}}, === Zwracane wartości === Jeżeli funkcja zwróci wartość odpowiadająca prawdziwej, to ta funkcja zwróci znak {{Code|tak}}, w przeciwnym wypadku w wikikodzie zwraca wartość pustą, a w kodzie, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, wartość {{Code|nil}}. == {{Śródtytuł|CzyTakSilnik}}{{Code|CzyTakSilnik}} == Funkcja pomocnicza służąca do liczenia wartości logicznej {{Code|tak}} lub {{Code|nil}} parametrów ramki, w wikikodzie, funkcji {{lpg|lua}} w {{lpr|Lua|Scribunto}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function CzyTakSilnik(args,funkcja)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|args}} | _1 = Tablica elementów z pierwszym elementem do sprawdzenia, z drugim jako nazwa modułu z funkcjami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w takim przypadku ten pierwszy element jest nazwą funkcji, który w połączeniu z nazwą modułu daje referencję do funkcji. | 2 = {{Code|funkcja}} | _2 = Funkcja, za pomocą której sprawdzamy logiczność pierwszego elementu tej tablicy. }} === Możliwe wartości drugiego parametru - funkcji === Możliwymi wartościami funkcji parametru {{Code|funkcja}} jest {{Code|CzyTak}} lub {{Code|CzyTakCiąg}} (ta funkcja wykorzystuje funkcję {{LinkŚródtytuł|p["Odstępy"]|Parametry/Tom VI}} do swojego argumentu, który służy do sprawdzania, jaki spełnia warunek). === Sprawdzanie prawdziwości funkcji z jej zrzucanej, wartości === Gdy istnieje parametr tablicy {{Code|args}} funkcji o parametrze nienazwanym {{Code|args[2]}}, który jest nazwą modułu z funkcjami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a samą funkcją jest {{Code|args[1]}}, to tak utworzona funkcja jest zmienną {{Code|parametr}}, a jeżeli jej nie ma, to ona przyjmuje wartość {{Code|args[1]}}, a gdy jednak istnieje ten drugi element, to na podstawie którego zbierane są argumenty ramki nazwane jak nazwane, tzn. klucze i ich wartości przypisuje, a w przypadku parametrów nienazwanych (nie są zbierane elementy w tej tablicy o kluczach o wartości: {{Code|1}} i {{Code|2}}), a te inne klucze są pomniejszane o dwa, w ten sposób jest utworzona tabela {{Code|argsfun}}. === Brak składowej drugiej tablicy, co świadczy, że nie sprawdzamy funkcji, tylko co innego === ==== Rewidowana jest liczba lub ciąg znaków liczba ==== Gdy nie ma składowej drugiej tablicy, tzn. {{Code|args[2]}}, to wtedy funkcja sprawdza, czy {{Code|args[1]}} to jest liczba w łańcuchu znakowym, lub bezpośrednio liczba. ==== Typ - ciag znaków ==== Jeżeli nie da się jej przetransformować na liczbę, to sprawdza, czy typem tej zmiennej jest {{Code|string}} (czy typem jest szereg). Po działaniu funkcją: {{LinkŚródtytuł|p["Odstępy"]|Parametry/Tom VI}}, jeśli ma wtedy wartość: {{Code|"true"}}, wtedy ta rozważana na samym początku zmienna przyjmuje wartość {{Code|true}}, {{Code|"false"}}, wtedy {{Code|false}}, {{Code|"nil"}}, wtedy {{Code|nil}}. A jeżeli ta zmienna żadnej tej wartości nie przyjmuje z tych wartości, to wtedy jest transformowana na liczbę, jeżeli da się tą operację dokonać. === Walidacja przygotowanych parametrów podaną funkcją === Na samym końcu jest liczona wartość logiczna z przygotowanymi parametrami, według jednej z dwóch specjalnie przygotowanych funkcji. ==== Przypadek uruchamiania funkcji w kodzie ==== W postaci wywołania ogólnego: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); return (parametry_modul[funkcja]{[1]=parametr,[2]=argsfun,})and "tak" or nil; </syntaxhighlight> Gdzie {{Code|funkcja}}, to {{Code|CzyTak}} lub {{Code|CzyTakCiąg}}, a {{Code|parametr}}, to funkcja w jakimś module lub inna wartość, a {{Code|argsfun}}, to tabela argumentów ramki, dziecka, w kodzie {{lpg|Lua}} w {{lpr|Scribunto}}, w wikikodzie w szablonie rodzicu. Gdy ta funkcja zwróci wartość logiczną odpowiadającą {{Code|true}}, to wtedy zwraca {{Code|tak}}, w przeciwnym wypadku {{Code|nil}}. ==== Procedura zwracając wartość z ramki wiki kodu ==== Ta funkcja jest wykorzystywana, gdy jest uruchamiana w ramce, gdy mamy parametry ramki: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTakCiąg| Wartość |nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wyspecjalizowana=tak}} </syntaxhighlight> Podobnie jest z funkcją {{Code|{{sr|#p.CzyTak|p=Parametry}}}}. A jak jest tworzony parametr zmiennej z powyższych wywołań, to jest powiedziane powyżej. === Atrapa funkcji parametrów ramki rodzica (szablonu) === Równie dobrze możemy zefiniować atrapę funkcji {{Code|frame.getParent}}, wtedy: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul["CzyTakCiąg"]{args={ [1]=" Wartość ", [2]="", ["nazwa1"]="wartość1", ["nazwa2"]="wartość2", [3]="wartość3", [4]="wartość4", ["wyspecjalizowana"]="tak", }, getParent=function()end, }; </syntaxhighlight> Czasami tak potrzeba robić, by ominąc zabezpieczenia pewnych funkcji, nawet tutaj. == {{Śródtytuł|p["CzyTakCiąg"]}}{{Code|p["CzyTakCiąg"]}} == W tej funkcji parametry mogą być zbierane w osobnych parametrach lub w jednej tablicy albo ta funkcja może być uruchomiona w ramce. Funkcja do swojego działania wykorzystuje do tego {{LinkŚródtytuł|p["Odstępy"]|Parametry/Tom VI}} i {{LinkŚródtytuł|p.CzyTak}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["CzyTakCiąg"]=function(...)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|zmienna}} lub {{Code|1}}| _1 = Funkcja - typ: {{Code|function}}, lub inna wartość sprawdzana, np. {{Code|string}}, czy odpowiada wartości prawdziwej. | 2 = {{Code|parametry}} lub {{Code|2}} | _2 = Parametry funkcji sprawdzanej, gdy zmienna: {{Code|zmienna}}, jest funkcją. }} Funkcja, gdy jest uruchamiania w ramce, to wtedy elementem sprawdzany jest tablica ramki tablicy transportu modułu, a ponieważ ma ona w sobie zdefiniowaną funkcję: {{LzLua|frame:getParent}}, to wtedy jest uruchamiania funkcja: {{LinkŚródtytuł|CzyTakSilnik}}, z drugim parametrem: {{Code|CzyTakCiąg}}. === Funkcja uruchamiania w ramce wiki kodu === ==== Normalne znaki z odstępami ==== Jeżeli ta funkcja jest uruchomiona w ramce, np. w postaci: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTakCiąg| Wartość |wyspecjalizowana=tak}} </syntaxhighlight> ==== Ciąg składający się z samych odstępów - wartość zwracana ==== To w tym przypadku funkcja zwraca wartość {{Code|tak}}, tak jak funkcja {{LinkŚródtytuł|p.CzyTak}}, a w przypadku: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTakCiąg| |wyspecjalizowana=tak}} </syntaxhighlight> To w tym przypadku funkcja zwraca wartość równą ciągowi pustemu, mimo że funkcja {{LinkŚródtytuł|p.CzyTak}} zwróci wartość {{Code|tak}}. === Funkcja uruchamiania w postaci funkcji bibliotecznej === ==== Ciąg z treściwymi znakami z odstępami ==== Podobnie jest w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, czyli: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul["CzyTakCiąg"](" Wartość "); </syntaxhighlight> Ta funkcja zwróci wartość {{Code|tak}}. ==== Brak takich znaków, tylko same odstępy ==== A teraz inny przykład: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul["CzyTakCiąg"](" "); </syntaxhighlight> Ta funkcja zwróci wartość {{Code|nil}}. == {{Śródtytuł|p.CzyTak}}{{Code|p.CzyTak}} == W tej funkcji parametry mogą być zbierane w osobnych parametrach lub w jednej tablicy albo ta funkcja może być uruchomiona w ramce. Funkcja do swojego działania nie wykorzystuje do tego {{Code|{{sr|#p["Odstępy"](frame)|p=Parametry}}}}, tak jak to robi {{LinkŚródtytuł|p["CzyTakCiąg"]}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.CzyTak=function(...)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|zmienna}} lub {{Code|1}} | _1 = Sprawdzana zmienna, może być to funkcją. | 2 = {{Code|parametry}} lub {{Code|2}} | _2 = Parametry funkcji, może być to tablica parametrów, jest ona wykorzystywana, gdy powyższy element jest funkcją. }} W przypadku uruchamiania funkcji w ramce, wtedy parametrem pierwszym tej funkcji jest tablica ramka wikikodu {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, więc ma w sobie zdefiniowaną funkcję: {{LzLua|frame:getParent}}, stąd wtedy jest stosowana funkcja lokalna: {{LinkŚródtytuł|CzyTakSilnik}}, z drugim parametrem: {{Code|CzyTak}}. === Funkcja działająca w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} === ==== Ciąg niepusty z treściwymi znakami z odstępami ==== Jeżeli ta funkcja jest uruchomiona w ramce, np. w postaci: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTak| Wartość |wyspecjalizowana=tak}} </syntaxhighlight> To w tym przypadku funkcja zwraca wartość {{Code|tak}}, tak jak funkcja {{LinkŚródtytuł|p["CzyTakCiąg"]}} ==== Ciąg z samych znaków odstępów ==== A w przypadku: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTak| |wyspecjalizowana=tak}} </syntaxhighlight> To w tym przypadku funkcja zwraca wartość równą ciągowi {{Code|tak}}, mimo że funkcja {{LinkŚródtytuł|p["CzyTakCiąg"]}} zwróci wartość równoważną ciągowi pustemu. ==== Ciąg pusty - jego rewidowanie ==== <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTak||wyspecjalizowana=tak}} </syntaxhighlight> Ta funkcja uruchomiona w ramce w wikikodzie zwraca wartość równą ciągowi pustemu, tak samo, jak funkcja {{LinkŚródtytuł|p["CzyTakCiąg"]}}. === W postaci funkcji bibliotecznej - nie ramki === ==== Treściwe znaki z odstępami ==== Podobnie jest w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, czyli: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul.CzyTak(" Wartość "); </syntaxhighlight> Ta funkcja zwróci wartość {{Code|tak}}. ==== Same odstępy ==== A teraz inny przykład: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul.CzyTak(" "); </syntaxhighlight> Ta funkcja zwróci wartość {{Code|tak}}, niezależnie, czy tym ciągiem jest szereg składający się z samych znaków odstępów. ==== Ciąg pusty ==== A teraz inny przykład: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul.CzyTak(""); </syntaxhighlight> Ta funkcja wtedy zwróci wartość równą {{Code|nil}} w kodzie {{lpg|Lua}} w {{lpg|Lua|Scribunto}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 1xz751rf1m3q9k4pt0xu8qh7spz14zu 555786 555785 2026-09-12T01:31:37Z Persino 2851 /* p.CzyTak */ 555786 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == Funkcje prawdy i fałszu - ogólne przedstawienie == W funkcjach: {{LinkŚródtytuł|p["CzyTakCiąg"]}} i {{LinkŚródtytuł|p.CzyTak}}, uruchomione w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, muszą posiadać dodatkowo parametr {{Parametr|wyspecjalizowana|tak}}, aby dało się w je wsadzić skutecznie parametry do samej tej ramki dziecka, a nie używać parametry szablonu rodzica. === Wzajemna zależność === W tej pierwszej funkcji jest wykorzystywana ta druga, w której w tej pierwszej w parametrze pierwszym, w przypadku łańcuchów znakowych wykorzystywana jest funkcja do usuwania dolnych myślników i odstępów na końcach, a potem jest uruchamiana ta druga. === Uzyskiwane wyniki w zależności od sprawdzanego parametru - różne typy wartości pierwszej zmiennej === ==== Parametr typu {{Code|string}} ==== Te funkcje rozważane tutaj powiedziane powyżej w wikikodzie w szablonie rodzicu, czy w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, służą do sprawdzenia, czy wartość, czy jest nierówna ciągowi uzyskanemu pustemu, w przypadku tej pierwszej funkcji, a w przypadku drugiej, czy nie jest ciągiem pustym. ==== Typu {{Code|number}} ==== Jeżeli jest to liczba, to czy jest nie równa {{Code|0}}. ==== Typu {{Code|boolean}} ==== Czy wartością logiczną jest jako {{Code|true}}. ==== Typu {{Code|table}} ==== Dla tabel, czy jest niepustą tabelą. ==== Typu {{Code|function}} ==== Ale za to w przypadku funkcji, czy funkcja o nazwie {{Code|zmienna}} z parametrami {{Code|parametry}}, czy zwraca wartość odpowiadająca {{Code|true}}, === Zwracane wartości === Jeżeli funkcja zwróci wartość odpowiadająca prawdziwej, to ta funkcja zwróci znak {{Code|tak}}, w przeciwnym wypadku w wikikodzie zwraca wartość pustą, a w kodzie, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, wartość {{Code|nil}}. == {{Śródtytuł|CzyTakSilnik}}{{Code|CzyTakSilnik}} == Funkcja pomocnicza służąca do liczenia wartości logicznej {{Code|tak}} lub {{Code|nil}} parametrów ramki, w wikikodzie, funkcji {{lpg|lua}} w {{lpr|Lua|Scribunto}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function CzyTakSilnik(args,funkcja)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|args}} | _1 = Tablica elementów z pierwszym elementem do sprawdzenia, z drugim jako nazwa modułu z funkcjami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w takim przypadku ten pierwszy element jest nazwą funkcji, który w połączeniu z nazwą modułu daje referencję do funkcji. | 2 = {{Code|funkcja}} | _2 = Funkcja, za pomocą której sprawdzamy logiczność pierwszego elementu tej tablicy. }} === Możliwe wartości drugiego parametru - funkcji === Możliwymi wartościami funkcji parametru {{Code|funkcja}} jest {{Code|CzyTak}} lub {{Code|CzyTakCiąg}} (ta funkcja wykorzystuje funkcję {{LinkŚródtytuł|p["Odstępy"]|Parametry/Tom VI}} do swojego argumentu, który służy do sprawdzania, jaki spełnia warunek). === Sprawdzanie prawdziwości funkcji z jej zrzucanej, wartości === Gdy istnieje parametr tablicy {{Code|args}} funkcji o parametrze nienazwanym {{Code|args[2]}}, który jest nazwą modułu z funkcjami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a samą funkcją jest {{Code|args[1]}}, to tak utworzona funkcja jest zmienną {{Code|parametr}}, a jeżeli jej nie ma, to ona przyjmuje wartość {{Code|args[1]}}, a gdy jednak istnieje ten drugi element, to na podstawie którego zbierane są argumenty ramki nazwane jak nazwane, tzn. klucze i ich wartości przypisuje, a w przypadku parametrów nienazwanych (nie są zbierane elementy w tej tablicy o kluczach o wartości: {{Code|1}} i {{Code|2}}), a te inne klucze są pomniejszane o dwa, w ten sposób jest utworzona tabela {{Code|argsfun}}. === Brak składowej drugiej tablicy, co świadczy, że nie sprawdzamy funkcji, tylko co innego === ==== Rewidowana jest liczba lub ciąg znaków liczba ==== Gdy nie ma składowej drugiej tablicy, tzn. {{Code|args[2]}}, to wtedy funkcja sprawdza, czy {{Code|args[1]}} to jest liczba w łańcuchu znakowym, lub bezpośrednio liczba. ==== Typ - ciag znaków ==== Jeżeli nie da się jej przetransformować na liczbę, to sprawdza, czy typem tej zmiennej jest {{Code|string}} (czy typem jest szereg). Po działaniu funkcją: {{LinkŚródtytuł|p["Odstępy"]|Parametry/Tom VI}}, jeśli ma wtedy wartość: {{Code|"true"}}, wtedy ta rozważana na samym początku zmienna przyjmuje wartość {{Code|true}}, {{Code|"false"}}, wtedy {{Code|false}}, {{Code|"nil"}}, wtedy {{Code|nil}}. A jeżeli ta zmienna żadnej tej wartości nie przyjmuje z tych wartości, to wtedy jest transformowana na liczbę, jeżeli da się tą operację dokonać. === Walidacja przygotowanych parametrów podaną funkcją === Na samym końcu jest liczona wartość logiczna z przygotowanymi parametrami, według jednej z dwóch specjalnie przygotowanych funkcji. ==== Przypadek uruchamiania funkcji w kodzie ==== W postaci wywołania ogólnego: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); return (parametry_modul[funkcja]{[1]=parametr,[2]=argsfun,})and "tak" or nil; </syntaxhighlight> Gdzie {{Code|funkcja}}, to {{Code|CzyTak}} lub {{Code|CzyTakCiąg}}, a {{Code|parametr}}, to funkcja w jakimś module lub inna wartość, a {{Code|argsfun}}, to tabela argumentów ramki, dziecka, w kodzie {{lpg|Lua}} w {{lpr|Scribunto}}, w wikikodzie w szablonie rodzicu. Gdy ta funkcja zwróci wartość logiczną odpowiadającą {{Code|true}}, to wtedy zwraca {{Code|tak}}, w przeciwnym wypadku {{Code|nil}}. ==== Procedura zwracając wartość z ramki wiki kodu ==== Ta funkcja jest wykorzystywana, gdy jest uruchamiana w ramce, gdy mamy parametry ramki: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTakCiąg| Wartość |nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wyspecjalizowana=tak}} </syntaxhighlight> Podobnie jest z funkcją {{Code|{{sr|#p.CzyTak|p=Parametry}}}}. A jak jest tworzony parametr zmiennej z powyższych wywołań, to jest powiedziane powyżej. === Atrapa funkcji parametrów ramki rodzica (szablonu) === Równie dobrze możemy zefiniować atrapę funkcji {{Code|frame.getParent}}, wtedy: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul["CzyTakCiąg"]{args={ [1]=" Wartość ", [2]="", ["nazwa1"]="wartość1", ["nazwa2"]="wartość2", [3]="wartość3", [4]="wartość4", ["wyspecjalizowana"]="tak", }, getParent=function()end, }; </syntaxhighlight> Czasami tak potrzeba robić, by ominąc zabezpieczenia pewnych funkcji, nawet tutaj. == {{Śródtytuł|p["CzyTakCiąg"]}}{{Code|p["CzyTakCiąg"]}} == W tej funkcji parametry mogą być zbierane w osobnych parametrach lub w jednej tablicy albo ta funkcja może być uruchomiona w ramce. Funkcja do swojego działania wykorzystuje do tego {{LinkŚródtytuł|p["Odstępy"]|Parametry/Tom VI}} i {{LinkŚródtytuł|p.CzyTak}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["CzyTakCiąg"]=function(...)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|zmienna}} lub {{Code|1}}| _1 = Funkcja - typ: {{Code|function}}, lub inna wartość sprawdzana, np. {{Code|string}}, czy odpowiada wartości prawdziwej. | 2 = {{Code|parametry}} lub {{Code|2}} | _2 = Parametry funkcji sprawdzanej, gdy zmienna: {{Code|zmienna}}, jest funkcją. }} Funkcja, gdy jest uruchamiania w ramce, to wtedy elementem sprawdzany jest tablica ramki tablicy transportu modułu, a ponieważ ma ona w sobie zdefiniowaną funkcję: {{LzLua|frame:getParent}}, to wtedy jest uruchamiania funkcja: {{LinkŚródtytuł|CzyTakSilnik}}, z drugim parametrem: {{Code|CzyTakCiąg}}. === Funkcja uruchamiania w ramce wiki kodu === ==== Normalne znaki z odstępami ==== Jeżeli ta funkcja jest uruchomiona w ramce, np. w postaci: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTakCiąg| Wartość |wyspecjalizowana=tak}} </syntaxhighlight> ==== Ciąg składający się z samych odstępów - wartość zwracana ==== To w tym przypadku funkcja zwraca wartość {{Code|tak}}, tak jak funkcja {{LinkŚródtytuł|p.CzyTak}}, a w przypadku: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTakCiąg| |wyspecjalizowana=tak}} </syntaxhighlight> To w tym przypadku funkcja zwraca wartość równą ciągowi pustemu, mimo że funkcja {{LinkŚródtytuł|p.CzyTak}} zwróci wartość {{Code|tak}}. === Funkcja uruchamiania w postaci funkcji bibliotecznej === ==== Ciąg z treściwymi znakami z odstępami ==== Podobnie jest w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, czyli: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul["CzyTakCiąg"](" Wartość "); </syntaxhighlight> Ta funkcja zwróci wartość {{Code|tak}}. ==== Brak takich znaków, tylko same odstępy ==== A teraz inny przykład: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul["CzyTakCiąg"](" "); </syntaxhighlight> Ta funkcja zwróci wartość {{Code|nil}}. == {{Śródtytuł|p.CzyTak}}{{Code|p.CzyTak}} == W tej funkcji parametry mogą być zbierane w osobnych parametrach lub w jednej tablicy albo ta funkcja może być uruchomiona w ramce. Funkcja do swojego działania nie wykorzystuje do tego {{LinkŚródtytuł|p["Odstępy"]|Parametry/Tom VI}}, tak jak to robi {{LinkŚródtytuł|p["CzyTakCiąg"]}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.CzyTak=function(...)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|zmienna}} lub {{Code|1}} | _1 = Sprawdzana zmienna, może być to funkcją. | 2 = {{Code|parametry}} lub {{Code|2}} | _2 = Parametry funkcji, może być to tablica parametrów, jest ona wykorzystywana, gdy powyższy element jest funkcją. }} W przypadku uruchamiania funkcji w ramce, wtedy parametrem pierwszym tej funkcji jest tablica ramka wikikodu {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, więc ma w sobie zdefiniowaną funkcję: {{LzLua|frame:getParent}}, stąd wtedy jest stosowana funkcja lokalna: {{LinkŚródtytuł|CzyTakSilnik}}, z drugim parametrem: {{Code|CzyTak}}. === Funkcja działająca w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} === ==== Ciąg niepusty z treściwymi znakami z odstępami ==== Jeżeli ta funkcja jest uruchomiona w ramce, np. w postaci: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTak| Wartość |wyspecjalizowana=tak}} </syntaxhighlight> To w tym przypadku funkcja zwraca wartość {{Code|tak}}, tak jak funkcja {{LinkŚródtytuł|p["CzyTakCiąg"]}} ==== Ciąg z samych znaków odstępów ==== A w przypadku: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTak| |wyspecjalizowana=tak}} </syntaxhighlight> To w tym przypadku funkcja zwraca wartość równą ciągowi {{Code|tak}}, mimo że funkcja {{LinkŚródtytuł|p["CzyTakCiąg"]}} zwróci wartość równoważną ciągowi pustemu. ==== Ciąg pusty - jego rewidowanie ==== <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTak||wyspecjalizowana=tak}} </syntaxhighlight> Ta funkcja uruchomiona w ramce w wikikodzie zwraca wartość równą ciągowi pustemu, tak samo, jak funkcja {{LinkŚródtytuł|p["CzyTakCiąg"]}}. === W postaci funkcji bibliotecznej - nie ramki === ==== Treściwe znaki z odstępami ==== Podobnie jest w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, czyli: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul.CzyTak(" Wartość "); </syntaxhighlight> Ta funkcja zwróci wartość {{Code|tak}}. ==== Same odstępy ==== A teraz inny przykład: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul.CzyTak(" "); </syntaxhighlight> Ta funkcja zwróci wartość {{Code|tak}}, niezależnie, czy tym ciągiem jest szereg składający się z samych znaków odstępów. ==== Ciąg pusty ==== A teraz inny przykład: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul.CzyTak(""); </syntaxhighlight> Ta funkcja wtedy zwróci wartość równą {{Code|nil}} w kodzie {{lpg|Lua}} w {{lpg|Lua|Scribunto}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> p5twaq563bdtjwinwuxeizvbpsb6r8h 555791 555786 2026-09-12T07:19:10Z Persino 2851 /* {{Śródtytuł|p["CzyTakCiąg"]}}{{Code|p["CzyTakCiąg"]}} */ 555791 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == Funkcje prawdy i fałszu - ogólne przedstawienie == W funkcjach: {{LinkŚródtytuł|p["CzyTakCiąg"]}} i {{LinkŚródtytuł|p.CzyTak}}, uruchomione w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, muszą posiadać dodatkowo parametr {{Parametr|wyspecjalizowana|tak}}, aby dało się w je wsadzić skutecznie parametry do samej tej ramki dziecka, a nie używać parametry szablonu rodzica. === Wzajemna zależność === W tej pierwszej funkcji jest wykorzystywana ta druga, w której w tej pierwszej w parametrze pierwszym, w przypadku łańcuchów znakowych wykorzystywana jest funkcja do usuwania dolnych myślników i odstępów na końcach, a potem jest uruchamiana ta druga. === Uzyskiwane wyniki w zależności od sprawdzanego parametru - różne typy wartości pierwszej zmiennej === ==== Parametr typu {{Code|string}} ==== Te funkcje rozważane tutaj powiedziane powyżej w wikikodzie w szablonie rodzicu, czy w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, służą do sprawdzenia, czy wartość, czy jest nierówna ciągowi uzyskanemu pustemu, w przypadku tej pierwszej funkcji, a w przypadku drugiej, czy nie jest ciągiem pustym. ==== Typu {{Code|number}} ==== Jeżeli jest to liczba, to czy jest nie równa {{Code|0}}. ==== Typu {{Code|boolean}} ==== Czy wartością logiczną jest jako {{Code|true}}. ==== Typu {{Code|table}} ==== Dla tabel, czy jest niepustą tabelą. ==== Typu {{Code|function}} ==== Ale za to w przypadku funkcji, czy funkcja o nazwie {{Code|zmienna}} z parametrami {{Code|parametry}}, czy zwraca wartość odpowiadająca {{Code|true}}, === Zwracane wartości === Jeżeli funkcja zwróci wartość odpowiadająca prawdziwej, to ta funkcja zwróci znak {{Code|tak}}, w przeciwnym wypadku w wikikodzie zwraca wartość pustą, a w kodzie, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, wartość {{Code|nil}}. == {{Śródtytuł|CzyTakSilnik}}{{Code|CzyTakSilnik}} == Funkcja pomocnicza służąca do liczenia wartości logicznej {{Code|tak}} lub {{Code|nil}} parametrów ramki, w wikikodzie, funkcji {{lpg|lua}} w {{lpr|Lua|Scribunto}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function CzyTakSilnik(args,funkcja)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|args}} | _1 = Tablica elementów z pierwszym elementem do sprawdzenia, z drugim jako nazwa modułu z funkcjami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w takim przypadku ten pierwszy element jest nazwą funkcji, który w połączeniu z nazwą modułu daje referencję do funkcji. | 2 = {{Code|funkcja}} | _2 = Funkcja, za pomocą której sprawdzamy logiczność pierwszego elementu tej tablicy. }} === Możliwe wartości drugiego parametru - funkcji === Możliwymi wartościami funkcji parametru {{Code|funkcja}} jest {{Code|CzyTak}} lub {{Code|CzyTakCiąg}} (ta funkcja wykorzystuje funkcję {{LinkŚródtytuł|p["Odstępy"]|Parametry/Tom VI}} do swojego argumentu, który służy do sprawdzania, jaki spełnia warunek). === Sprawdzanie prawdziwości funkcji z jej zrzucanej, wartości === Gdy istnieje parametr tablicy {{Code|args}} funkcji o parametrze nienazwanym {{Code|args[2]}}, który jest nazwą modułu z funkcjami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a samą funkcją jest {{Code|args[1]}}, to tak utworzona funkcja jest zmienną {{Code|parametr}}, a jeżeli jej nie ma, to ona przyjmuje wartość {{Code|args[1]}}, a gdy jednak istnieje ten drugi element, to na podstawie którego zbierane są argumenty ramki nazwane jak nazwane, tzn. klucze i ich wartości przypisuje, a w przypadku parametrów nienazwanych (nie są zbierane elementy w tej tablicy o kluczach o wartości: {{Code|1}} i {{Code|2}}), a te inne klucze są pomniejszane o dwa, w ten sposób jest utworzona tabela {{Code|argsfun}}. === Brak składowej drugiej tablicy, co świadczy, że nie sprawdzamy funkcji, tylko co innego === ==== Rewidowana jest liczba lub ciąg znaków liczba ==== Gdy nie ma składowej drugiej tablicy, tzn. {{Code|args[2]}}, to wtedy funkcja sprawdza, czy {{Code|args[1]}} to jest liczba w łańcuchu znakowym, lub bezpośrednio liczba. ==== Typ - ciag znaków ==== Jeżeli nie da się jej przetransformować na liczbę, to sprawdza, czy typem tej zmiennej jest {{Code|string}} (czy typem jest szereg). Po działaniu funkcją: {{LinkŚródtytuł|p["Odstępy"]|Parametry/Tom VI}}, jeśli ma wtedy wartość: {{Code|"true"}}, wtedy ta rozważana na samym początku zmienna przyjmuje wartość {{Code|true}}, {{Code|"false"}}, wtedy {{Code|false}}, {{Code|"nil"}}, wtedy {{Code|nil}}. A jeżeli ta zmienna żadnej tej wartości nie przyjmuje z tych wartości, to wtedy jest transformowana na liczbę, jeżeli da się tą operację dokonać. === Walidacja przygotowanych parametrów podaną funkcją === Na samym końcu jest liczona wartość logiczna z przygotowanymi parametrami, według jednej z dwóch specjalnie przygotowanych funkcji. ==== Przypadek uruchamiania funkcji w kodzie ==== W postaci wywołania ogólnego: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); return (parametry_modul[funkcja]{[1]=parametr,[2]=argsfun,})and "tak" or nil; </syntaxhighlight> Gdzie {{Code|funkcja}}, to {{Code|CzyTak}} lub {{Code|CzyTakCiąg}}, a {{Code|parametr}}, to funkcja w jakimś module lub inna wartość, a {{Code|argsfun}}, to tabela argumentów ramki, dziecka, w kodzie {{lpg|Lua}} w {{lpr|Scribunto}}, w wikikodzie w szablonie rodzicu. Gdy ta funkcja zwróci wartość logiczną odpowiadającą {{Code|true}}, to wtedy zwraca {{Code|tak}}, w przeciwnym wypadku {{Code|nil}}. ==== Procedura zwracając wartość z ramki wiki kodu ==== Ta funkcja jest wykorzystywana, gdy jest uruchamiana w ramce, gdy mamy parametry ramki: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTakCiąg| Wartość |nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wyspecjalizowana=tak}} </syntaxhighlight> Podobnie jest z funkcją {{Code|{{sr|#p.CzyTak|p=Parametry}}}}. A jak jest tworzony parametr zmiennej z powyższych wywołań, to jest powiedziane powyżej. === Atrapa funkcji parametrów ramki rodzica (szablonu) === Równie dobrze możemy zefiniować atrapę funkcji {{Code|frame.getParent}}, wtedy: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul["CzyTakCiąg"]{args={ [1]=" Wartość ", [2]="", ["nazwa1"]="wartość1", ["nazwa2"]="wartość2", [3]="wartość3", [4]="wartość4", ["wyspecjalizowana"]="tak", }, getParent=function()end, }; </syntaxhighlight> Czasami tak potrzeba robić, by ominąc zabezpieczenia pewnych funkcji, nawet tutaj. == {{Śródtytuł|p["CzyTakCiąg"]}}{{Code|p["CzyTakCiąg"]}} == W tej funkcji parametry mogą być zbierane w osobnych parametrach lub w jednej tablicy albo ta funkcja może być uruchomiona w ramce. Funkcja do swojego działania wykorzystuje do tego {{LinkŚródtytuł|p["Odstępy"]|Parametry/Tom VI}} i {{LinkŚródtytuł|p.CzyTak}}. Funkcja sprawdza, czy strimowany ciąg, czy jest nierówny ciągowi pustemu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["CzyTakCiąg"]=function(...)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|zmienna}} lub {{Code|1}}| _1 = Funkcja - typ: {{Code|function}}, lub inna wartość sprawdzana, np. {{Code|string}}, czy odpowiada wartości prawdziwej. | 2 = {{Code|parametry}} lub {{Code|2}} | _2 = Parametry funkcji sprawdzanej, gdy zmienna: {{Code|zmienna}}, jest funkcją. }} Funkcja, gdy jest uruchamiania w ramce, to wtedy elementem sprawdzany jest tablica ramki tablicy transportu modułu, a ponieważ ma ona w sobie zdefiniowaną funkcję: {{LzLua|frame:getParent}}, to wtedy jest uruchamiania funkcja: {{LinkŚródtytuł|CzyTakSilnik}}, z drugim parametrem: {{Code|CzyTakCiąg}}. === Funkcja uruchamiania w ramce wiki kodu === ==== Normalne znaki z odstępami ==== Jeżeli ta funkcja jest uruchomiona w ramce, np. w postaci: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTakCiąg| Wartość |wyspecjalizowana=tak}} </syntaxhighlight> ==== Ciąg składający się z samych odstępów - wartość zwracana ==== To w tym przypadku funkcja zwraca wartość {{Code|tak}}, tak jak funkcja {{LinkŚródtytuł|p.CzyTak}}, a w przypadku: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTakCiąg| |wyspecjalizowana=tak}} </syntaxhighlight> To w tym przypadku funkcja zwraca wartość równą ciągowi pustemu, mimo że funkcja {{LinkŚródtytuł|p.CzyTak}} zwróci wartość {{Code|tak}}. === Funkcja uruchamiania w postaci funkcji bibliotecznej === ==== Ciąg z treściwymi znakami z odstępami ==== Podobnie jest w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, czyli: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul["CzyTakCiąg"](" Wartość "); </syntaxhighlight> Ta funkcja zwróci wartość {{Code|tak}}. ==== Brak takich znaków, tylko same odstępy ==== A teraz inny przykład: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul["CzyTakCiąg"](" "); </syntaxhighlight> Ta funkcja zwróci wartość {{Code|nil}}. == {{Śródtytuł|p.CzyTak}}{{Code|p.CzyTak}} == W tej funkcji parametry mogą być zbierane w osobnych parametrach lub w jednej tablicy albo ta funkcja może być uruchomiona w ramce. Funkcja do swojego działania nie wykorzystuje do tego {{LinkŚródtytuł|p["Odstępy"]|Parametry/Tom VI}}, tak jak to robi {{LinkŚródtytuł|p["CzyTakCiąg"]}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.CzyTak=function(...)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|zmienna}} lub {{Code|1}} | _1 = Sprawdzana zmienna, może być to funkcją. | 2 = {{Code|parametry}} lub {{Code|2}} | _2 = Parametry funkcji, może być to tablica parametrów, jest ona wykorzystywana, gdy powyższy element jest funkcją. }} W przypadku uruchamiania funkcji w ramce, wtedy parametrem pierwszym tej funkcji jest tablica ramka wikikodu {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, więc ma w sobie zdefiniowaną funkcję: {{LzLua|frame:getParent}}, stąd wtedy jest stosowana funkcja lokalna: {{LinkŚródtytuł|CzyTakSilnik}}, z drugim parametrem: {{Code|CzyTak}}. === Funkcja działająca w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} === ==== Ciąg niepusty z treściwymi znakami z odstępami ==== Jeżeli ta funkcja jest uruchomiona w ramce, np. w postaci: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTak| Wartość |wyspecjalizowana=tak}} </syntaxhighlight> To w tym przypadku funkcja zwraca wartość {{Code|tak}}, tak jak funkcja {{LinkŚródtytuł|p["CzyTakCiąg"]}} ==== Ciąg z samych znaków odstępów ==== A w przypadku: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTak| |wyspecjalizowana=tak}} </syntaxhighlight> To w tym przypadku funkcja zwraca wartość równą ciągowi {{Code|tak}}, mimo że funkcja {{LinkŚródtytuł|p["CzyTakCiąg"]}} zwróci wartość równoważną ciągowi pustemu. ==== Ciąg pusty - jego rewidowanie ==== <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTak||wyspecjalizowana=tak}} </syntaxhighlight> Ta funkcja uruchomiona w ramce w wikikodzie zwraca wartość równą ciągowi pustemu, tak samo, jak funkcja {{LinkŚródtytuł|p["CzyTakCiąg"]}}. === W postaci funkcji bibliotecznej - nie ramki === ==== Treściwe znaki z odstępami ==== Podobnie jest w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, czyli: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul.CzyTak(" Wartość "); </syntaxhighlight> Ta funkcja zwróci wartość {{Code|tak}}. ==== Same odstępy ==== A teraz inny przykład: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul.CzyTak(" "); </syntaxhighlight> Ta funkcja zwróci wartość {{Code|tak}}, niezależnie, czy tym ciągiem jest szereg składający się z samych znaków odstępów. ==== Ciąg pusty ==== A teraz inny przykład: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul.CzyTak(""); </syntaxhighlight> Ta funkcja wtedy zwróci wartość równą {{Code|nil}} w kodzie {{lpg|Lua}} w {{lpg|Lua|Scribunto}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 61a7xss9ha182n7e4tlh927604pnwig 555792 555791 2026-09-12T07:19:51Z Persino 2851 /* {{Śródtytuł|p.CzyTak}}{{Code|p.CzyTak}} */ 555792 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} == Funkcje prawdy i fałszu - ogólne przedstawienie == W funkcjach: {{LinkŚródtytuł|p["CzyTakCiąg"]}} i {{LinkŚródtytuł|p.CzyTak}}, uruchomione w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, muszą posiadać dodatkowo parametr {{Parametr|wyspecjalizowana|tak}}, aby dało się w je wsadzić skutecznie parametry do samej tej ramki dziecka, a nie używać parametry szablonu rodzica. === Wzajemna zależność === W tej pierwszej funkcji jest wykorzystywana ta druga, w której w tej pierwszej w parametrze pierwszym, w przypadku łańcuchów znakowych wykorzystywana jest funkcja do usuwania dolnych myślników i odstępów na końcach, a potem jest uruchamiana ta druga. === Uzyskiwane wyniki w zależności od sprawdzanego parametru - różne typy wartości pierwszej zmiennej === ==== Parametr typu {{Code|string}} ==== Te funkcje rozważane tutaj powiedziane powyżej w wikikodzie w szablonie rodzicu, czy w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, służą do sprawdzenia, czy wartość, czy jest nierówna ciągowi uzyskanemu pustemu, w przypadku tej pierwszej funkcji, a w przypadku drugiej, czy nie jest ciągiem pustym. ==== Typu {{Code|number}} ==== Jeżeli jest to liczba, to czy jest nie równa {{Code|0}}. ==== Typu {{Code|boolean}} ==== Czy wartością logiczną jest jako {{Code|true}}. ==== Typu {{Code|table}} ==== Dla tabel, czy jest niepustą tabelą. ==== Typu {{Code|function}} ==== Ale za to w przypadku funkcji, czy funkcja o nazwie {{Code|zmienna}} z parametrami {{Code|parametry}}, czy zwraca wartość odpowiadająca {{Code|true}}, === Zwracane wartości === Jeżeli funkcja zwróci wartość odpowiadająca prawdziwej, to ta funkcja zwróci znak {{Code|tak}}, w przeciwnym wypadku w wikikodzie zwraca wartość pustą, a w kodzie, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, wartość {{Code|nil}}. == {{Śródtytuł|CzyTakSilnik}}{{Code|CzyTakSilnik}} == Funkcja pomocnicza służąca do liczenia wartości logicznej {{Code|tak}} lub {{Code|nil}} parametrów ramki, w wikikodzie, funkcji {{lpg|lua}} w {{lpr|Lua|Scribunto}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> local function CzyTakSilnik(args,funkcja)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|args}} | _1 = Tablica elementów z pierwszym elementem do sprawdzenia, z drugim jako nazwa modułu z funkcjami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w takim przypadku ten pierwszy element jest nazwą funkcji, który w połączeniu z nazwą modułu daje referencję do funkcji. | 2 = {{Code|funkcja}} | _2 = Funkcja, za pomocą której sprawdzamy logiczność pierwszego elementu tej tablicy. }} === Możliwe wartości drugiego parametru - funkcji === Możliwymi wartościami funkcji parametru {{Code|funkcja}} jest {{Code|CzyTak}} lub {{Code|CzyTakCiąg}} (ta funkcja wykorzystuje funkcję {{LinkŚródtytuł|p["Odstępy"]|Parametry/Tom VI}} do swojego argumentu, który służy do sprawdzania, jaki spełnia warunek). === Sprawdzanie prawdziwości funkcji z jej zrzucanej, wartości === Gdy istnieje parametr tablicy {{Code|args}} funkcji o parametrze nienazwanym {{Code|args[2]}}, który jest nazwą modułu z funkcjami {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a samą funkcją jest {{Code|args[1]}}, to tak utworzona funkcja jest zmienną {{Code|parametr}}, a jeżeli jej nie ma, to ona przyjmuje wartość {{Code|args[1]}}, a gdy jednak istnieje ten drugi element, to na podstawie którego zbierane są argumenty ramki nazwane jak nazwane, tzn. klucze i ich wartości przypisuje, a w przypadku parametrów nienazwanych (nie są zbierane elementy w tej tablicy o kluczach o wartości: {{Code|1}} i {{Code|2}}), a te inne klucze są pomniejszane o dwa, w ten sposób jest utworzona tabela {{Code|argsfun}}. === Brak składowej drugiej tablicy, co świadczy, że nie sprawdzamy funkcji, tylko co innego === ==== Rewidowana jest liczba lub ciąg znaków liczba ==== Gdy nie ma składowej drugiej tablicy, tzn. {{Code|args[2]}}, to wtedy funkcja sprawdza, czy {{Code|args[1]}} to jest liczba w łańcuchu znakowym, lub bezpośrednio liczba. ==== Typ - ciag znaków ==== Jeżeli nie da się jej przetransformować na liczbę, to sprawdza, czy typem tej zmiennej jest {{Code|string}} (czy typem jest szereg). Po działaniu funkcją: {{LinkŚródtytuł|p["Odstępy"]|Parametry/Tom VI}}, jeśli ma wtedy wartość: {{Code|"true"}}, wtedy ta rozważana na samym początku zmienna przyjmuje wartość {{Code|true}}, {{Code|"false"}}, wtedy {{Code|false}}, {{Code|"nil"}}, wtedy {{Code|nil}}. A jeżeli ta zmienna żadnej tej wartości nie przyjmuje z tych wartości, to wtedy jest transformowana na liczbę, jeżeli da się tą operację dokonać. === Walidacja przygotowanych parametrów podaną funkcją === Na samym końcu jest liczona wartość logiczna z przygotowanymi parametrami, według jednej z dwóch specjalnie przygotowanych funkcji. ==== Przypadek uruchamiania funkcji w kodzie ==== W postaci wywołania ogólnego: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); return (parametry_modul[funkcja]{[1]=parametr,[2]=argsfun,})and "tak" or nil; </syntaxhighlight> Gdzie {{Code|funkcja}}, to {{Code|CzyTak}} lub {{Code|CzyTakCiąg}}, a {{Code|parametr}}, to funkcja w jakimś module lub inna wartość, a {{Code|argsfun}}, to tabela argumentów ramki, dziecka, w kodzie {{lpg|Lua}} w {{lpr|Scribunto}}, w wikikodzie w szablonie rodzicu. Gdy ta funkcja zwróci wartość logiczną odpowiadającą {{Code|true}}, to wtedy zwraca {{Code|tak}}, w przeciwnym wypadku {{Code|nil}}. ==== Procedura zwracając wartość z ramki wiki kodu ==== Ta funkcja jest wykorzystywana, gdy jest uruchamiana w ramce, gdy mamy parametry ramki: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTakCiąg| Wartość |nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wyspecjalizowana=tak}} </syntaxhighlight> Podobnie jest z funkcją {{Code|{{sr|#p.CzyTak|p=Parametry}}}}. A jak jest tworzony parametr zmiennej z powyższych wywołań, to jest powiedziane powyżej. === Atrapa funkcji parametrów ramki rodzica (szablonu) === Równie dobrze możemy zefiniować atrapę funkcji {{Code|frame.getParent}}, wtedy: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul["CzyTakCiąg"]{args={ [1]=" Wartość ", [2]="", ["nazwa1"]="wartość1", ["nazwa2"]="wartość2", [3]="wartość3", [4]="wartość4", ["wyspecjalizowana"]="tak", }, getParent=function()end, }; </syntaxhighlight> Czasami tak potrzeba robić, by ominąc zabezpieczenia pewnych funkcji, nawet tutaj. == {{Śródtytuł|p["CzyTakCiąg"]}}{{Code|p["CzyTakCiąg"]}} == W tej funkcji parametry mogą być zbierane w osobnych parametrach lub w jednej tablicy albo ta funkcja może być uruchomiona w ramce. Funkcja do swojego działania wykorzystuje do tego {{LinkŚródtytuł|p["Odstępy"]|Parametry/Tom VI}} i {{LinkŚródtytuł|p.CzyTak}}. Funkcja sprawdza, czy strimowany ciąg, czy jest nierówny ciągowi pustemu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p["CzyTakCiąg"]=function(...)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|zmienna}} lub {{Code|1}}| _1 = Funkcja - typ: {{Code|function}}, lub inna wartość sprawdzana, np. {{Code|string}}, czy odpowiada wartości prawdziwej. | 2 = {{Code|parametry}} lub {{Code|2}} | _2 = Parametry funkcji sprawdzanej, gdy zmienna: {{Code|zmienna}}, jest funkcją. }} Funkcja, gdy jest uruchamiania w ramce, to wtedy elementem sprawdzany jest tablica ramki tablicy transportu modułu, a ponieważ ma ona w sobie zdefiniowaną funkcję: {{LzLua|frame:getParent}}, to wtedy jest uruchamiania funkcja: {{LinkŚródtytuł|CzyTakSilnik}}, z drugim parametrem: {{Code|CzyTakCiąg}}. === Funkcja uruchamiania w ramce wiki kodu === ==== Normalne znaki z odstępami ==== Jeżeli ta funkcja jest uruchomiona w ramce, np. w postaci: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTakCiąg| Wartość |wyspecjalizowana=tak}} </syntaxhighlight> ==== Ciąg składający się z samych odstępów - wartość zwracana ==== To w tym przypadku funkcja zwraca wartość {{Code|tak}}, tak jak funkcja {{LinkŚródtytuł|p.CzyTak}}, a w przypadku: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTakCiąg| |wyspecjalizowana=tak}} </syntaxhighlight> To w tym przypadku funkcja zwraca wartość równą ciągowi pustemu, mimo że funkcja {{LinkŚródtytuł|p.CzyTak}} zwróci wartość {{Code|tak}}. === Funkcja uruchamiania w postaci funkcji bibliotecznej === ==== Ciąg z treściwymi znakami z odstępami ==== Podobnie jest w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, czyli: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul["CzyTakCiąg"](" Wartość "); </syntaxhighlight> Ta funkcja zwróci wartość {{Code|tak}}. ==== Brak takich znaków, tylko same odstępy ==== A teraz inny przykład: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul["CzyTakCiąg"](" "); </syntaxhighlight> Ta funkcja zwróci wartość {{Code|nil}}. == {{Śródtytuł|p.CzyTak}}{{Code|p.CzyTak}} == W tej funkcji parametry mogą być zbierane w osobnych parametrach lub w jednej tablicy albo ta funkcja może być uruchomiona w ramce. Funkcja do swojego działania nie wykorzystuje do tego {{LinkŚródtytuł|p["Odstępy"]|Parametry/Tom VI}}, tak jak to robi {{LinkŚródtytuł|p["CzyTakCiąg"]}}. Funkcja sprawdza, czy niestrimowany ciąg, czy jest nierówny ciągowi pustemu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> p.CzyTak=function(...)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|zmienna}} lub {{Code|1}} | _1 = Sprawdzana zmienna, może być to funkcją. | 2 = {{Code|parametry}} lub {{Code|2}} | _2 = Parametry funkcji, może być to tablica parametrów, jest ona wykorzystywana, gdy powyższy element jest funkcją. }} W przypadku uruchamiania funkcji w ramce, wtedy parametrem pierwszym tej funkcji jest tablica ramka wikikodu {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, więc ma w sobie zdefiniowaną funkcję: {{LzLua|frame:getParent}}, stąd wtedy jest stosowana funkcja lokalna: {{LinkŚródtytuł|CzyTakSilnik}}, z drugim parametrem: {{Code|CzyTak}}. === Funkcja działająca w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} === ==== Ciąg niepusty z treściwymi znakami z odstępami ==== Jeżeli ta funkcja jest uruchomiona w ramce, np. w postaci: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTak| Wartość |wyspecjalizowana=tak}} </syntaxhighlight> To w tym przypadku funkcja zwraca wartość {{Code|tak}}, tak jak funkcja {{LinkŚródtytuł|p["CzyTakCiąg"]}} ==== Ciąg z samych znaków odstępów ==== A w przypadku: <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTak| |wyspecjalizowana=tak}} </syntaxhighlight> To w tym przypadku funkcja zwraca wartość równą ciągowi {{Code|tak}}, mimo że funkcja {{LinkŚródtytuł|p["CzyTakCiąg"]}} zwróci wartość równoważną ciągowi pustemu. ==== Ciąg pusty - jego rewidowanie ==== <syntaxhighlight lang="mediawiki"> {{#invoke:Parametry|CzyTak||wyspecjalizowana=tak}} </syntaxhighlight> Ta funkcja uruchomiona w ramce w wikikodzie zwraca wartość równą ciągowi pustemu, tak samo, jak funkcja {{LinkŚródtytuł|p["CzyTakCiąg"]}}. === W postaci funkcji bibliotecznej - nie ramki === ==== Treściwe znaki z odstępami ==== Podobnie jest w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, czyli: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul.CzyTak(" Wartość "); </syntaxhighlight> Ta funkcja zwróci wartość {{Code|tak}}. ==== Same odstępy ==== A teraz inny przykład: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul.CzyTak(" "); </syntaxhighlight> Ta funkcja zwróci wartość {{Code|tak}}, niezależnie, czy tym ciągiem jest szereg składający się z samych znaków odstępów. ==== Ciąg pusty ==== A teraz inny przykład: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local czy_tak=parametry_modul.CzyTak(""); </syntaxhighlight> Ta funkcja wtedy zwróci wartość równą {{Code|nil}} w kodzie {{lpg|Lua}} w {{lpg|Lua|Scribunto}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> fckpv8606o9dk5cubjs24iy9plhado7 Wikibooks:Moduły/Parametry/Tom XIV 4 63980 555730 555648 2026-09-11T18:32:06Z Persino 2851 /* {{Code|p.PobierzParametr}} */ 555730 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} Są tutaj przedstawione funkcje parametrów. == {{Code|p.PobierzFrameEwentualnieParent}} == Argument tej funkcji {{Code|frame}} koniecznie musi być tablicą, w przypadku przeciwnym wywoła to błąd języka {{lpg|Lua}}, że z wartości nietabelowej chcemy wyliczyć jego nieistniejący element {{Code|getParent}}, który ma prawo nie być. Funkcja pobiera parametry ramki szablonu rodzica, a nie dziecka, a jeżeli w dziecku w ramce w wikikodzie w szablonie podamy specjalny parametr {{Parametr|wyspecjalizowana|tak}}, to wtedy ta funkcja ściąga parametry ramki. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobierzFrameEwentualnieParent(frame)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu. }} Tą funkcją można sterować ze strony ramki tym właśnie specjalnym parametrem o wartości niepustej, którą jest {{Parametr|wyspecjalizowana|tak}}. W ramce podajemy argumenty wraz z tym specjalnym parametrem: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}} </syntaxhighlight> To wtedy w kodzie w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} w module o nazwie {{Code|Nazwa modułu}}, piszemy: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzFrameEwentualnieParent(frame).args; .... end; </syntaxhighlight> To wtedy w kodzie ściągane parametry ramki dziecka. Tę funkcję można równie dobrze wykorzystać do zwykłych tabel: <syntaxhighlight lang="lua"> local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzFrameEwentualnieParent(tabela); </syntaxhighlight> A w tym przypadku ta funkcja nic nie robi, tylko zmienna {{Code|args}} referencyjnie wskazuje na tablicę {{Code|tablica}}. Ale można ją wykorzystać, gdy by funkcja {{Code|Nazwa funkcji}}, była uruchomiona ze zwykłą tablicą, ale z możliwością, że to może być tablicą ramki {{Code|frame}} tablicy transportu, np.: <syntaxhighlight lang="lua"> --- Pierwsza możliwość; local wartosc1=p["Nazwa funkcji"](frame); -- Druga możliwość local wartosc2=p["Nazwa funkcji"]{["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; </syntaxhighlight> Dla obu jest taka niedogodność, że jedynie jest taka nieprawidłowość, że w przypadku parametru tablicy ramki tablicy transportu należy podawać uzyskany element {{Code|args}}, a w przypadku zwykłej tablicy już nie, tą niedokodność rozwiązuje funkcja: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}. == {{Code|p.PobierzArgsParametry}} == Argument tej funkcji {{Code|frame}} koniecznie nie musi być tablicą, bo wtedy nie wywoła to błędu języka {{lpg|Lua}}, że z wartości nietabelowej chcemy wyliczyć jego niepusty element {{Code|getParent}}, bo przedtem sprawdzana jest w tej funkcji, czy jest to tablica. W definicji tej funkcji zmienna uzyskana z funkcji: {{Code|{{sr|#p.PobierzFrameEwentualnieParent(frame)|p=Parametry}}}}, a jeśli jej składowa {{Code|args}} jest tablicą, to jest właśnie ona zwracana, a jeśli istnieje, ale nie jest tablicą, lub ona nie istnieje, to wtedy brana jest właśnie wartość tablicowa {{Code|frame}}, jeśli jest ona taka, a gdy nie, to wtedy z tej funkcji tutaj nie korzystamy. Funkcja pobiera parametry ramki szablonu rodzica, a nie dziecka, a jeżeli w dziecku w ramce w wikikodzie w szablonie podamy specjalny parametr {{Parametr|wyspecjalizowana|tak}}, to wtedy ta funkcja ściąga parametry ramki. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobierzArgsParametry(frame, czy_nie_tablica_jako_tablica)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica transportu ramki. | 2 = {{Code|czy_nie_tablica_jako_tablica}} | _2 = Czy wartości nietablicowe umieszczać w jednoelemenowej tabeli. }} Funkcja wykorzystuje wspomnianą powyżej funkcję do swojego działania, ona jest wtedy aktywowana, gdy zmienna {{Code|frame}} jest tablicą, i jest sprawdzane, czy ona posiada nazwany element o kluczu {{Code|args}}, i czy jest on tablicowy. Jeżeli wartością zmiennej {{Code|frame}} nie jest tablica, ale nie przybiera wartości {{Code|nil}}, to ona jest umieszczana w tablicy, jeżeli zmiennej {{Code|czy_nie_tablica_jako_tablica}} przydzielimy wartość {{Code|true}}, w przeciwnym wypadku zwracana jest ona w postaci niezmienionej, a jeżeli wartość tej zmiennej nie istnieje, to zwracana jest zwykła tablica pusta. Tą funkcją można sterować ze strony ramki tym właśnie specjalnym parametrem o wartości niepustej. W ramce podajemy argumenty wraz z tym specjalnym parametrem: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}} </syntaxhighlight> To wtedy w kodzie w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} w module o nazwie {{Code|Nazwa modułu}}, piszemy: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(frame); .... end; </syntaxhighlight> To wtedy w kodzie ściągane parametry ramki dziecka. Tę funkcję można równie dobrze wykorzystać do zwykłych tabel: <syntaxhighlight lang="lua"> local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(tabela); </syntaxhighlight> A w tym przypadku ta funkcja nic nie robi, tylko zmienna {{Code|args}} referencyjnie wskazuje na tablicę {{Code|tablica}}. Ale można ją wykorzystać, gdyby funkcja {{Code|Nazwa funkcji}}, była uruchomiona ze zwykłą tablicą, ale z możliwością, że to może być tablicą ramki {{Code|frame}} tablicy transportu, np.: <syntaxhighlight lang="lua"> --- Pierwsza możliwość; local wartosc1=p["Nazwa funkcji"](frame); -- Druga możliwość local wartosc2=p["Nazwa funkcji"]{["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; </syntaxhighlight> Dla obu tych przypadków nie ma żadnej niedogodności, jak to występowała w {{Code|{{sr|#p.PobierzFrameEwentualnieParent(frame)|p=Parametry}}}}. Jeśliby do funkcji tablicy transportu dać wartość równą nie tablicy, to wtedy równoważnie możemy napisać: <syntaxhighlight lang="lua"> local wartosc="wartość"; local wynik=p["Nazwa funkcji"](wartosc); </syntaxhighlight> to wtedy definicję tej funkcji piszemy: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(frame,true); local wartosc=args[1]; end; </syntaxhighlight> lub równoważnie możemy zapisać: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); local wartosc=parametry_modul.PobierzArgsParametry(frame); end; </syntaxhighlight> A jeżeli nie wsadziliśmy żadnej wartości do funkcji ramki tablicy transportu lub tą wartością jest {{Code|nil}}, wtedy: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"](); </syntaxhighlight> wtedy definicja tej funkcji wygląda: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); -- Zmienna: args, wskazuje na wartość, którą jest tablicą pustą, tzn. w tej tablicy nie ma wcale elementów; local args=parametry_modul.PobierzArgsParametry(frame); end; </syntaxhighlight> Widzimy, że wtedy zmienna {{Code|args}} jest normalną pustą tablicą, i nie musimy wtedy wcale pisać poniżej, bo wtedy wychodzi w tym przypadku na to samo: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(frame,true); </syntaxhighlight> Argument drugi w {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, który w naszym przypadku musi mieć wartość {{Code|true}}, a wtedy jest jedynie sens, gdy {{Code|frame}} nie jest tablicą, i gdy chcemy tą wartość umieścić w tablicy, a nie powtórzyć wartość, tzn. chcemy napisać: {{Code|{{(}}frame,{{)}}}}, w przeciwnym wypadku musilibyśmy napisać coś w rodzaju, zamiast tak spreparowanej tablicy: {{Code|frame}}, czyli: <syntaxhighlight lang="lua"> -- Pierwszy przypadek, gdy frame jest wartością nietablicową; local parametry_modul=require("Module:Parametry"); ... -- Zwracana wartość: args, to nic innego niż: {frame,}; local args=parametry_modul.PobierzArgsParametry(frame,true); ... -- Zwracana wartość: args, to nic innego niż: frame, a nie {frame,}, jak poprzednio; local args=parametry_modul.PobierzArgsParametry(frame); </syntaxhighlight> == {{Code|p.PobierzParametryRamki}} == Funkcja służy do ustawienia pewnych domyślnych dwóch pewnych funkcji służących do pobieranie danych z tabelki z pierwszej tej funkcji, jeżeli ona posiada klucz o wartości {{Code|args}}, to zwracana jest ta właśnie tablica jako argument pierwszej tej funkcji, jeżeli jest w ogóle tablicą, w przeciwnym wypadku zwracana jest ta oryginalna tablica też jako argument tej funkcji, w przeciwnym dalszym wypadku zwracana jest zwracana wartość ta jako argument tej drugiej funkcji, która zwraca prawdziwą wartość z argumentu tylko za pierwszym razem, z tej funkcji, za następnym i dalszym razem {{Code|nil}}. Z tak utworzonej ogólnie większej funkcji wykorzystywana jest w budowie omawianej funkcji, która jest zwracana przez funkcję w tym nagłówku, która względem jego budowy wywołuje raz pierwszą albo drugą poprzednią wspomnianą funkcję zależną od rodzaju zmiennej {{Code|frame}}, która może być tabelką, ale nie musi być. Ta funkcja zwracana przez funkcję w nagłówku przyjmuje argument, która jest kluczem do tych wspomnianych, może że, tabel (dokładnie, która ta może tabelka to zależy od formatu tej naszej rozważanej zmiennej), a jeżeli to nie tabelka, co jest zwracane, to już zostało powiedziane. Definicja skrótowa tej funkcji jest: <syntaxhighlight lang="lua"> function p.PobierzParametryRamki(frame)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu. }} Weźmy ramkę sformułowaną w wikikodzie jako dziecko w szablonie rodzicu: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5}} </syntaxhighlight> To wtedy tablica ramki tablicy transportu posiada właśnie {{Code|frame}}, która jest tablicą, i na pewno posiada tablicę o nazwie {{Code|args}}, to wtedy tę funkcję wywołaną w ramce, która wywołuje funkcję w nagłówku, formułujemy: <syntaxhighlight lang="lua"> local p={}; local p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametryRamki=parametry_modul.PobierzParametryRamki(frame); ... end; </syntaxhighlight> Równie dobrze funkcję z ramki można wywołać w sposób, co wtedy ta funkcja też zostanie wywołana pozytywnie: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"]{args={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}}; </syntaxhighlight> W tej funkcji nie trzeba definiować funkcji fałszywej {{Code|getParent}}, w postaci: {{Code|getParent{{=}}function()end}}. Widzimi, że ta tablica posiada nazwę zmiennej tablicowej o nazwie {{Code|args}}, ale ona nie jest tablicą ramki tablicy transportu, ale tą tablicę możemy bezposrednio wsadzić w tą główną tablicę w samym argumencie funkcji. Równie dobrze możemy wywołać tę funkcję zdefiniowaną naszą w jakimś module w sposób: <syntaxhighlight lang="lua"> local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; local wynik=p["Nazwa funkcji"]{tabela); </syntaxhighlight> też ta funkcja prawidłowo się wywoła. W tym przypadku, jak i w przypadkach powyżej, wyniki uzyskuje się w następującym wywołaniach: <syntaxhighlight lang="lua"> --- Zmienna: wartosc1, przyjmuje wartość: "wartość1"; local wartosc1=PobierzParametryRamki("nazwa1"); --- Zmienna: wartosc2, przyjmuje wartość: "wartość2"; local wartosc2=PobierzParametryRamki("nazwa2"); --- Zmienna: wartosc3, przyjmuje wartość: "wartość3"; local wartosc3=PobierzParametryRamki(1); </syntaxhighlight> W innym przypadku wywołań funkcji ramki jest wsadzenie do niej zwykłego nietablicowego elementu, może być też to wartość: {{Code|nil}}. A to wywołanie jest: <syntaxhighlight lang="lua"> local wartosc="wartość"; --Zmienna: wartosc, nie jest w tym przypadku tablicą; local wynik=p["Nazwa funkcji"](wartosc); </syntaxhighlight> Wtedy w tej ramce w celu uzyskania jakikolwiek wartości jest przykład wywołania tej funkcji zwracanej przez funkcję w ramce z argumentem pustym. <syntaxhighlight lang="lua"> -- Zmienna: wartość1, przyjmuje wartość: "wartość"; Jeżeli ona, przyjmuje wartość: nil, to wywołanie rzuci: nil, i za każdym następny razem; local wartosc1=PobierzParametryRamki(); -- Zmienna: wartość2, przyjmuje wartość: nil; local wartosc2=PobierzParametryRamki(); </syntaxhighlight> W wywołaniach powinno dbać się o właściwą kolejność wywołań, bo argumentem funkcji z tablicy transportu może być zwykła tablicowa wartość. Najpierw uzyskujemy wartości nietablicowe, a później tablicowe, na wypadek niewiadomej {{Code|frame}} jakiego typu ma być wartość. Też ta zmienna może istnieć pod kilkoma możliwymi kluczami, lub tą zmienną może być jedyny argument funkcji, która jest nietablicową wartością, wtedy ją się wywołuje jako dla przypadku, gdy parametr jest nietablicowy lub jest pod kluczem {{Code|tekst}}: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local tekst=parametry_modul.PobierzParametryRamki(frame)("tekst"); </syntaxhighlight> Lub chcemy tę funkcję wywołać bezparametrowo, gdy chcemy, by {{Code|frame}} nie była tablicą: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local tekst=parametry_modul.PobierzParametryRamki(frame)(); </syntaxhighlight> Wtedy ta zmienna w przedostatnim przykładzie jest pod wartością {{Code|tekst}}, gdy wartość {{Code|frame}} jest tablicą, lub może być jedyną wartością, którą jest {{Code|frame}} jako zmienna nietablicowa, wtedy ta zmienna też jest pod {{Code|tekst}}, ta funkcja uzyskana z: {{Code|{{sr|#p.PobierzParametryRamki(frame)|p=Parametry}}}}, wtedy może być wywołana tylko raz z nienilową wartością zwracaną, następnym razem zwraca wartość {{Code|nil}}, wtedy to dotyczy przedostatniego i ostatniego przykładu. Jeżeli {{Code|frame}} jest nietablicowa, to wtedy wartość {{Code|tekst}} jest taka sama, co {{Code|frame}}. A jeżeli jest tablicą, to ta wartością jest {{Code|frame.args["tekst"]}}, lub gdy {{Code|args}} nie istnieje, lub istnieje, ale jest nietablicowa, to wtedy ta wartość jest {{Code|frame["tekst"]}}. A gdy zmienne istnieją pod wieloma kluczami, lub gdy funkcję wywołano ze zmienną nietablicową, wtedy ogólnie możemy dla przykładu powiedzieć: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local PobierzParametryRamki=parametry_modul.PobierzParametryRamki(frame); local wartosc1=PobierzParametryRamki("nazwa1") or PobierzParametryRamki(1); local wartosc2=PobierzParametryRamki("nazwa2") or PobierzParametryRamki(2); local wartosc3=PobierzParametryRamki("nazwa3") or PobierzParametryRamki(3); </syntaxhighlight> Wtedy ta zmienna jest pod kluczem, np.: {{Code|nazwa1}} lub {{Code|1}}, tablicy ramki {{Code|frame}} tablicy transportu, następne wywołania dla następnych kluczy też zrzucą pewne wartości, lub jest ona zwykłą nietablicową wartością mogącą być równą nawet {{Code|nil}}. Następne wywołania uzyskanej tak funkcji w przypadku, gdy {{Code|frame}} jest nietablicowy, rzucać będzie z samej definicji funkcji wartości {{Code|nil}}, czyli {{Code|wartosc2{{=}}wartosc3{{=}}nil}}, ale za to wartość {{Code|wartosc1}} nie musi być, ale może, wartością {{Code|nil}}, jest tą wartością, gdy {{Code|frame{{=}}nil}}, w przeciwnym wypadku za pierwszym razem tej wartości nietablicowej uzyskamy wartość nie {{Code|nil}}, a za drugim i dalszym zawsze wartość {{Code|nil}}. == {{Code|p.PobierzElementNumerowanyZFrameLubTablicy}} == Definicja skrótowa funkcji jest z parametrem charakteryzującym pewien zestaw zmiennych {{Code|frame}}, które nie jest tablicą ramki tablicy transportu, tylko innym parametrem, który jest tablicą parametrów podanych do funkcji, nawet gdy parametrem podanym do funkcji, w której wykorzystujemy tą funkcję, jest jedyna zmienna będąca tablicą ramki, ale z drugiej strony tak nie musi być, może być to rozbudowany zestaw zmiennych, np. nazwanych i nienazwanych, którego wszystkie sposoby podawania łączymy jednym sposobem podawania. Mimo że parametry funkcji są parametrami nienazwanymi, mogą być one ponumerowane, ale zmienna w tablicy może przyjmować wartość tą samą na różne sposoby, raz w sposób nazwany, a za innym sposobem jako nienazwany. Ogólnie ostateczne parametry łączymy w dane parametry za pomocą jednego sposobu, tzn. za pomocą tej funkcji, i dla tak uzyskanej tablicy tworzymy funkcję zwracaną przez funkcję w nagłówku, która przyjmuje parametr, który jest kluczem tej uzyskanej tablicy. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobierzElementNumerowanyZFrameLubTablicy(frame)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu. }} Weźmy najprostszy sposób realizacji tej funkcji, w realizacji: {{Code|1-1, 2-2, 3-3}}, czyli ten opis jest zaraz poniżej. Weźmy funkcję, którą można wywoływać z wieloma parametrami, jak i w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, którą przykładowo piszemy jego wywołanie wewnątrz innej funkcji na pięć sposobów, czyli teraz pierwszy sposób z tylko z parametrem, więc tablicą ramki tablicy transportu wywodzącą się z ramki uruchomioną w wikikodzie w jakimś szablonie rodzicu: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"](frame); </syntaxhighlight> a teraz drugi sposób, pisząc, bezpośrednio inaczej, formułując wywołanie tej funkcji, używając zmiennych tablicowych tablicy ramki, ale to nie jest tak naprawdę tablica ramka tablicy transportu, tylko parametr podany bezpośrednio do funkcji, tak jak się to robi w języku {{lpg|Lua}}, nie jak w przykładzie powyżej, więc: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"]{args={"wartość1","wartość2","wartość3",},}; </syntaxhighlight> Lub równoważnie, pisząc, nie używając zmiennej {{Code|args}}: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"]{"wartość1","wartość2","wartość3",}; </syntaxhighlight> Albo te parametry wsadzając do funkcji: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"]("wartość1","wartość2","wartość3"); </syntaxhighlight> Można też wywołać to wszystko w ramce, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w wikikpdzie, wtedy wsadzając parametry do ramki: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|wartość1|wartość2|wartość3}} </syntaxhighlight> A jak połączyć wszystkie te pięć sposobów, posługiwać się tymi sposobami wewnątrz funkcji {{Code|Nazwa funkcji}} w sposób jednolity, jedynie wtedy należy skorzystać z funkcji z definiowaną w jakimś module w sposób: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(...) local tablica_prametrow_funkcji={...}; local parametry_modul=require("Module:Parametry"); local PobierzElementNumerowanyZFrameLubTablicy=parametry_modul.PobierzElementNumerowanyZFrameLubTablicy(tablica_prametrow_funkcji); ... end; </syntaxhighlight> Wtedy za pomocą zmiennej {{Code|PobierzElementNumerowanyZFrameLubTablicy}} dostaliśmy się do funkcji, która przyjmuje jedyny parametr, aby dostać się do elementów tablicy uzyskanej w wewnątrz tej funkcji, zdefiniowaną w tablicy {{Code|tablica_prametrow_funkcji}}, która jest nic innym jak zestawem parametrów w funkcji: {{Code|Nazwa funkcji}}. W pierwszym i drugim sposobem zmienna ta nazwijmy to jako {{Code|args}} jest zmienną z podtablicy innego {{Code|args}} przekazanych jako parametr tablicy do funkcji, w trzecim sposobie tą zmienną jest cała tablica, a czwartym jest zestaw parametrów. A czym się różnią się te sposoby, a więc te sposoby można powiązać jedną tylko funkcją powiedzianą w nagłówku według przykładu podaną zaraz powyżej, wtedy możemy dostawać się do tych samych zmiennych o takich samych nazwach i wartościach, ale w różnych reprezentacjach na różne sposoby, wtedy można powiedzieć, że: <syntaxhighlight lang="lua"> args[1]="wartość1"; args[2]="wartość2"; args[3]="wartość3"; </syntaxhighlight> Czyli w wyniku działania funkcji w nagłówku, otrzymamy funkcję zwracającą te wartości, która operuje na tej tablicy, której wynikiem jest zestaw zmiennych ponumerowanych, ogólnie nienazwanych, której wartości odpowiadają te podane w ramce ostatniej powyżej. Na podstawie tego wiemy, jak działa funkcja ta z nagłówka. Pisząc w inny sposób, można też wskazywać: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(...) local tablica_prametrow_funkcji={...}; local parametry_modul=require("Module:Parametry"); local PobierzElementNumerowanyZFrameLubTablicy=parametry_modul.PobierzElementNumerowanyZFrameLubTablicy(tablica_prametrow_funkcji); local wartosc1=PobierzElementNumerowanyZFrameLubTablicy("nazwa1") or PobierzElementNumerowanyZFrameLubTablicy(1); local wartosc2=PobierzElementNumerowanyZFrameLubTablicy("nazwa2") or PobierzElementNumerowanyZFrameLubTablicy(2); local wartosc3=PobierzElementNumerowanyZFrameLubTablicy("nazwa3") or PobierzElementNumerowanyZFrameLubTablicy(3); end; </syntaxhighlight> Zmienne w przykładzie o kluczach: {{Code|nazwa1}}, {{Code|nazwa2}} i {{Code|nazwa3}}, posiadające pewne swoje wartości, to są zmienne w tablicy {{Code|tablica_prametrow_funkcji}}, podane też jako zmienne, jako pewne argumenty tablicy, który są w tej funkcji zwracanej jako argument (parametr) funkcji, jeżeli argumenty podano w postaci jednego parametru funkcji w postaci pewnej tablicy z np. elementami nazwanymi, lub jako wiele argumentów w ramce, w wikikodzie, w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w pewnym szablonie, a rozpatrując dalej elementy względem ich nazw, np. alternatywnych, to te numery mogą być: {{Code|1}}, {{Code|2}} i {{Code|3}}, to jest numer parametru, jeżeli argumenty do funkcji podano w postaci wielu jego parametrów. == {{Code|p.PobierzParametr}} == Ta funkcja zwraca znów inną funkcję, która ma jedyny parametr, mówiący jakiego parametru poszukujemy, co jest wyjaśnione w definicji funkcji z nagłówka, że ona zwraca tą właśnie funkcje. Definicja skrótowa dunkcji: <syntaxhighlight lang="lua"> function p.PobierzParametr(frame,czy_frame_lub_parent,czy_frame) ... return function(nazwa) return __pobierz_parametr_table_args(nazwa); end; end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu. | 2 = {{Code|czy_frame_lub_parent}} i {{Code|czy_frame}} | _2 = Parametry logiczne dodatkowe funkcji. }} Funkcja zwraca jednocześnie dwie wartości, ta zwrócona z funkcji z nagłówka, prawdziwą wartość, i numer metody w postaci: {{Code|return wartosc, numer_metody}}. Ta funkcja zwracana ma w swojej definicji inną jeszcze funkcję z tym samym parametrem, co jego rodzic, i to jest za każdym razem inna funkcja w zależności z jakim typem danych się posługujemy {{Code|frame}} i jakie podaliśmy parametry. Gdy warunkiem, gdy zmienna {{Code|frame}} jest tablicą, czyli te zmienne druga: {{Code|czy_frame_lub_parent}} (jeżeli funkcja jest uruchomiona w ramce w szablonie, jeżeli ma wartość {{Code|true}}, to ona wybiera raz parametr z: {{Code|frame.args[nazwa or 1]}}, a za innym razem z {{Code|pf.args[nazwa or 1]}}, gdzie {{Code|pf{{=}}frame:getParent()}}, tutaj jest zwracana wartość: {{Code|return wartosc,2}}). Czy trzecia: {{Code|czy_frame}} (która mówi, jeżeli funkcję uruchomiono w ramce, ale przy wartości prawdziwej tego pierwszego podanego parametru, czyli {{Code|true}}, wybierana jest zawsze wartość {{Code|frame.args[nazwa or 1}}}, w przeciwnym wypadku uruchamiana jest funkcja {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, tutaj zwracana jest wartość {{Code|return wartosc,1}}). Jeżeli wartością {{Code|frame}} jest wartość nietablicowa, ale niebędącą wartością {{Code|nil}}, wtedy ustawiana jest funkcja, która tylko za pierwszym razem zwraca nienilową wartość {{Code|return wartosc,0}}, a później zwraca wartość {{Code|return nil,0}}. Gdy wartością {{Code|frame}} jest {{Code|nil}}, to funkcja zawsze wraca tą wartość {{Code|return nil,0}}. Powyższy sposób działa również dobrze, gdy zdefiniujemy w parametrach funkcji fałszywą funkcję {{Code|frame.getParent}}. Gdy funkcja nie jest uruchamiana w ramce lub funkcja {{Code|frame.getParent}} nie jest zdefiniowana, to wtedy funkcja wchodzi zawsze w ten jej krok, jakby {{Code|czy_frame_lub_parent}} było {{Code|false}} według tego powyżej, to wtedy brana jest zmienna {{Code|czy_frame}}, i jaką wartość ona przyjmuje. Funkcję pisze się według sposobu, którą się wywołuje według: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame); local wartosc1=PobierzParametr("nazwa1") or PobierzParametr(1); local wartosc2=PobierzParametr("nazwa2") or PobierzParametr(2); local wartosc3=PobierzParametr("nazwa3") or PobierzParametr(3); </syntaxhighlight> Na wypadek wartości nietabelowej, tą wartość zapisuje się jako pierwszą w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a dla wartości tabelowych, jaka jest kolejność to jest obojętne, byle by to było sensowne. Tę funkcję podobnie się wywołuje jak funkcję: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}. Wartością {{Code|frame}} nie musi być tablica ramki tablicy transportu, równie dobrze może być to dowolna tablica lub wartość nietablicowa. Weźmy ramkę, w której uruchamiamy funkcję ramki: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}} </syntaxhighlight> Ona musi być wywołana z parametrem {{Parametr|wyspecjalizowana|tak}}, jako podpowiedź, że liczą się parametry ramki dziecka, a nie jego rodzica, czyli szablonu. Wtedy funkcję {{Code|Nazwa funkcji}} definiujemy: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame,true); ... end; </syntaxhighlight> Wtedy parametr {{Parametr|wyspecjalizowana|tak}} jest ignorowany, a przy wartości {{Code|false}} drugiego parametru funkcji, czyli wywołania: {{Code|local PobierzParametr{{=}}parametry_modul.PobierzParametr(frame,false);}}, już nie, ale nie zawsze. W takim przypadku według powyższego przykładu raz jest brana wartość, jeżeli istnieje, z {{Code|frame.args}}, a jak ona nie istnieje, to wtedy z: {{Code|pf.args}}. Weźmy inny przypadek: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame,false,true); ... end; </syntaxhighlight> Przy tym też parametr: {{Parametr|wyspecjalizowana|tak}}, jest ignorowany, wtedy jest zawsze wybierana do rozważań tablica: {{Code|frame.args}}. Znów w innym przypadku, gdzie parametr: {{Parametr|wyspecjalizowana|tak}}, jest zawsze rozważany w naszym wypadku: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame,false,false); ... end; </syntaxhighlight> To to wywołanie, wtedy dokładnie działa jak funkcja: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, a zwrócona funkcja: {{Code|PobierzParametr}} pobiera elementy z tak uzyskanej tablicy {{Code|args}} poprzez nią. W przypadku, gdy {{Code|frame}} nie jest tablicą, wtedy parametry: {{Code|czy_frame_lub_parent}} i {{Code|czy_frame}}, są w takim przypadku zawsze ignorowane, ale muszą być ustawione na wypadek, gdyby do funkcji {{Code|Nazwa funkcji}} wsadzono tablicę, np. z ramki, tzn. tablicę ramki funkcji tablicy transportu. Najprostszym często ogólnym przykładem, który prawie zawsze jest stosowany: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame); ... end; </syntaxhighlight> Wtedy parametr: {{Parametr|wyspecjalizowana|tak}}, jest prawie zawsze nieignorowany, ale nie zawsze. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> jp2w8qmvke9ffmyc50fdy63by2hvasv 555731 555730 2026-09-11T18:37:35Z Persino 2851 /* {{Code|p.PobierzParametryRamki}} */ 555731 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} Są tutaj przedstawione funkcje parametrów. == {{Code|p.PobierzFrameEwentualnieParent}} == Argument tej funkcji {{Code|frame}} koniecznie musi być tablicą, w przypadku przeciwnym wywoła to błąd języka {{lpg|Lua}}, że z wartości nietabelowej chcemy wyliczyć jego nieistniejący element {{Code|getParent}}, który ma prawo nie być. Funkcja pobiera parametry ramki szablonu rodzica, a nie dziecka, a jeżeli w dziecku w ramce w wikikodzie w szablonie podamy specjalny parametr {{Parametr|wyspecjalizowana|tak}}, to wtedy ta funkcja ściąga parametry ramki. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobierzFrameEwentualnieParent(frame)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu. }} Tą funkcją można sterować ze strony ramki tym właśnie specjalnym parametrem o wartości niepustej, którą jest {{Parametr|wyspecjalizowana|tak}}. W ramce podajemy argumenty wraz z tym specjalnym parametrem: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}} </syntaxhighlight> To wtedy w kodzie w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} w module o nazwie {{Code|Nazwa modułu}}, piszemy: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzFrameEwentualnieParent(frame).args; .... end; </syntaxhighlight> To wtedy w kodzie ściągane parametry ramki dziecka. Tę funkcję można równie dobrze wykorzystać do zwykłych tabel: <syntaxhighlight lang="lua"> local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzFrameEwentualnieParent(tabela); </syntaxhighlight> A w tym przypadku ta funkcja nic nie robi, tylko zmienna {{Code|args}} referencyjnie wskazuje na tablicę {{Code|tablica}}. Ale można ją wykorzystać, gdy by funkcja {{Code|Nazwa funkcji}}, była uruchomiona ze zwykłą tablicą, ale z możliwością, że to może być tablicą ramki {{Code|frame}} tablicy transportu, np.: <syntaxhighlight lang="lua"> --- Pierwsza możliwość; local wartosc1=p["Nazwa funkcji"](frame); -- Druga możliwość local wartosc2=p["Nazwa funkcji"]{["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; </syntaxhighlight> Dla obu jest taka niedogodność, że jedynie jest taka nieprawidłowość, że w przypadku parametru tablicy ramki tablicy transportu należy podawać uzyskany element {{Code|args}}, a w przypadku zwykłej tablicy już nie, tą niedokodność rozwiązuje funkcja: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}. == {{Code|p.PobierzArgsParametry}} == Argument tej funkcji {{Code|frame}} koniecznie nie musi być tablicą, bo wtedy nie wywoła to błędu języka {{lpg|Lua}}, że z wartości nietabelowej chcemy wyliczyć jego niepusty element {{Code|getParent}}, bo przedtem sprawdzana jest w tej funkcji, czy jest to tablica. W definicji tej funkcji zmienna uzyskana z funkcji: {{Code|{{sr|#p.PobierzFrameEwentualnieParent(frame)|p=Parametry}}}}, a jeśli jej składowa {{Code|args}} jest tablicą, to jest właśnie ona zwracana, a jeśli istnieje, ale nie jest tablicą, lub ona nie istnieje, to wtedy brana jest właśnie wartość tablicowa {{Code|frame}}, jeśli jest ona taka, a gdy nie, to wtedy z tej funkcji tutaj nie korzystamy. Funkcja pobiera parametry ramki szablonu rodzica, a nie dziecka, a jeżeli w dziecku w ramce w wikikodzie w szablonie podamy specjalny parametr {{Parametr|wyspecjalizowana|tak}}, to wtedy ta funkcja ściąga parametry ramki. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobierzArgsParametry(frame, czy_nie_tablica_jako_tablica)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica transportu ramki. | 2 = {{Code|czy_nie_tablica_jako_tablica}} | _2 = Czy wartości nietablicowe umieszczać w jednoelemenowej tabeli. }} Funkcja wykorzystuje wspomnianą powyżej funkcję do swojego działania, ona jest wtedy aktywowana, gdy zmienna {{Code|frame}} jest tablicą, i jest sprawdzane, czy ona posiada nazwany element o kluczu {{Code|args}}, i czy jest on tablicowy. Jeżeli wartością zmiennej {{Code|frame}} nie jest tablica, ale nie przybiera wartości {{Code|nil}}, to ona jest umieszczana w tablicy, jeżeli zmiennej {{Code|czy_nie_tablica_jako_tablica}} przydzielimy wartość {{Code|true}}, w przeciwnym wypadku zwracana jest ona w postaci niezmienionej, a jeżeli wartość tej zmiennej nie istnieje, to zwracana jest zwykła tablica pusta. Tą funkcją można sterować ze strony ramki tym właśnie specjalnym parametrem o wartości niepustej. W ramce podajemy argumenty wraz z tym specjalnym parametrem: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}} </syntaxhighlight> To wtedy w kodzie w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} w module o nazwie {{Code|Nazwa modułu}}, piszemy: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(frame); .... end; </syntaxhighlight> To wtedy w kodzie ściągane parametry ramki dziecka. Tę funkcję można równie dobrze wykorzystać do zwykłych tabel: <syntaxhighlight lang="lua"> local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(tabela); </syntaxhighlight> A w tym przypadku ta funkcja nic nie robi, tylko zmienna {{Code|args}} referencyjnie wskazuje na tablicę {{Code|tablica}}. Ale można ją wykorzystać, gdyby funkcja {{Code|Nazwa funkcji}}, była uruchomiona ze zwykłą tablicą, ale z możliwością, że to może być tablicą ramki {{Code|frame}} tablicy transportu, np.: <syntaxhighlight lang="lua"> --- Pierwsza możliwość; local wartosc1=p["Nazwa funkcji"](frame); -- Druga możliwość local wartosc2=p["Nazwa funkcji"]{["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; </syntaxhighlight> Dla obu tych przypadków nie ma żadnej niedogodności, jak to występowała w {{Code|{{sr|#p.PobierzFrameEwentualnieParent(frame)|p=Parametry}}}}. Jeśliby do funkcji tablicy transportu dać wartość równą nie tablicy, to wtedy równoważnie możemy napisać: <syntaxhighlight lang="lua"> local wartosc="wartość"; local wynik=p["Nazwa funkcji"](wartosc); </syntaxhighlight> to wtedy definicję tej funkcji piszemy: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(frame,true); local wartosc=args[1]; end; </syntaxhighlight> lub równoważnie możemy zapisać: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); local wartosc=parametry_modul.PobierzArgsParametry(frame); end; </syntaxhighlight> A jeżeli nie wsadziliśmy żadnej wartości do funkcji ramki tablicy transportu lub tą wartością jest {{Code|nil}}, wtedy: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"](); </syntaxhighlight> wtedy definicja tej funkcji wygląda: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); -- Zmienna: args, wskazuje na wartość, którą jest tablicą pustą, tzn. w tej tablicy nie ma wcale elementów; local args=parametry_modul.PobierzArgsParametry(frame); end; </syntaxhighlight> Widzimy, że wtedy zmienna {{Code|args}} jest normalną pustą tablicą, i nie musimy wtedy wcale pisać poniżej, bo wtedy wychodzi w tym przypadku na to samo: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(frame,true); </syntaxhighlight> Argument drugi w {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, który w naszym przypadku musi mieć wartość {{Code|true}}, a wtedy jest jedynie sens, gdy {{Code|frame}} nie jest tablicą, i gdy chcemy tą wartość umieścić w tablicy, a nie powtórzyć wartość, tzn. chcemy napisać: {{Code|{{(}}frame,{{)}}}}, w przeciwnym wypadku musilibyśmy napisać coś w rodzaju, zamiast tak spreparowanej tablicy: {{Code|frame}}, czyli: <syntaxhighlight lang="lua"> -- Pierwszy przypadek, gdy frame jest wartością nietablicową; local parametry_modul=require("Module:Parametry"); ... -- Zwracana wartość: args, to nic innego niż: {frame,}; local args=parametry_modul.PobierzArgsParametry(frame,true); ... -- Zwracana wartość: args, to nic innego niż: frame, a nie {frame,}, jak poprzednio; local args=parametry_modul.PobierzArgsParametry(frame); </syntaxhighlight> == {{Code|p.PobierzParametryRamki}} == Funkcja służy do ustawienia pewnych domyślnych dwóch pewnych funkcji służących do pobieranie danych z tabelki z pierwszej tej funkcji: * Jeżeli ona posiada klucz o wartości {{Code|args}}, ** to zwracana jest ta właśnie tablica jako argument pierwszej tej funkcji, jeżeli jest w ogóle tablicą, ** w przeciwnym wypadku zwracana jest ta oryginalna tablica też jako argument tej funkcji, * w przeciwnym dalszym wypadku zwracana jest zwracana wartość ta jako argument tej drugiej funkcji, która zwraca prawdziwą wartość z argumentu tylko za pierwszym razem, z tej funkcji, za następnym i dalszym razem {{Code|nil}}. Z tak utworzonej ogólnie większej funkcji wykorzystywana jest w budowie omawianej funkcji, która jest zwracana przez omawianą funkcję, która względem jego budowy wywołuje raz pierwszą albo drugą poprzednią wspomnianą funkcję zależną od rodzaju zmiennej {{Code|frame}}, która może być tabelką, ale nie musi być. Ta funkcja zwracana przez funkcję w nagłówku przyjmuje argument, która jest kluczem do tych wspomnianych, może że, * tabel (dokładnie, która ta może tabelka to zależy od formatu tej naszej rozważanej zmiennej), * a jeżeli to nie tabelka, co jest zwracane, to już zostało powiedziane. Definicja skrótowa tej funkcji jest: <syntaxhighlight lang="lua"> function p.PobierzParametryRamki(frame)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu. }} Weźmy ramkę sformułowaną w wikikodzie jako dziecko w szablonie rodzicu: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5}} </syntaxhighlight> To wtedy tablica ramki tablicy transportu posiada właśnie {{Code|frame}}, która jest tablicą, i na pewno posiada tablicę o nazwie {{Code|args}}, to wtedy tę funkcję wywołaną w ramce, która wywołuje funkcję w nagłówku, formułujemy: <syntaxhighlight lang="lua"> local p={}; local p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametryRamki=parametry_modul.PobierzParametryRamki(frame); ... end; </syntaxhighlight> Równie dobrze funkcję z ramki można wywołać w sposób, co wtedy ta funkcja też zostanie wywołana pozytywnie: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"]{args={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}}; </syntaxhighlight> W tej funkcji nie trzeba definiować funkcji fałszywej {{Code|getParent}}, w postaci: {{Code|getParent{{=}}function()end}}. Widzimi, że ta tablica posiada nazwę zmiennej tablicowej o nazwie {{Code|args}}, ale ona nie jest tablicą ramki tablicy transportu, ale tą tablicę możemy bezposrednio wsadzić w tą główną tablicę w samym argumencie funkcji. Równie dobrze możemy wywołać tę funkcję zdefiniowaną naszą w jakimś module w sposób: <syntaxhighlight lang="lua"> local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; local wynik=p["Nazwa funkcji"]{tabela); </syntaxhighlight> też ta funkcja prawidłowo się wywoła. W tym przypadku, jak i w przypadkach powyżej, wyniki uzyskuje się w następującym wywołaniach: <syntaxhighlight lang="lua"> --- Zmienna: wartosc1, przyjmuje wartość: "wartość1"; local wartosc1=PobierzParametryRamki("nazwa1"); --- Zmienna: wartosc2, przyjmuje wartość: "wartość2"; local wartosc2=PobierzParametryRamki("nazwa2"); --- Zmienna: wartosc3, przyjmuje wartość: "wartość3"; local wartosc3=PobierzParametryRamki(1); </syntaxhighlight> W innym przypadku wywołań funkcji ramki jest wsadzenie do niej zwykłego nietablicowego elementu, może być też to wartość: {{Code|nil}}. A to wywołanie jest: <syntaxhighlight lang="lua"> local wartosc="wartość"; --Zmienna: wartosc, nie jest w tym przypadku tablicą; local wynik=p["Nazwa funkcji"](wartosc); </syntaxhighlight> Wtedy w tej ramce w celu uzyskania jakikolwiek wartości jest przykład wywołania tej funkcji zwracanej przez funkcję w ramce z argumentem pustym. <syntaxhighlight lang="lua"> -- Zmienna: wartość1, przyjmuje wartość: "wartość"; Jeżeli ona, przyjmuje wartość: nil, to wywołanie rzuci: nil, i za każdym następny razem; local wartosc1=PobierzParametryRamki(); -- Zmienna: wartość2, przyjmuje wartość: nil; local wartosc2=PobierzParametryRamki(); </syntaxhighlight> W wywołaniach powinno dbać się o właściwą kolejność wywołań, bo argumentem funkcji z tablicy transportu może być zwykła tablicowa wartość. Najpierw uzyskujemy wartości nietablicowe, a później tablicowe, na wypadek niewiadomej {{Code|frame}} jakiego typu ma być wartość. Też ta zmienna może istnieć pod kilkoma możliwymi kluczami, lub tą zmienną może być jedyny argument funkcji, która jest nietablicową wartością, wtedy ją się wywołuje jako dla przypadku, gdy parametr jest nietablicowy lub jest pod kluczem {{Code|tekst}}: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local tekst=parametry_modul.PobierzParametryRamki(frame)("tekst"); </syntaxhighlight> Lub chcemy tę funkcję wywołać bezparametrowo, gdy chcemy, by {{Code|frame}} nie była tablicą: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local tekst=parametry_modul.PobierzParametryRamki(frame)(); </syntaxhighlight> Wtedy ta zmienna w przedostatnim przykładzie jest pod wartością {{Code|tekst}}, gdy wartość {{Code|frame}} jest tablicą, lub może być jedyną wartością, którą jest {{Code|frame}} jako zmienna nietablicowa, wtedy ta zmienna też jest pod {{Code|tekst}}, ta funkcja uzyskana z: {{Code|{{sr|#p.PobierzParametryRamki(frame)|p=Parametry}}}}, wtedy może być wywołana tylko raz z nienilową wartością zwracaną, następnym razem zwraca wartość {{Code|nil}}, wtedy to dotyczy przedostatniego i ostatniego przykładu. Jeżeli {{Code|frame}} jest nietablicowa, to wtedy wartość {{Code|tekst}} jest taka sama, co {{Code|frame}}. A jeżeli jest tablicą, to ta wartością jest {{Code|frame.args["tekst"]}}, lub gdy {{Code|args}} nie istnieje, lub istnieje, ale jest nietablicowa, to wtedy ta wartość jest {{Code|frame["tekst"]}}. A gdy zmienne istnieją pod wieloma kluczami, lub gdy funkcję wywołano ze zmienną nietablicową, wtedy ogólnie możemy dla przykładu powiedzieć: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local PobierzParametryRamki=parametry_modul.PobierzParametryRamki(frame); local wartosc1=PobierzParametryRamki("nazwa1") or PobierzParametryRamki(1); local wartosc2=PobierzParametryRamki("nazwa2") or PobierzParametryRamki(2); local wartosc3=PobierzParametryRamki("nazwa3") or PobierzParametryRamki(3); </syntaxhighlight> Wtedy ta zmienna jest pod kluczem, np.: {{Code|nazwa1}} lub {{Code|1}}, tablicy ramki {{Code|frame}} tablicy transportu, następne wywołania dla następnych kluczy też zrzucą pewne wartości, lub jest ona zwykłą nietablicową wartością mogącą być równą nawet {{Code|nil}}. Następne wywołania uzyskanej tak funkcji w przypadku, gdy {{Code|frame}} jest nietablicowy, rzucać będzie z samej definicji funkcji wartości {{Code|nil}}, czyli {{Code|wartosc2{{=}}wartosc3{{=}}nil}}, ale za to wartość {{Code|wartosc1}} nie musi być, ale może, wartością {{Code|nil}}, jest tą wartością, gdy {{Code|frame{{=}}nil}}, w przeciwnym wypadku za pierwszym razem tej wartości nietablicowej uzyskamy wartość nie {{Code|nil}}, a za drugim i dalszym zawsze wartość {{Code|nil}}. == {{Code|p.PobierzElementNumerowanyZFrameLubTablicy}} == Definicja skrótowa funkcji jest z parametrem charakteryzującym pewien zestaw zmiennych {{Code|frame}}, które nie jest tablicą ramki tablicy transportu, tylko innym parametrem, który jest tablicą parametrów podanych do funkcji, nawet gdy parametrem podanym do funkcji, w której wykorzystujemy tą funkcję, jest jedyna zmienna będąca tablicą ramki, ale z drugiej strony tak nie musi być, może być to rozbudowany zestaw zmiennych, np. nazwanych i nienazwanych, którego wszystkie sposoby podawania łączymy jednym sposobem podawania. Mimo że parametry funkcji są parametrami nienazwanymi, mogą być one ponumerowane, ale zmienna w tablicy może przyjmować wartość tą samą na różne sposoby, raz w sposób nazwany, a za innym sposobem jako nienazwany. Ogólnie ostateczne parametry łączymy w dane parametry za pomocą jednego sposobu, tzn. za pomocą tej funkcji, i dla tak uzyskanej tablicy tworzymy funkcję zwracaną przez funkcję w nagłówku, która przyjmuje parametr, który jest kluczem tej uzyskanej tablicy. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobierzElementNumerowanyZFrameLubTablicy(frame)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu. }} Weźmy najprostszy sposób realizacji tej funkcji, w realizacji: {{Code|1-1, 2-2, 3-3}}, czyli ten opis jest zaraz poniżej. Weźmy funkcję, którą można wywoływać z wieloma parametrami, jak i w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, którą przykładowo piszemy jego wywołanie wewnątrz innej funkcji na pięć sposobów, czyli teraz pierwszy sposób z tylko z parametrem, więc tablicą ramki tablicy transportu wywodzącą się z ramki uruchomioną w wikikodzie w jakimś szablonie rodzicu: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"](frame); </syntaxhighlight> a teraz drugi sposób, pisząc, bezpośrednio inaczej, formułując wywołanie tej funkcji, używając zmiennych tablicowych tablicy ramki, ale to nie jest tak naprawdę tablica ramka tablicy transportu, tylko parametr podany bezpośrednio do funkcji, tak jak się to robi w języku {{lpg|Lua}}, nie jak w przykładzie powyżej, więc: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"]{args={"wartość1","wartość2","wartość3",},}; </syntaxhighlight> Lub równoważnie, pisząc, nie używając zmiennej {{Code|args}}: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"]{"wartość1","wartość2","wartość3",}; </syntaxhighlight> Albo te parametry wsadzając do funkcji: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"]("wartość1","wartość2","wartość3"); </syntaxhighlight> Można też wywołać to wszystko w ramce, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w wikikpdzie, wtedy wsadzając parametry do ramki: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|wartość1|wartość2|wartość3}} </syntaxhighlight> A jak połączyć wszystkie te pięć sposobów, posługiwać się tymi sposobami wewnątrz funkcji {{Code|Nazwa funkcji}} w sposób jednolity, jedynie wtedy należy skorzystać z funkcji z definiowaną w jakimś module w sposób: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(...) local tablica_prametrow_funkcji={...}; local parametry_modul=require("Module:Parametry"); local PobierzElementNumerowanyZFrameLubTablicy=parametry_modul.PobierzElementNumerowanyZFrameLubTablicy(tablica_prametrow_funkcji); ... end; </syntaxhighlight> Wtedy za pomocą zmiennej {{Code|PobierzElementNumerowanyZFrameLubTablicy}} dostaliśmy się do funkcji, która przyjmuje jedyny parametr, aby dostać się do elementów tablicy uzyskanej w wewnątrz tej funkcji, zdefiniowaną w tablicy {{Code|tablica_prametrow_funkcji}}, która jest nic innym jak zestawem parametrów w funkcji: {{Code|Nazwa funkcji}}. W pierwszym i drugim sposobem zmienna ta nazwijmy to jako {{Code|args}} jest zmienną z podtablicy innego {{Code|args}} przekazanych jako parametr tablicy do funkcji, w trzecim sposobie tą zmienną jest cała tablica, a czwartym jest zestaw parametrów. A czym się różnią się te sposoby, a więc te sposoby można powiązać jedną tylko funkcją powiedzianą w nagłówku według przykładu podaną zaraz powyżej, wtedy możemy dostawać się do tych samych zmiennych o takich samych nazwach i wartościach, ale w różnych reprezentacjach na różne sposoby, wtedy można powiedzieć, że: <syntaxhighlight lang="lua"> args[1]="wartość1"; args[2]="wartość2"; args[3]="wartość3"; </syntaxhighlight> Czyli w wyniku działania funkcji w nagłówku, otrzymamy funkcję zwracającą te wartości, która operuje na tej tablicy, której wynikiem jest zestaw zmiennych ponumerowanych, ogólnie nienazwanych, której wartości odpowiadają te podane w ramce ostatniej powyżej. Na podstawie tego wiemy, jak działa funkcja ta z nagłówka. Pisząc w inny sposób, można też wskazywać: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(...) local tablica_prametrow_funkcji={...}; local parametry_modul=require("Module:Parametry"); local PobierzElementNumerowanyZFrameLubTablicy=parametry_modul.PobierzElementNumerowanyZFrameLubTablicy(tablica_prametrow_funkcji); local wartosc1=PobierzElementNumerowanyZFrameLubTablicy("nazwa1") or PobierzElementNumerowanyZFrameLubTablicy(1); local wartosc2=PobierzElementNumerowanyZFrameLubTablicy("nazwa2") or PobierzElementNumerowanyZFrameLubTablicy(2); local wartosc3=PobierzElementNumerowanyZFrameLubTablicy("nazwa3") or PobierzElementNumerowanyZFrameLubTablicy(3); end; </syntaxhighlight> Zmienne w przykładzie o kluczach: {{Code|nazwa1}}, {{Code|nazwa2}} i {{Code|nazwa3}}, posiadające pewne swoje wartości, to są zmienne w tablicy {{Code|tablica_prametrow_funkcji}}, podane też jako zmienne, jako pewne argumenty tablicy, który są w tej funkcji zwracanej jako argument (parametr) funkcji, jeżeli argumenty podano w postaci jednego parametru funkcji w postaci pewnej tablicy z np. elementami nazwanymi, lub jako wiele argumentów w ramce, w wikikodzie, w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w pewnym szablonie, a rozpatrując dalej elementy względem ich nazw, np. alternatywnych, to te numery mogą być: {{Code|1}}, {{Code|2}} i {{Code|3}}, to jest numer parametru, jeżeli argumenty do funkcji podano w postaci wielu jego parametrów. == {{Code|p.PobierzParametr}} == Ta funkcja zwraca znów inną funkcję, która ma jedyny parametr, mówiący jakiego parametru poszukujemy, co jest wyjaśnione w definicji funkcji z nagłówka, że ona zwraca tą właśnie funkcje. Definicja skrótowa dunkcji: <syntaxhighlight lang="lua"> function p.PobierzParametr(frame,czy_frame_lub_parent,czy_frame) ... return function(nazwa) return __pobierz_parametr_table_args(nazwa); end; end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu. | 2 = {{Code|czy_frame_lub_parent}} i {{Code|czy_frame}} | _2 = Parametry logiczne dodatkowe funkcji. }} Funkcja zwraca jednocześnie dwie wartości, ta zwrócona z funkcji z nagłówka, prawdziwą wartość, i numer metody w postaci: {{Code|return wartosc, numer_metody}}. Ta funkcja zwracana ma w swojej definicji inną jeszcze funkcję z tym samym parametrem, co jego rodzic, i to jest za każdym razem inna funkcja w zależności z jakim typem danych się posługujemy {{Code|frame}} i jakie podaliśmy parametry. Gdy warunkiem, gdy zmienna {{Code|frame}} jest tablicą, czyli te zmienne druga: {{Code|czy_frame_lub_parent}} (jeżeli funkcja jest uruchomiona w ramce w szablonie, jeżeli ma wartość {{Code|true}}, to ona wybiera raz parametr z: {{Code|frame.args[nazwa or 1]}}, a za innym razem z {{Code|pf.args[nazwa or 1]}}, gdzie {{Code|pf{{=}}frame:getParent()}}, tutaj jest zwracana wartość: {{Code|return wartosc,2}}). Czy trzecia: {{Code|czy_frame}} (która mówi, jeżeli funkcję uruchomiono w ramce, ale przy wartości prawdziwej tego pierwszego podanego parametru, czyli {{Code|true}}, wybierana jest zawsze wartość {{Code|frame.args[nazwa or 1}}}, w przeciwnym wypadku uruchamiana jest funkcja {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, tutaj zwracana jest wartość {{Code|return wartosc,1}}). Jeżeli wartością {{Code|frame}} jest wartość nietablicowa, ale niebędącą wartością {{Code|nil}}, wtedy ustawiana jest funkcja, która tylko za pierwszym razem zwraca nienilową wartość {{Code|return wartosc,0}}, a później zwraca wartość {{Code|return nil,0}}. Gdy wartością {{Code|frame}} jest {{Code|nil}}, to funkcja zawsze wraca tą wartość {{Code|return nil,0}}. Powyższy sposób działa również dobrze, gdy zdefiniujemy w parametrach funkcji fałszywą funkcję {{Code|frame.getParent}}. Gdy funkcja nie jest uruchamiana w ramce lub funkcja {{Code|frame.getParent}} nie jest zdefiniowana, to wtedy funkcja wchodzi zawsze w ten jej krok, jakby {{Code|czy_frame_lub_parent}} było {{Code|false}} według tego powyżej, to wtedy brana jest zmienna {{Code|czy_frame}}, i jaką wartość ona przyjmuje. Funkcję pisze się według sposobu, którą się wywołuje według: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame); local wartosc1=PobierzParametr("nazwa1") or PobierzParametr(1); local wartosc2=PobierzParametr("nazwa2") or PobierzParametr(2); local wartosc3=PobierzParametr("nazwa3") or PobierzParametr(3); </syntaxhighlight> Na wypadek wartości nietabelowej, tą wartość zapisuje się jako pierwszą w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a dla wartości tabelowych, jaka jest kolejność to jest obojętne, byle by to było sensowne. Tę funkcję podobnie się wywołuje jak funkcję: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}. Wartością {{Code|frame}} nie musi być tablica ramki tablicy transportu, równie dobrze może być to dowolna tablica lub wartość nietablicowa. Weźmy ramkę, w której uruchamiamy funkcję ramki: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}} </syntaxhighlight> Ona musi być wywołana z parametrem {{Parametr|wyspecjalizowana|tak}}, jako podpowiedź, że liczą się parametry ramki dziecka, a nie jego rodzica, czyli szablonu. Wtedy funkcję {{Code|Nazwa funkcji}} definiujemy: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame,true); ... end; </syntaxhighlight> Wtedy parametr {{Parametr|wyspecjalizowana|tak}} jest ignorowany, a przy wartości {{Code|false}} drugiego parametru funkcji, czyli wywołania: {{Code|local PobierzParametr{{=}}parametry_modul.PobierzParametr(frame,false);}}, już nie, ale nie zawsze. W takim przypadku według powyższego przykładu raz jest brana wartość, jeżeli istnieje, z {{Code|frame.args}}, a jak ona nie istnieje, to wtedy z: {{Code|pf.args}}. Weźmy inny przypadek: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame,false,true); ... end; </syntaxhighlight> Przy tym też parametr: {{Parametr|wyspecjalizowana|tak}}, jest ignorowany, wtedy jest zawsze wybierana do rozważań tablica: {{Code|frame.args}}. Znów w innym przypadku, gdzie parametr: {{Parametr|wyspecjalizowana|tak}}, jest zawsze rozważany w naszym wypadku: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame,false,false); ... end; </syntaxhighlight> To to wywołanie, wtedy dokładnie działa jak funkcja: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, a zwrócona funkcja: {{Code|PobierzParametr}} pobiera elementy z tak uzyskanej tablicy {{Code|args}} poprzez nią. W przypadku, gdy {{Code|frame}} nie jest tablicą, wtedy parametry: {{Code|czy_frame_lub_parent}} i {{Code|czy_frame}}, są w takim przypadku zawsze ignorowane, ale muszą być ustawione na wypadek, gdyby do funkcji {{Code|Nazwa funkcji}} wsadzono tablicę, np. z ramki, tzn. tablicę ramki funkcji tablicy transportu. Najprostszym często ogólnym przykładem, który prawie zawsze jest stosowany: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame); ... end; </syntaxhighlight> Wtedy parametr: {{Parametr|wyspecjalizowana|tak}}, jest prawie zawsze nieignorowany, ale nie zawsze. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> t3mp2s76d82zkht4dxv1rp5s6dgxs9n 555732 555731 2026-09-11T18:38:49Z Persino 2851 /* {{Code|p.PobierzParametryRamki}} */ 555732 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} Są tutaj przedstawione funkcje parametrów. == {{Code|p.PobierzFrameEwentualnieParent}} == Argument tej funkcji {{Code|frame}} koniecznie musi być tablicą, w przypadku przeciwnym wywoła to błąd języka {{lpg|Lua}}, że z wartości nietabelowej chcemy wyliczyć jego nieistniejący element {{Code|getParent}}, który ma prawo nie być. Funkcja pobiera parametry ramki szablonu rodzica, a nie dziecka, a jeżeli w dziecku w ramce w wikikodzie w szablonie podamy specjalny parametr {{Parametr|wyspecjalizowana|tak}}, to wtedy ta funkcja ściąga parametry ramki. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobierzFrameEwentualnieParent(frame)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu. }} Tą funkcją można sterować ze strony ramki tym właśnie specjalnym parametrem o wartości niepustej, którą jest {{Parametr|wyspecjalizowana|tak}}. W ramce podajemy argumenty wraz z tym specjalnym parametrem: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}} </syntaxhighlight> To wtedy w kodzie w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} w module o nazwie {{Code|Nazwa modułu}}, piszemy: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzFrameEwentualnieParent(frame).args; .... end; </syntaxhighlight> To wtedy w kodzie ściągane parametry ramki dziecka. Tę funkcję można równie dobrze wykorzystać do zwykłych tabel: <syntaxhighlight lang="lua"> local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzFrameEwentualnieParent(tabela); </syntaxhighlight> A w tym przypadku ta funkcja nic nie robi, tylko zmienna {{Code|args}} referencyjnie wskazuje na tablicę {{Code|tablica}}. Ale można ją wykorzystać, gdy by funkcja {{Code|Nazwa funkcji}}, była uruchomiona ze zwykłą tablicą, ale z możliwością, że to może być tablicą ramki {{Code|frame}} tablicy transportu, np.: <syntaxhighlight lang="lua"> --- Pierwsza możliwość; local wartosc1=p["Nazwa funkcji"](frame); -- Druga możliwość local wartosc2=p["Nazwa funkcji"]{["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; </syntaxhighlight> Dla obu jest taka niedogodność, że jedynie jest taka nieprawidłowość, że w przypadku parametru tablicy ramki tablicy transportu należy podawać uzyskany element {{Code|args}}, a w przypadku zwykłej tablicy już nie, tą niedokodność rozwiązuje funkcja: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}. == {{Code|p.PobierzArgsParametry}} == Argument tej funkcji {{Code|frame}} koniecznie nie musi być tablicą, bo wtedy nie wywoła to błędu języka {{lpg|Lua}}, że z wartości nietabelowej chcemy wyliczyć jego niepusty element {{Code|getParent}}, bo przedtem sprawdzana jest w tej funkcji, czy jest to tablica. W definicji tej funkcji zmienna uzyskana z funkcji: {{Code|{{sr|#p.PobierzFrameEwentualnieParent(frame)|p=Parametry}}}}, a jeśli jej składowa {{Code|args}} jest tablicą, to jest właśnie ona zwracana, a jeśli istnieje, ale nie jest tablicą, lub ona nie istnieje, to wtedy brana jest właśnie wartość tablicowa {{Code|frame}}, jeśli jest ona taka, a gdy nie, to wtedy z tej funkcji tutaj nie korzystamy. Funkcja pobiera parametry ramki szablonu rodzica, a nie dziecka, a jeżeli w dziecku w ramce w wikikodzie w szablonie podamy specjalny parametr {{Parametr|wyspecjalizowana|tak}}, to wtedy ta funkcja ściąga parametry ramki. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobierzArgsParametry(frame, czy_nie_tablica_jako_tablica)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica transportu ramki. | 2 = {{Code|czy_nie_tablica_jako_tablica}} | _2 = Czy wartości nietablicowe umieszczać w jednoelemenowej tabeli. }} Funkcja wykorzystuje wspomnianą powyżej funkcję do swojego działania, ona jest wtedy aktywowana, gdy zmienna {{Code|frame}} jest tablicą, i jest sprawdzane, czy ona posiada nazwany element o kluczu {{Code|args}}, i czy jest on tablicowy. Jeżeli wartością zmiennej {{Code|frame}} nie jest tablica, ale nie przybiera wartości {{Code|nil}}, to ona jest umieszczana w tablicy, jeżeli zmiennej {{Code|czy_nie_tablica_jako_tablica}} przydzielimy wartość {{Code|true}}, w przeciwnym wypadku zwracana jest ona w postaci niezmienionej, a jeżeli wartość tej zmiennej nie istnieje, to zwracana jest zwykła tablica pusta. Tą funkcją można sterować ze strony ramki tym właśnie specjalnym parametrem o wartości niepustej. W ramce podajemy argumenty wraz z tym specjalnym parametrem: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}} </syntaxhighlight> To wtedy w kodzie w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} w module o nazwie {{Code|Nazwa modułu}}, piszemy: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(frame); .... end; </syntaxhighlight> To wtedy w kodzie ściągane parametry ramki dziecka. Tę funkcję można równie dobrze wykorzystać do zwykłych tabel: <syntaxhighlight lang="lua"> local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(tabela); </syntaxhighlight> A w tym przypadku ta funkcja nic nie robi, tylko zmienna {{Code|args}} referencyjnie wskazuje na tablicę {{Code|tablica}}. Ale można ją wykorzystać, gdyby funkcja {{Code|Nazwa funkcji}}, była uruchomiona ze zwykłą tablicą, ale z możliwością, że to może być tablicą ramki {{Code|frame}} tablicy transportu, np.: <syntaxhighlight lang="lua"> --- Pierwsza możliwość; local wartosc1=p["Nazwa funkcji"](frame); -- Druga możliwość local wartosc2=p["Nazwa funkcji"]{["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; </syntaxhighlight> Dla obu tych przypadków nie ma żadnej niedogodności, jak to występowała w {{Code|{{sr|#p.PobierzFrameEwentualnieParent(frame)|p=Parametry}}}}. Jeśliby do funkcji tablicy transportu dać wartość równą nie tablicy, to wtedy równoważnie możemy napisać: <syntaxhighlight lang="lua"> local wartosc="wartość"; local wynik=p["Nazwa funkcji"](wartosc); </syntaxhighlight> to wtedy definicję tej funkcji piszemy: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(frame,true); local wartosc=args[1]; end; </syntaxhighlight> lub równoważnie możemy zapisać: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); local wartosc=parametry_modul.PobierzArgsParametry(frame); end; </syntaxhighlight> A jeżeli nie wsadziliśmy żadnej wartości do funkcji ramki tablicy transportu lub tą wartością jest {{Code|nil}}, wtedy: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"](); </syntaxhighlight> wtedy definicja tej funkcji wygląda: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); -- Zmienna: args, wskazuje na wartość, którą jest tablicą pustą, tzn. w tej tablicy nie ma wcale elementów; local args=parametry_modul.PobierzArgsParametry(frame); end; </syntaxhighlight> Widzimy, że wtedy zmienna {{Code|args}} jest normalną pustą tablicą, i nie musimy wtedy wcale pisać poniżej, bo wtedy wychodzi w tym przypadku na to samo: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(frame,true); </syntaxhighlight> Argument drugi w {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, który w naszym przypadku musi mieć wartość {{Code|true}}, a wtedy jest jedynie sens, gdy {{Code|frame}} nie jest tablicą, i gdy chcemy tą wartość umieścić w tablicy, a nie powtórzyć wartość, tzn. chcemy napisać: {{Code|{{(}}frame,{{)}}}}, w przeciwnym wypadku musilibyśmy napisać coś w rodzaju, zamiast tak spreparowanej tablicy: {{Code|frame}}, czyli: <syntaxhighlight lang="lua"> -- Pierwszy przypadek, gdy frame jest wartością nietablicową; local parametry_modul=require("Module:Parametry"); ... -- Zwracana wartość: args, to nic innego niż: {frame,}; local args=parametry_modul.PobierzArgsParametry(frame,true); ... -- Zwracana wartość: args, to nic innego niż: frame, a nie {frame,}, jak poprzednio; local args=parametry_modul.PobierzArgsParametry(frame); </syntaxhighlight> == {{Code|p.PobierzParametryRamki}} == Funkcja służy do ustawienia pewnych domyślnych dwóch pewnych funkcji służących do pobieranie danych z tabelki z pierwszej tej funkcji: * Jeżeli ona posiada klucz o wartości {{Code|args}}, ** to zwracana jest ta właśnie tablica jako argument pierwszej tej funkcji, jeżeli jest w ogóle tablicą, ** w przeciwnym wypadku zwracana jest ta oryginalna tablica, też jako argument tej funkcji, * w przeciwnym dalszym wypadku zwracana jest zwracana wartość ta, jako argument tej drugiej funkcji, która zwraca prawdziwą wartość z argumentu tylko za pierwszym razem, z tej funkcji, za następnym i dalszym razem {{Code|nil}}. Z tak utworzonej ogólnie większej funkcji wykorzystywana jest w budowie omawianej funkcji, która jest zwracana przez omawianą funkcję, która względem jego budowy wywołuje raz pierwszą albo drugą poprzednią wspomnianą funkcję zależną od rodzaju zmiennej {{Code|frame}}, która może być tabelką, ale nie musi być. Ta funkcja zwracana przez funkcję w nagłówku przyjmuje argument, która jest kluczem do tych wspomnianych, może że, * tabel (dokładnie, która ta może tabelka to zależy od formatu tej naszej rozważanej zmiennej), * a jeżeli to nie tabelka, co jest zwracane, to już zostało powiedziane. Definicja skrótowa tej funkcji jest: <syntaxhighlight lang="lua"> function p.PobierzParametryRamki(frame)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu. }} Weźmy ramkę sformułowaną w wikikodzie jako dziecko w szablonie rodzicu: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5}} </syntaxhighlight> To wtedy tablica ramki tablicy transportu posiada właśnie {{Code|frame}}, która jest tablicą, i na pewno posiada tablicę o nazwie {{Code|args}}, to wtedy tę funkcję wywołaną w ramce, która wywołuje funkcję w nagłówku, formułujemy: <syntaxhighlight lang="lua"> local p={}; local p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametryRamki=parametry_modul.PobierzParametryRamki(frame); ... end; </syntaxhighlight> Równie dobrze funkcję z ramki można wywołać w sposób, co wtedy ta funkcja też zostanie wywołana pozytywnie: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"]{args={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}}; </syntaxhighlight> W tej funkcji nie trzeba definiować funkcji fałszywej {{Code|getParent}}, w postaci: {{Code|getParent{{=}}function()end}}. Widzimi, że ta tablica posiada nazwę zmiennej tablicowej o nazwie {{Code|args}}, ale ona nie jest tablicą ramki tablicy transportu, ale tą tablicę możemy bezposrednio wsadzić w tą główną tablicę w samym argumencie funkcji. Równie dobrze możemy wywołać tę funkcję zdefiniowaną naszą w jakimś module w sposób: <syntaxhighlight lang="lua"> local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; local wynik=p["Nazwa funkcji"]{tabela); </syntaxhighlight> też ta funkcja prawidłowo się wywoła. W tym przypadku, jak i w przypadkach powyżej, wyniki uzyskuje się w następującym wywołaniach: <syntaxhighlight lang="lua"> --- Zmienna: wartosc1, przyjmuje wartość: "wartość1"; local wartosc1=PobierzParametryRamki("nazwa1"); --- Zmienna: wartosc2, przyjmuje wartość: "wartość2"; local wartosc2=PobierzParametryRamki("nazwa2"); --- Zmienna: wartosc3, przyjmuje wartość: "wartość3"; local wartosc3=PobierzParametryRamki(1); </syntaxhighlight> W innym przypadku wywołań funkcji ramki jest wsadzenie do niej zwykłego nietablicowego elementu, może być też to wartość: {{Code|nil}}. A to wywołanie jest: <syntaxhighlight lang="lua"> local wartosc="wartość"; --Zmienna: wartosc, nie jest w tym przypadku tablicą; local wynik=p["Nazwa funkcji"](wartosc); </syntaxhighlight> Wtedy w tej ramce w celu uzyskania jakikolwiek wartości jest przykład wywołania tej funkcji zwracanej przez funkcję w ramce z argumentem pustym. <syntaxhighlight lang="lua"> -- Zmienna: wartość1, przyjmuje wartość: "wartość"; Jeżeli ona, przyjmuje wartość: nil, to wywołanie rzuci: nil, i za każdym następny razem; local wartosc1=PobierzParametryRamki(); -- Zmienna: wartość2, przyjmuje wartość: nil; local wartosc2=PobierzParametryRamki(); </syntaxhighlight> W wywołaniach powinno dbać się o właściwą kolejność wywołań, bo argumentem funkcji z tablicy transportu może być zwykła tablicowa wartość. Najpierw uzyskujemy wartości nietablicowe, a później tablicowe, na wypadek niewiadomej {{Code|frame}} jakiego typu ma być wartość. Też ta zmienna może istnieć pod kilkoma możliwymi kluczami, lub tą zmienną może być jedyny argument funkcji, która jest nietablicową wartością, wtedy ją się wywołuje jako dla przypadku, gdy parametr jest nietablicowy lub jest pod kluczem {{Code|tekst}}: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local tekst=parametry_modul.PobierzParametryRamki(frame)("tekst"); </syntaxhighlight> Lub chcemy tę funkcję wywołać bezparametrowo, gdy chcemy, by {{Code|frame}} nie była tablicą: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local tekst=parametry_modul.PobierzParametryRamki(frame)(); </syntaxhighlight> Wtedy ta zmienna w przedostatnim przykładzie jest pod wartością {{Code|tekst}}, gdy wartość {{Code|frame}} jest tablicą, lub może być jedyną wartością, którą jest {{Code|frame}} jako zmienna nietablicowa, wtedy ta zmienna też jest pod {{Code|tekst}}, ta funkcja uzyskana z: {{Code|{{sr|#p.PobierzParametryRamki(frame)|p=Parametry}}}}, wtedy może być wywołana tylko raz z nienilową wartością zwracaną, następnym razem zwraca wartość {{Code|nil}}, wtedy to dotyczy przedostatniego i ostatniego przykładu. Jeżeli {{Code|frame}} jest nietablicowa, to wtedy wartość {{Code|tekst}} jest taka sama, co {{Code|frame}}. A jeżeli jest tablicą, to ta wartością jest {{Code|frame.args["tekst"]}}, lub gdy {{Code|args}} nie istnieje, lub istnieje, ale jest nietablicowa, to wtedy ta wartość jest {{Code|frame["tekst"]}}. A gdy zmienne istnieją pod wieloma kluczami, lub gdy funkcję wywołano ze zmienną nietablicową, wtedy ogólnie możemy dla przykładu powiedzieć: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local PobierzParametryRamki=parametry_modul.PobierzParametryRamki(frame); local wartosc1=PobierzParametryRamki("nazwa1") or PobierzParametryRamki(1); local wartosc2=PobierzParametryRamki("nazwa2") or PobierzParametryRamki(2); local wartosc3=PobierzParametryRamki("nazwa3") or PobierzParametryRamki(3); </syntaxhighlight> Wtedy ta zmienna jest pod kluczem, np.: {{Code|nazwa1}} lub {{Code|1}}, tablicy ramki {{Code|frame}} tablicy transportu, następne wywołania dla następnych kluczy też zrzucą pewne wartości, lub jest ona zwykłą nietablicową wartością mogącą być równą nawet {{Code|nil}}. Następne wywołania uzyskanej tak funkcji w przypadku, gdy {{Code|frame}} jest nietablicowy, rzucać będzie z samej definicji funkcji wartości {{Code|nil}}, czyli {{Code|wartosc2{{=}}wartosc3{{=}}nil}}, ale za to wartość {{Code|wartosc1}} nie musi być, ale może, wartością {{Code|nil}}, jest tą wartością, gdy {{Code|frame{{=}}nil}}, w przeciwnym wypadku za pierwszym razem tej wartości nietablicowej uzyskamy wartość nie {{Code|nil}}, a za drugim i dalszym zawsze wartość {{Code|nil}}. == {{Code|p.PobierzElementNumerowanyZFrameLubTablicy}} == Definicja skrótowa funkcji jest z parametrem charakteryzującym pewien zestaw zmiennych {{Code|frame}}, które nie jest tablicą ramki tablicy transportu, tylko innym parametrem, który jest tablicą parametrów podanych do funkcji, nawet gdy parametrem podanym do funkcji, w której wykorzystujemy tą funkcję, jest jedyna zmienna będąca tablicą ramki, ale z drugiej strony tak nie musi być, może być to rozbudowany zestaw zmiennych, np. nazwanych i nienazwanych, którego wszystkie sposoby podawania łączymy jednym sposobem podawania. Mimo że parametry funkcji są parametrami nienazwanymi, mogą być one ponumerowane, ale zmienna w tablicy może przyjmować wartość tą samą na różne sposoby, raz w sposób nazwany, a za innym sposobem jako nienazwany. Ogólnie ostateczne parametry łączymy w dane parametry za pomocą jednego sposobu, tzn. za pomocą tej funkcji, i dla tak uzyskanej tablicy tworzymy funkcję zwracaną przez funkcję w nagłówku, która przyjmuje parametr, który jest kluczem tej uzyskanej tablicy. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobierzElementNumerowanyZFrameLubTablicy(frame)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu. }} Weźmy najprostszy sposób realizacji tej funkcji, w realizacji: {{Code|1-1, 2-2, 3-3}}, czyli ten opis jest zaraz poniżej. Weźmy funkcję, którą można wywoływać z wieloma parametrami, jak i w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, którą przykładowo piszemy jego wywołanie wewnątrz innej funkcji na pięć sposobów, czyli teraz pierwszy sposób z tylko z parametrem, więc tablicą ramki tablicy transportu wywodzącą się z ramki uruchomioną w wikikodzie w jakimś szablonie rodzicu: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"](frame); </syntaxhighlight> a teraz drugi sposób, pisząc, bezpośrednio inaczej, formułując wywołanie tej funkcji, używając zmiennych tablicowych tablicy ramki, ale to nie jest tak naprawdę tablica ramka tablicy transportu, tylko parametr podany bezpośrednio do funkcji, tak jak się to robi w języku {{lpg|Lua}}, nie jak w przykładzie powyżej, więc: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"]{args={"wartość1","wartość2","wartość3",},}; </syntaxhighlight> Lub równoważnie, pisząc, nie używając zmiennej {{Code|args}}: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"]{"wartość1","wartość2","wartość3",}; </syntaxhighlight> Albo te parametry wsadzając do funkcji: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"]("wartość1","wartość2","wartość3"); </syntaxhighlight> Można też wywołać to wszystko w ramce, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w wikikpdzie, wtedy wsadzając parametry do ramki: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|wartość1|wartość2|wartość3}} </syntaxhighlight> A jak połączyć wszystkie te pięć sposobów, posługiwać się tymi sposobami wewnątrz funkcji {{Code|Nazwa funkcji}} w sposób jednolity, jedynie wtedy należy skorzystać z funkcji z definiowaną w jakimś module w sposób: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(...) local tablica_prametrow_funkcji={...}; local parametry_modul=require("Module:Parametry"); local PobierzElementNumerowanyZFrameLubTablicy=parametry_modul.PobierzElementNumerowanyZFrameLubTablicy(tablica_prametrow_funkcji); ... end; </syntaxhighlight> Wtedy za pomocą zmiennej {{Code|PobierzElementNumerowanyZFrameLubTablicy}} dostaliśmy się do funkcji, która przyjmuje jedyny parametr, aby dostać się do elementów tablicy uzyskanej w wewnątrz tej funkcji, zdefiniowaną w tablicy {{Code|tablica_prametrow_funkcji}}, która jest nic innym jak zestawem parametrów w funkcji: {{Code|Nazwa funkcji}}. W pierwszym i drugim sposobem zmienna ta nazwijmy to jako {{Code|args}} jest zmienną z podtablicy innego {{Code|args}} przekazanych jako parametr tablicy do funkcji, w trzecim sposobie tą zmienną jest cała tablica, a czwartym jest zestaw parametrów. A czym się różnią się te sposoby, a więc te sposoby można powiązać jedną tylko funkcją powiedzianą w nagłówku według przykładu podaną zaraz powyżej, wtedy możemy dostawać się do tych samych zmiennych o takich samych nazwach i wartościach, ale w różnych reprezentacjach na różne sposoby, wtedy można powiedzieć, że: <syntaxhighlight lang="lua"> args[1]="wartość1"; args[2]="wartość2"; args[3]="wartość3"; </syntaxhighlight> Czyli w wyniku działania funkcji w nagłówku, otrzymamy funkcję zwracającą te wartości, która operuje na tej tablicy, której wynikiem jest zestaw zmiennych ponumerowanych, ogólnie nienazwanych, której wartości odpowiadają te podane w ramce ostatniej powyżej. Na podstawie tego wiemy, jak działa funkcja ta z nagłówka. Pisząc w inny sposób, można też wskazywać: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(...) local tablica_prametrow_funkcji={...}; local parametry_modul=require("Module:Parametry"); local PobierzElementNumerowanyZFrameLubTablicy=parametry_modul.PobierzElementNumerowanyZFrameLubTablicy(tablica_prametrow_funkcji); local wartosc1=PobierzElementNumerowanyZFrameLubTablicy("nazwa1") or PobierzElementNumerowanyZFrameLubTablicy(1); local wartosc2=PobierzElementNumerowanyZFrameLubTablicy("nazwa2") or PobierzElementNumerowanyZFrameLubTablicy(2); local wartosc3=PobierzElementNumerowanyZFrameLubTablicy("nazwa3") or PobierzElementNumerowanyZFrameLubTablicy(3); end; </syntaxhighlight> Zmienne w przykładzie o kluczach: {{Code|nazwa1}}, {{Code|nazwa2}} i {{Code|nazwa3}}, posiadające pewne swoje wartości, to są zmienne w tablicy {{Code|tablica_prametrow_funkcji}}, podane też jako zmienne, jako pewne argumenty tablicy, który są w tej funkcji zwracanej jako argument (parametr) funkcji, jeżeli argumenty podano w postaci jednego parametru funkcji w postaci pewnej tablicy z np. elementami nazwanymi, lub jako wiele argumentów w ramce, w wikikodzie, w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w pewnym szablonie, a rozpatrując dalej elementy względem ich nazw, np. alternatywnych, to te numery mogą być: {{Code|1}}, {{Code|2}} i {{Code|3}}, to jest numer parametru, jeżeli argumenty do funkcji podano w postaci wielu jego parametrów. == {{Code|p.PobierzParametr}} == Ta funkcja zwraca znów inną funkcję, która ma jedyny parametr, mówiący jakiego parametru poszukujemy, co jest wyjaśnione w definicji funkcji z nagłówka, że ona zwraca tą właśnie funkcje. Definicja skrótowa dunkcji: <syntaxhighlight lang="lua"> function p.PobierzParametr(frame,czy_frame_lub_parent,czy_frame) ... return function(nazwa) return __pobierz_parametr_table_args(nazwa); end; end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu. | 2 = {{Code|czy_frame_lub_parent}} i {{Code|czy_frame}} | _2 = Parametry logiczne dodatkowe funkcji. }} Funkcja zwraca jednocześnie dwie wartości, ta zwrócona z funkcji z nagłówka, prawdziwą wartość, i numer metody w postaci: {{Code|return wartosc, numer_metody}}. Ta funkcja zwracana ma w swojej definicji inną jeszcze funkcję z tym samym parametrem, co jego rodzic, i to jest za każdym razem inna funkcja w zależności z jakim typem danych się posługujemy {{Code|frame}} i jakie podaliśmy parametry. Gdy warunkiem, gdy zmienna {{Code|frame}} jest tablicą, czyli te zmienne druga: {{Code|czy_frame_lub_parent}} (jeżeli funkcja jest uruchomiona w ramce w szablonie, jeżeli ma wartość {{Code|true}}, to ona wybiera raz parametr z: {{Code|frame.args[nazwa or 1]}}, a za innym razem z {{Code|pf.args[nazwa or 1]}}, gdzie {{Code|pf{{=}}frame:getParent()}}, tutaj jest zwracana wartość: {{Code|return wartosc,2}}). Czy trzecia: {{Code|czy_frame}} (która mówi, jeżeli funkcję uruchomiono w ramce, ale przy wartości prawdziwej tego pierwszego podanego parametru, czyli {{Code|true}}, wybierana jest zawsze wartość {{Code|frame.args[nazwa or 1}}}, w przeciwnym wypadku uruchamiana jest funkcja {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, tutaj zwracana jest wartość {{Code|return wartosc,1}}). Jeżeli wartością {{Code|frame}} jest wartość nietablicowa, ale niebędącą wartością {{Code|nil}}, wtedy ustawiana jest funkcja, która tylko za pierwszym razem zwraca nienilową wartość {{Code|return wartosc,0}}, a później zwraca wartość {{Code|return nil,0}}. Gdy wartością {{Code|frame}} jest {{Code|nil}}, to funkcja zawsze wraca tą wartość {{Code|return nil,0}}. Powyższy sposób działa również dobrze, gdy zdefiniujemy w parametrach funkcji fałszywą funkcję {{Code|frame.getParent}}. Gdy funkcja nie jest uruchamiana w ramce lub funkcja {{Code|frame.getParent}} nie jest zdefiniowana, to wtedy funkcja wchodzi zawsze w ten jej krok, jakby {{Code|czy_frame_lub_parent}} było {{Code|false}} według tego powyżej, to wtedy brana jest zmienna {{Code|czy_frame}}, i jaką wartość ona przyjmuje. Funkcję pisze się według sposobu, którą się wywołuje według: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame); local wartosc1=PobierzParametr("nazwa1") or PobierzParametr(1); local wartosc2=PobierzParametr("nazwa2") or PobierzParametr(2); local wartosc3=PobierzParametr("nazwa3") or PobierzParametr(3); </syntaxhighlight> Na wypadek wartości nietabelowej, tą wartość zapisuje się jako pierwszą w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a dla wartości tabelowych, jaka jest kolejność to jest obojętne, byle by to było sensowne. Tę funkcję podobnie się wywołuje jak funkcję: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}. Wartością {{Code|frame}} nie musi być tablica ramki tablicy transportu, równie dobrze może być to dowolna tablica lub wartość nietablicowa. Weźmy ramkę, w której uruchamiamy funkcję ramki: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}} </syntaxhighlight> Ona musi być wywołana z parametrem {{Parametr|wyspecjalizowana|tak}}, jako podpowiedź, że liczą się parametry ramki dziecka, a nie jego rodzica, czyli szablonu. Wtedy funkcję {{Code|Nazwa funkcji}} definiujemy: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame,true); ... end; </syntaxhighlight> Wtedy parametr {{Parametr|wyspecjalizowana|tak}} jest ignorowany, a przy wartości {{Code|false}} drugiego parametru funkcji, czyli wywołania: {{Code|local PobierzParametr{{=}}parametry_modul.PobierzParametr(frame,false);}}, już nie, ale nie zawsze. W takim przypadku według powyższego przykładu raz jest brana wartość, jeżeli istnieje, z {{Code|frame.args}}, a jak ona nie istnieje, to wtedy z: {{Code|pf.args}}. Weźmy inny przypadek: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame,false,true); ... end; </syntaxhighlight> Przy tym też parametr: {{Parametr|wyspecjalizowana|tak}}, jest ignorowany, wtedy jest zawsze wybierana do rozważań tablica: {{Code|frame.args}}. Znów w innym przypadku, gdzie parametr: {{Parametr|wyspecjalizowana|tak}}, jest zawsze rozważany w naszym wypadku: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame,false,false); ... end; </syntaxhighlight> To to wywołanie, wtedy dokładnie działa jak funkcja: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, a zwrócona funkcja: {{Code|PobierzParametr}} pobiera elementy z tak uzyskanej tablicy {{Code|args}} poprzez nią. W przypadku, gdy {{Code|frame}} nie jest tablicą, wtedy parametry: {{Code|czy_frame_lub_parent}} i {{Code|czy_frame}}, są w takim przypadku zawsze ignorowane, ale muszą być ustawione na wypadek, gdyby do funkcji {{Code|Nazwa funkcji}} wsadzono tablicę, np. z ramki, tzn. tablicę ramki funkcji tablicy transportu. Najprostszym często ogólnym przykładem, który prawie zawsze jest stosowany: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame); ... end; </syntaxhighlight> Wtedy parametr: {{Parametr|wyspecjalizowana|tak}}, jest prawie zawsze nieignorowany, ale nie zawsze. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 99cjaniaivqbc70iu4m1xzi2yyx7klu 555733 555732 2026-09-11T18:55:57Z Persino 2851 /* {{Code|p.PobierzElementNumerowanyZFrameLubTablicy}} */ 555733 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} Są tutaj przedstawione funkcje parametrów. == {{Code|p.PobierzFrameEwentualnieParent}} == Argument tej funkcji {{Code|frame}} koniecznie musi być tablicą, w przypadku przeciwnym wywoła to błąd języka {{lpg|Lua}}, że z wartości nietabelowej chcemy wyliczyć jego nieistniejący element {{Code|getParent}}, który ma prawo nie być. Funkcja pobiera parametry ramki szablonu rodzica, a nie dziecka, a jeżeli w dziecku w ramce w wikikodzie w szablonie podamy specjalny parametr {{Parametr|wyspecjalizowana|tak}}, to wtedy ta funkcja ściąga parametry ramki. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobierzFrameEwentualnieParent(frame)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu. }} Tą funkcją można sterować ze strony ramki tym właśnie specjalnym parametrem o wartości niepustej, którą jest {{Parametr|wyspecjalizowana|tak}}. W ramce podajemy argumenty wraz z tym specjalnym parametrem: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}} </syntaxhighlight> To wtedy w kodzie w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} w module o nazwie {{Code|Nazwa modułu}}, piszemy: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzFrameEwentualnieParent(frame).args; .... end; </syntaxhighlight> To wtedy w kodzie ściągane parametry ramki dziecka. Tę funkcję można równie dobrze wykorzystać do zwykłych tabel: <syntaxhighlight lang="lua"> local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzFrameEwentualnieParent(tabela); </syntaxhighlight> A w tym przypadku ta funkcja nic nie robi, tylko zmienna {{Code|args}} referencyjnie wskazuje na tablicę {{Code|tablica}}. Ale można ją wykorzystać, gdy by funkcja {{Code|Nazwa funkcji}}, była uruchomiona ze zwykłą tablicą, ale z możliwością, że to może być tablicą ramki {{Code|frame}} tablicy transportu, np.: <syntaxhighlight lang="lua"> --- Pierwsza możliwość; local wartosc1=p["Nazwa funkcji"](frame); -- Druga możliwość local wartosc2=p["Nazwa funkcji"]{["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; </syntaxhighlight> Dla obu jest taka niedogodność, że jedynie jest taka nieprawidłowość, że w przypadku parametru tablicy ramki tablicy transportu należy podawać uzyskany element {{Code|args}}, a w przypadku zwykłej tablicy już nie, tą niedokodność rozwiązuje funkcja: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}. == {{Code|p.PobierzArgsParametry}} == Argument tej funkcji {{Code|frame}} koniecznie nie musi być tablicą, bo wtedy nie wywoła to błędu języka {{lpg|Lua}}, że z wartości nietabelowej chcemy wyliczyć jego niepusty element {{Code|getParent}}, bo przedtem sprawdzana jest w tej funkcji, czy jest to tablica. W definicji tej funkcji zmienna uzyskana z funkcji: {{Code|{{sr|#p.PobierzFrameEwentualnieParent(frame)|p=Parametry}}}}, a jeśli jej składowa {{Code|args}} jest tablicą, to jest właśnie ona zwracana, a jeśli istnieje, ale nie jest tablicą, lub ona nie istnieje, to wtedy brana jest właśnie wartość tablicowa {{Code|frame}}, jeśli jest ona taka, a gdy nie, to wtedy z tej funkcji tutaj nie korzystamy. Funkcja pobiera parametry ramki szablonu rodzica, a nie dziecka, a jeżeli w dziecku w ramce w wikikodzie w szablonie podamy specjalny parametr {{Parametr|wyspecjalizowana|tak}}, to wtedy ta funkcja ściąga parametry ramki. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobierzArgsParametry(frame, czy_nie_tablica_jako_tablica)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica transportu ramki. | 2 = {{Code|czy_nie_tablica_jako_tablica}} | _2 = Czy wartości nietablicowe umieszczać w jednoelemenowej tabeli. }} Funkcja wykorzystuje wspomnianą powyżej funkcję do swojego działania, ona jest wtedy aktywowana, gdy zmienna {{Code|frame}} jest tablicą, i jest sprawdzane, czy ona posiada nazwany element o kluczu {{Code|args}}, i czy jest on tablicowy. Jeżeli wartością zmiennej {{Code|frame}} nie jest tablica, ale nie przybiera wartości {{Code|nil}}, to ona jest umieszczana w tablicy, jeżeli zmiennej {{Code|czy_nie_tablica_jako_tablica}} przydzielimy wartość {{Code|true}}, w przeciwnym wypadku zwracana jest ona w postaci niezmienionej, a jeżeli wartość tej zmiennej nie istnieje, to zwracana jest zwykła tablica pusta. Tą funkcją można sterować ze strony ramki tym właśnie specjalnym parametrem o wartości niepustej. W ramce podajemy argumenty wraz z tym specjalnym parametrem: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}} </syntaxhighlight> To wtedy w kodzie w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} w module o nazwie {{Code|Nazwa modułu}}, piszemy: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(frame); .... end; </syntaxhighlight> To wtedy w kodzie ściągane parametry ramki dziecka. Tę funkcję można równie dobrze wykorzystać do zwykłych tabel: <syntaxhighlight lang="lua"> local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(tabela); </syntaxhighlight> A w tym przypadku ta funkcja nic nie robi, tylko zmienna {{Code|args}} referencyjnie wskazuje na tablicę {{Code|tablica}}. Ale można ją wykorzystać, gdyby funkcja {{Code|Nazwa funkcji}}, była uruchomiona ze zwykłą tablicą, ale z możliwością, że to może być tablicą ramki {{Code|frame}} tablicy transportu, np.: <syntaxhighlight lang="lua"> --- Pierwsza możliwość; local wartosc1=p["Nazwa funkcji"](frame); -- Druga możliwość local wartosc2=p["Nazwa funkcji"]{["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; </syntaxhighlight> Dla obu tych przypadków nie ma żadnej niedogodności, jak to występowała w {{Code|{{sr|#p.PobierzFrameEwentualnieParent(frame)|p=Parametry}}}}. Jeśliby do funkcji tablicy transportu dać wartość równą nie tablicy, to wtedy równoważnie możemy napisać: <syntaxhighlight lang="lua"> local wartosc="wartość"; local wynik=p["Nazwa funkcji"](wartosc); </syntaxhighlight> to wtedy definicję tej funkcji piszemy: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(frame,true); local wartosc=args[1]; end; </syntaxhighlight> lub równoważnie możemy zapisać: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); local wartosc=parametry_modul.PobierzArgsParametry(frame); end; </syntaxhighlight> A jeżeli nie wsadziliśmy żadnej wartości do funkcji ramki tablicy transportu lub tą wartością jest {{Code|nil}}, wtedy: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"](); </syntaxhighlight> wtedy definicja tej funkcji wygląda: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); -- Zmienna: args, wskazuje na wartość, którą jest tablicą pustą, tzn. w tej tablicy nie ma wcale elementów; local args=parametry_modul.PobierzArgsParametry(frame); end; </syntaxhighlight> Widzimy, że wtedy zmienna {{Code|args}} jest normalną pustą tablicą, i nie musimy wtedy wcale pisać poniżej, bo wtedy wychodzi w tym przypadku na to samo: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(frame,true); </syntaxhighlight> Argument drugi w {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, który w naszym przypadku musi mieć wartość {{Code|true}}, a wtedy jest jedynie sens, gdy {{Code|frame}} nie jest tablicą, i gdy chcemy tą wartość umieścić w tablicy, a nie powtórzyć wartość, tzn. chcemy napisać: {{Code|{{(}}frame,{{)}}}}, w przeciwnym wypadku musilibyśmy napisać coś w rodzaju, zamiast tak spreparowanej tablicy: {{Code|frame}}, czyli: <syntaxhighlight lang="lua"> -- Pierwszy przypadek, gdy frame jest wartością nietablicową; local parametry_modul=require("Module:Parametry"); ... -- Zwracana wartość: args, to nic innego niż: {frame,}; local args=parametry_modul.PobierzArgsParametry(frame,true); ... -- Zwracana wartość: args, to nic innego niż: frame, a nie {frame,}, jak poprzednio; local args=parametry_modul.PobierzArgsParametry(frame); </syntaxhighlight> == {{Code|p.PobierzParametryRamki}} == Funkcja służy do ustawienia pewnych domyślnych dwóch pewnych funkcji służących do pobieranie danych z tabelki z pierwszej tej funkcji: * Jeżeli ona posiada klucz o wartości {{Code|args}}, ** to zwracana jest ta właśnie tablica jako argument pierwszej tej funkcji, jeżeli jest w ogóle tablicą, ** w przeciwnym wypadku zwracana jest ta oryginalna tablica, też jako argument tej funkcji, * w przeciwnym dalszym wypadku zwracana jest zwracana wartość ta, jako argument tej drugiej funkcji, która zwraca prawdziwą wartość z argumentu tylko za pierwszym razem, z tej funkcji, za następnym i dalszym razem {{Code|nil}}. Z tak utworzonej ogólnie większej funkcji wykorzystywana jest w budowie omawianej funkcji, która jest zwracana przez omawianą funkcję, która względem jego budowy wywołuje raz pierwszą albo drugą poprzednią wspomnianą funkcję zależną od rodzaju zmiennej {{Code|frame}}, która może być tabelką, ale nie musi być. Ta funkcja zwracana przez funkcję w nagłówku przyjmuje argument, która jest kluczem do tych wspomnianych, może że, * tabel (dokładnie, która ta może tabelka to zależy od formatu tej naszej rozważanej zmiennej), * a jeżeli to nie tabelka, co jest zwracane, to już zostało powiedziane. Definicja skrótowa tej funkcji jest: <syntaxhighlight lang="lua"> function p.PobierzParametryRamki(frame)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu. }} Weźmy ramkę sformułowaną w wikikodzie jako dziecko w szablonie rodzicu: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5}} </syntaxhighlight> To wtedy tablica ramki tablicy transportu posiada właśnie {{Code|frame}}, która jest tablicą, i na pewno posiada tablicę o nazwie {{Code|args}}, to wtedy tę funkcję wywołaną w ramce, która wywołuje funkcję w nagłówku, formułujemy: <syntaxhighlight lang="lua"> local p={}; local p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametryRamki=parametry_modul.PobierzParametryRamki(frame); ... end; </syntaxhighlight> Równie dobrze funkcję z ramki można wywołać w sposób, co wtedy ta funkcja też zostanie wywołana pozytywnie: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"]{args={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}}; </syntaxhighlight> W tej funkcji nie trzeba definiować funkcji fałszywej {{Code|getParent}}, w postaci: {{Code|getParent{{=}}function()end}}. Widzimi, że ta tablica posiada nazwę zmiennej tablicowej o nazwie {{Code|args}}, ale ona nie jest tablicą ramki tablicy transportu, ale tą tablicę możemy bezposrednio wsadzić w tą główną tablicę w samym argumencie funkcji. Równie dobrze możemy wywołać tę funkcję zdefiniowaną naszą w jakimś module w sposób: <syntaxhighlight lang="lua"> local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; local wynik=p["Nazwa funkcji"]{tabela); </syntaxhighlight> też ta funkcja prawidłowo się wywoła. W tym przypadku, jak i w przypadkach powyżej, wyniki uzyskuje się w następującym wywołaniach: <syntaxhighlight lang="lua"> --- Zmienna: wartosc1, przyjmuje wartość: "wartość1"; local wartosc1=PobierzParametryRamki("nazwa1"); --- Zmienna: wartosc2, przyjmuje wartość: "wartość2"; local wartosc2=PobierzParametryRamki("nazwa2"); --- Zmienna: wartosc3, przyjmuje wartość: "wartość3"; local wartosc3=PobierzParametryRamki(1); </syntaxhighlight> W innym przypadku wywołań funkcji ramki jest wsadzenie do niej zwykłego nietablicowego elementu, może być też to wartość: {{Code|nil}}. A to wywołanie jest: <syntaxhighlight lang="lua"> local wartosc="wartość"; --Zmienna: wartosc, nie jest w tym przypadku tablicą; local wynik=p["Nazwa funkcji"](wartosc); </syntaxhighlight> Wtedy w tej ramce w celu uzyskania jakikolwiek wartości jest przykład wywołania tej funkcji zwracanej przez funkcję w ramce z argumentem pustym. <syntaxhighlight lang="lua"> -- Zmienna: wartość1, przyjmuje wartość: "wartość"; Jeżeli ona, przyjmuje wartość: nil, to wywołanie rzuci: nil, i za każdym następny razem; local wartosc1=PobierzParametryRamki(); -- Zmienna: wartość2, przyjmuje wartość: nil; local wartosc2=PobierzParametryRamki(); </syntaxhighlight> W wywołaniach powinno dbać się o właściwą kolejność wywołań, bo argumentem funkcji z tablicy transportu może być zwykła tablicowa wartość. Najpierw uzyskujemy wartości nietablicowe, a później tablicowe, na wypadek niewiadomej {{Code|frame}} jakiego typu ma być wartość. Też ta zmienna może istnieć pod kilkoma możliwymi kluczami, lub tą zmienną może być jedyny argument funkcji, która jest nietablicową wartością, wtedy ją się wywołuje jako dla przypadku, gdy parametr jest nietablicowy lub jest pod kluczem {{Code|tekst}}: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local tekst=parametry_modul.PobierzParametryRamki(frame)("tekst"); </syntaxhighlight> Lub chcemy tę funkcję wywołać bezparametrowo, gdy chcemy, by {{Code|frame}} nie była tablicą: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local tekst=parametry_modul.PobierzParametryRamki(frame)(); </syntaxhighlight> Wtedy ta zmienna w przedostatnim przykładzie jest pod wartością {{Code|tekst}}, gdy wartość {{Code|frame}} jest tablicą, lub może być jedyną wartością, którą jest {{Code|frame}} jako zmienna nietablicowa, wtedy ta zmienna też jest pod {{Code|tekst}}, ta funkcja uzyskana z: {{Code|{{sr|#p.PobierzParametryRamki(frame)|p=Parametry}}}}, wtedy może być wywołana tylko raz z nienilową wartością zwracaną, następnym razem zwraca wartość {{Code|nil}}, wtedy to dotyczy przedostatniego i ostatniego przykładu. Jeżeli {{Code|frame}} jest nietablicowa, to wtedy wartość {{Code|tekst}} jest taka sama, co {{Code|frame}}. A jeżeli jest tablicą, to ta wartością jest {{Code|frame.args["tekst"]}}, lub gdy {{Code|args}} nie istnieje, lub istnieje, ale jest nietablicowa, to wtedy ta wartość jest {{Code|frame["tekst"]}}. A gdy zmienne istnieją pod wieloma kluczami, lub gdy funkcję wywołano ze zmienną nietablicową, wtedy ogólnie możemy dla przykładu powiedzieć: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local PobierzParametryRamki=parametry_modul.PobierzParametryRamki(frame); local wartosc1=PobierzParametryRamki("nazwa1") or PobierzParametryRamki(1); local wartosc2=PobierzParametryRamki("nazwa2") or PobierzParametryRamki(2); local wartosc3=PobierzParametryRamki("nazwa3") or PobierzParametryRamki(3); </syntaxhighlight> Wtedy ta zmienna jest pod kluczem, np.: {{Code|nazwa1}} lub {{Code|1}}, tablicy ramki {{Code|frame}} tablicy transportu, następne wywołania dla następnych kluczy też zrzucą pewne wartości, lub jest ona zwykłą nietablicową wartością mogącą być równą nawet {{Code|nil}}. Następne wywołania uzyskanej tak funkcji w przypadku, gdy {{Code|frame}} jest nietablicowy, rzucać będzie z samej definicji funkcji wartości {{Code|nil}}, czyli {{Code|wartosc2{{=}}wartosc3{{=}}nil}}, ale za to wartość {{Code|wartosc1}} nie musi być, ale może, wartością {{Code|nil}}, jest tą wartością, gdy {{Code|frame{{=}}nil}}, w przeciwnym wypadku za pierwszym razem tej wartości nietablicowej uzyskamy wartość nie {{Code|nil}}, a za drugim i dalszym zawsze wartość {{Code|nil}}. == {{Code|p.PobierzElementNumerowanyZFrameLubTablicy}} == Definicja skrótowa funkcji jest z parametrem charakteryzującym pewien zestaw zmiennych {{Code|frame}}, * które nie musi być tablicą ramki tablicy transportu, tylko moze być innym parametrem, który jest tablicą parametrów podanych do funkcji, * nawet gdy parametrem podanym do funkcji, w której wykorzystujemy tą funkcję, jest jedyna zmienna będąca tablicą ramki. Ale z drugiej strony, tak nie musi być, może być to rozbudowany zestaw zmiennych, np. nazwanych i nienazwanych, którego wszystkie sposoby podawania łączymy jednym sposobem podawania. Mimo że parametry funkcji są parametrami nienazwanymi, mogą być one ponumerowane, ale zmienna w tablicy może przyjmować wartość tą samą na różne sposoby, raz w sposób nazwany, a za innym sposobem jako nienazwany. Ogólnie ostateczne parametry łączymy w dane parametry za pomocą jednego sposobu, tzn. za pomocą tej funkcji, i dla tak uzyskanej tablicy tworzymy funkcję zwracaną przez funkcję w nagłówku, która przyjmuje parametr, który jest kluczem tej uzyskanej tablicy. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobierzElementNumerowanyZFrameLubTablicy(frame)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu. }} Weźmy najprostszy sposób realizacji tej funkcji, w realizacji: {{Code|1-1, 2-2, 3-3}}, czyli ten opis jest zaraz poniżej. === Sposoby wywołania funkcji === ; Pierwszy sposób{{dk}} Weźmy funkcję, którą można wywoływać z wieloma parametrami, jak i w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, którą przykładowo piszemy jego wywołanie wewnątrz innej funkcji na pięć sposobów, czyli teraz pierwszy sposób z tylko z parametrem, więc tablicą ramki tablicy transportu wywodzącą się z ramki uruchomioną w wikikodzie w jakimś szablonie rodzicu: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"](frame); </syntaxhighlight> ; Drugi sposób{{dk}} A teraz drugi sposób, pisząc, bezpośrednio inaczej, formułując wywołanie tej funkcji, używając zmiennych tablicowych tablicy ramki, ale to nie jest tak naprawdę tablica ramka tablicy transportu, tylko parametr podany bezpośrednio do funkcji, tak jak się to robi w języku {{lpg|Lua}}, nie jak w przykładzie powyżej, więc: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"]{args={"wartość1","wartość2","wartość3",},}; </syntaxhighlight> ; Trzeci sposób{{dk}} Lub równoważnie, pisząc, nie używając zmiennej {{Code|args}}: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"]{"wartość1","wartość2","wartość3",}; </syntaxhighlight> ; Czwarty sposób{{dk}} Albo te parametry wsadzając do funkcji: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"]("wartość1","wartość2","wartość3"); </syntaxhighlight> ; Piąty spssób{{dk}} Można też wywołać to wszystko w ramce, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w wikikpdzie, wtedy wsadzając parametry do ramki: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|wartość1|wartość2|wartość3}} </syntaxhighlight> === Omówienie pobierania takich parmetrów === A jak połączyć wszystkie te pięć sposobów, posługiwać się tymi sposobami wewnątrz funkcji {{Code|Nazwa funkcji}} w sposób jednolity, jedynie wtedy należy skorzystać z funkcji z definiowaną w jakimś module w sposób: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(...) local tablica_prametrow_funkcji={...}; local parametry_modul=require("Module:Parametry"); local PobierzElementNumerowanyZFrameLubTablicy=parametry_modul.PobierzElementNumerowanyZFrameLubTablicy(tablica_prametrow_funkcji); ... end; </syntaxhighlight> Wtedy za pomocą zmiennej {{Code|PobierzElementNumerowanyZFrameLubTablicy}} dostaliśmy się do funkcji, która przyjmuje jedyny parametr, aby dostać się do elementów tablicy uzyskanej w wewnątrz tej funkcji, zdefiniowaną w tablicy {{Code|tablica_prametrow_funkcji}}, która jest nic innym jak zestawem parametrów w funkcji: {{Code|Nazwa funkcji}}. * W pierwszym i drugim sposobem zmienną tą nazwijmy to jako {{Code|args}}, jest zmienną z podtablicy innego {{Code|args}} przekazanych jako parametr tablicy do funkcji, * w trzecim sposobie tą zmienną jest cała tablica, * a czwartym jest zestaw parametrów ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. A czym się różnią się te sposoby, a więc te sposoby można powiązać jedną tylko funkcją powiedzianą w nagłówku według przykładu podaną zaraz powyżej, wtedy możemy dostawać się do tych samych zmiennych o takich samych nazwach i wartościach, ale w różnych reprezentacjach na różne sposoby, wtedy można powiedzieć, że: <syntaxhighlight lang="lua"> args[1]="wartość1"; args[2]="wartość2"; args[3]="wartość3"; </syntaxhighlight> Czyli w wyniku działania funkcji w nagłówku, otrzymamy funkcję zwracającą te wartości, która operuje na tej tablicy, której wynikiem jest zestaw zmiennych ponumerowanych, ogólnie nienazwanych, której wartości odpowiadają te podane w ramce ostatniej powyżej. Na podstawie tego wiemy, jak działa funkcja ta z nagłówka. === Nazwy alternatywne danych parametrów funkcji ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}} === Pisząc w inny sposób, można też wskazywać: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(...) local tablica_prametrow_funkcji={...}; local parametry_modul=require("Module:Parametry"); local PobierzElementNumerowanyZFrameLubTablicy=parametry_modul.PobierzElementNumerowanyZFrameLubTablicy(tablica_prametrow_funkcji); local wartosc1=PobierzElementNumerowanyZFrameLubTablicy("nazwa1") or PobierzElementNumerowanyZFrameLubTablicy(1); local wartosc2=PobierzElementNumerowanyZFrameLubTablicy("nazwa2") or PobierzElementNumerowanyZFrameLubTablicy(2); local wartosc3=PobierzElementNumerowanyZFrameLubTablicy("nazwa3") or PobierzElementNumerowanyZFrameLubTablicy(3); end; </syntaxhighlight> Zmienne w przykładzie o kluczach: {{Code|nazwa1}}, {{Code|nazwa2}} i {{Code|nazwa3}}, posiadające pewne swoje wartości, to są zmienne w tablicy {{Code|tablica_prametrow_funkcji}}, podane też jako zmienne, jako pewne argumenty tablicy, który są w tej funkcji zwracanej jako argument (parametr) funkcji, * jeżeli argumenty podano w postaci jednego parametru funkcji w postaci pewnej tablicy z np. elementami nazwanymi, * lub jako wiele argumentów w ramce, w wikikodzie, w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w pewnym szablonie, * a rozpatrując dalej elementy względem ich nazw, np. alternatywnych, to te numery mogą być kolejo do nazw ich odpowiedników nazwanych, które w przykładzie powyżej, mają pierwszeństwo, ale tak nie musi być, te parametry: {{Code|1}}, {{Code|2}} i {{Code|3}}, to jest numer parametru, jeżeli argumenty do funkcji podano w postaci wielu jego parametrów. == {{Code|p.PobierzParametr}} == Ta funkcja zwraca znów inną funkcję, która ma jedyny parametr, mówiący jakiego parametru poszukujemy, co jest wyjaśnione w definicji funkcji z nagłówka, że ona zwraca tą właśnie funkcje. Definicja skrótowa dunkcji: <syntaxhighlight lang="lua"> function p.PobierzParametr(frame,czy_frame_lub_parent,czy_frame) ... return function(nazwa) return __pobierz_parametr_table_args(nazwa); end; end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu. | 2 = {{Code|czy_frame_lub_parent}} i {{Code|czy_frame}} | _2 = Parametry logiczne dodatkowe funkcji. }} Funkcja zwraca jednocześnie dwie wartości, ta zwrócona z funkcji z nagłówka, prawdziwą wartość, i numer metody w postaci: {{Code|return wartosc, numer_metody}}. Ta funkcja zwracana ma w swojej definicji inną jeszcze funkcję z tym samym parametrem, co jego rodzic, i to jest za każdym razem inna funkcja w zależności z jakim typem danych się posługujemy {{Code|frame}} i jakie podaliśmy parametry. Gdy warunkiem, gdy zmienna {{Code|frame}} jest tablicą, czyli te zmienne druga: {{Code|czy_frame_lub_parent}} (jeżeli funkcja jest uruchomiona w ramce w szablonie, jeżeli ma wartość {{Code|true}}, to ona wybiera raz parametr z: {{Code|frame.args[nazwa or 1]}}, a za innym razem z {{Code|pf.args[nazwa or 1]}}, gdzie {{Code|pf{{=}}frame:getParent()}}, tutaj jest zwracana wartość: {{Code|return wartosc,2}}). Czy trzecia: {{Code|czy_frame}} (która mówi, jeżeli funkcję uruchomiono w ramce, ale przy wartości prawdziwej tego pierwszego podanego parametru, czyli {{Code|true}}, wybierana jest zawsze wartość {{Code|frame.args[nazwa or 1}}}, w przeciwnym wypadku uruchamiana jest funkcja {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, tutaj zwracana jest wartość {{Code|return wartosc,1}}). Jeżeli wartością {{Code|frame}} jest wartość nietablicowa, ale niebędącą wartością {{Code|nil}}, wtedy ustawiana jest funkcja, która tylko za pierwszym razem zwraca nienilową wartość {{Code|return wartosc,0}}, a później zwraca wartość {{Code|return nil,0}}. Gdy wartością {{Code|frame}} jest {{Code|nil}}, to funkcja zawsze wraca tą wartość {{Code|return nil,0}}. Powyższy sposób działa również dobrze, gdy zdefiniujemy w parametrach funkcji fałszywą funkcję {{Code|frame.getParent}}. Gdy funkcja nie jest uruchamiana w ramce lub funkcja {{Code|frame.getParent}} nie jest zdefiniowana, to wtedy funkcja wchodzi zawsze w ten jej krok, jakby {{Code|czy_frame_lub_parent}} było {{Code|false}} według tego powyżej, to wtedy brana jest zmienna {{Code|czy_frame}}, i jaką wartość ona przyjmuje. Funkcję pisze się według sposobu, którą się wywołuje według: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame); local wartosc1=PobierzParametr("nazwa1") or PobierzParametr(1); local wartosc2=PobierzParametr("nazwa2") or PobierzParametr(2); local wartosc3=PobierzParametr("nazwa3") or PobierzParametr(3); </syntaxhighlight> Na wypadek wartości nietabelowej, tą wartość zapisuje się jako pierwszą w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a dla wartości tabelowych, jaka jest kolejność to jest obojętne, byle by to było sensowne. Tę funkcję podobnie się wywołuje jak funkcję: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}. Wartością {{Code|frame}} nie musi być tablica ramki tablicy transportu, równie dobrze może być to dowolna tablica lub wartość nietablicowa. Weźmy ramkę, w której uruchamiamy funkcję ramki: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}} </syntaxhighlight> Ona musi być wywołana z parametrem {{Parametr|wyspecjalizowana|tak}}, jako podpowiedź, że liczą się parametry ramki dziecka, a nie jego rodzica, czyli szablonu. Wtedy funkcję {{Code|Nazwa funkcji}} definiujemy: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame,true); ... end; </syntaxhighlight> Wtedy parametr {{Parametr|wyspecjalizowana|tak}} jest ignorowany, a przy wartości {{Code|false}} drugiego parametru funkcji, czyli wywołania: {{Code|local PobierzParametr{{=}}parametry_modul.PobierzParametr(frame,false);}}, już nie, ale nie zawsze. W takim przypadku według powyższego przykładu raz jest brana wartość, jeżeli istnieje, z {{Code|frame.args}}, a jak ona nie istnieje, to wtedy z: {{Code|pf.args}}. Weźmy inny przypadek: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame,false,true); ... end; </syntaxhighlight> Przy tym też parametr: {{Parametr|wyspecjalizowana|tak}}, jest ignorowany, wtedy jest zawsze wybierana do rozważań tablica: {{Code|frame.args}}. Znów w innym przypadku, gdzie parametr: {{Parametr|wyspecjalizowana|tak}}, jest zawsze rozważany w naszym wypadku: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame,false,false); ... end; </syntaxhighlight> To to wywołanie, wtedy dokładnie działa jak funkcja: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, a zwrócona funkcja: {{Code|PobierzParametr}} pobiera elementy z tak uzyskanej tablicy {{Code|args}} poprzez nią. W przypadku, gdy {{Code|frame}} nie jest tablicą, wtedy parametry: {{Code|czy_frame_lub_parent}} i {{Code|czy_frame}}, są w takim przypadku zawsze ignorowane, ale muszą być ustawione na wypadek, gdyby do funkcji {{Code|Nazwa funkcji}} wsadzono tablicę, np. z ramki, tzn. tablicę ramki funkcji tablicy transportu. Najprostszym często ogólnym przykładem, który prawie zawsze jest stosowany: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame); ... end; </syntaxhighlight> Wtedy parametr: {{Parametr|wyspecjalizowana|tak}}, jest prawie zawsze nieignorowany, ale nie zawsze. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 5p0jqxbc2jyje5a9vxdxpy1dcb6yh90 555734 555733 2026-09-11T19:03:12Z Persino 2851 /* {{Code|p.PobierzParametr}} */ 555734 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} Są tutaj przedstawione funkcje parametrów. == {{Code|p.PobierzFrameEwentualnieParent}} == Argument tej funkcji {{Code|frame}} koniecznie musi być tablicą, w przypadku przeciwnym wywoła to błąd języka {{lpg|Lua}}, że z wartości nietabelowej chcemy wyliczyć jego nieistniejący element {{Code|getParent}}, który ma prawo nie być. Funkcja pobiera parametry ramki szablonu rodzica, a nie dziecka, a jeżeli w dziecku w ramce w wikikodzie w szablonie podamy specjalny parametr {{Parametr|wyspecjalizowana|tak}}, to wtedy ta funkcja ściąga parametry ramki. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobierzFrameEwentualnieParent(frame)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu. }} Tą funkcją można sterować ze strony ramki tym właśnie specjalnym parametrem o wartości niepustej, którą jest {{Parametr|wyspecjalizowana|tak}}. W ramce podajemy argumenty wraz z tym specjalnym parametrem: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}} </syntaxhighlight> To wtedy w kodzie w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} w module o nazwie {{Code|Nazwa modułu}}, piszemy: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzFrameEwentualnieParent(frame).args; .... end; </syntaxhighlight> To wtedy w kodzie ściągane parametry ramki dziecka. Tę funkcję można równie dobrze wykorzystać do zwykłych tabel: <syntaxhighlight lang="lua"> local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzFrameEwentualnieParent(tabela); </syntaxhighlight> A w tym przypadku ta funkcja nic nie robi, tylko zmienna {{Code|args}} referencyjnie wskazuje na tablicę {{Code|tablica}}. Ale można ją wykorzystać, gdy by funkcja {{Code|Nazwa funkcji}}, była uruchomiona ze zwykłą tablicą, ale z możliwością, że to może być tablicą ramki {{Code|frame}} tablicy transportu, np.: <syntaxhighlight lang="lua"> --- Pierwsza możliwość; local wartosc1=p["Nazwa funkcji"](frame); -- Druga możliwość local wartosc2=p["Nazwa funkcji"]{["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; </syntaxhighlight> Dla obu jest taka niedogodność, że jedynie jest taka nieprawidłowość, że w przypadku parametru tablicy ramki tablicy transportu należy podawać uzyskany element {{Code|args}}, a w przypadku zwykłej tablicy już nie, tą niedokodność rozwiązuje funkcja: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}. == {{Code|p.PobierzArgsParametry}} == Argument tej funkcji {{Code|frame}} koniecznie nie musi być tablicą, bo wtedy nie wywoła to błędu języka {{lpg|Lua}}, że z wartości nietabelowej chcemy wyliczyć jego niepusty element {{Code|getParent}}, bo przedtem sprawdzana jest w tej funkcji, czy jest to tablica. W definicji tej funkcji zmienna uzyskana z funkcji: {{Code|{{sr|#p.PobierzFrameEwentualnieParent(frame)|p=Parametry}}}}, a jeśli jej składowa {{Code|args}} jest tablicą, to jest właśnie ona zwracana, a jeśli istnieje, ale nie jest tablicą, lub ona nie istnieje, to wtedy brana jest właśnie wartość tablicowa {{Code|frame}}, jeśli jest ona taka, a gdy nie, to wtedy z tej funkcji tutaj nie korzystamy. Funkcja pobiera parametry ramki szablonu rodzica, a nie dziecka, a jeżeli w dziecku w ramce w wikikodzie w szablonie podamy specjalny parametr {{Parametr|wyspecjalizowana|tak}}, to wtedy ta funkcja ściąga parametry ramki. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobierzArgsParametry(frame, czy_nie_tablica_jako_tablica)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica transportu ramki. | 2 = {{Code|czy_nie_tablica_jako_tablica}} | _2 = Czy wartości nietablicowe umieszczać w jednoelemenowej tabeli. }} Funkcja wykorzystuje wspomnianą powyżej funkcję do swojego działania, ona jest wtedy aktywowana, gdy zmienna {{Code|frame}} jest tablicą, i jest sprawdzane, czy ona posiada nazwany element o kluczu {{Code|args}}, i czy jest on tablicowy. Jeżeli wartością zmiennej {{Code|frame}} nie jest tablica, ale nie przybiera wartości {{Code|nil}}, to ona jest umieszczana w tablicy, jeżeli zmiennej {{Code|czy_nie_tablica_jako_tablica}} przydzielimy wartość {{Code|true}}, w przeciwnym wypadku zwracana jest ona w postaci niezmienionej, a jeżeli wartość tej zmiennej nie istnieje, to zwracana jest zwykła tablica pusta. Tą funkcją można sterować ze strony ramki tym właśnie specjalnym parametrem o wartości niepustej. W ramce podajemy argumenty wraz z tym specjalnym parametrem: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}} </syntaxhighlight> To wtedy w kodzie w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} w module o nazwie {{Code|Nazwa modułu}}, piszemy: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(frame); .... end; </syntaxhighlight> To wtedy w kodzie ściągane parametry ramki dziecka. Tę funkcję można równie dobrze wykorzystać do zwykłych tabel: <syntaxhighlight lang="lua"> local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(tabela); </syntaxhighlight> A w tym przypadku ta funkcja nic nie robi, tylko zmienna {{Code|args}} referencyjnie wskazuje na tablicę {{Code|tablica}}. Ale można ją wykorzystać, gdyby funkcja {{Code|Nazwa funkcji}}, była uruchomiona ze zwykłą tablicą, ale z możliwością, że to może być tablicą ramki {{Code|frame}} tablicy transportu, np.: <syntaxhighlight lang="lua"> --- Pierwsza możliwość; local wartosc1=p["Nazwa funkcji"](frame); -- Druga możliwość local wartosc2=p["Nazwa funkcji"]{["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; </syntaxhighlight> Dla obu tych przypadków nie ma żadnej niedogodności, jak to występowała w {{Code|{{sr|#p.PobierzFrameEwentualnieParent(frame)|p=Parametry}}}}. Jeśliby do funkcji tablicy transportu dać wartość równą nie tablicy, to wtedy równoważnie możemy napisać: <syntaxhighlight lang="lua"> local wartosc="wartość"; local wynik=p["Nazwa funkcji"](wartosc); </syntaxhighlight> to wtedy definicję tej funkcji piszemy: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(frame,true); local wartosc=args[1]; end; </syntaxhighlight> lub równoważnie możemy zapisać: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); local wartosc=parametry_modul.PobierzArgsParametry(frame); end; </syntaxhighlight> A jeżeli nie wsadziliśmy żadnej wartości do funkcji ramki tablicy transportu lub tą wartością jest {{Code|nil}}, wtedy: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"](); </syntaxhighlight> wtedy definicja tej funkcji wygląda: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); -- Zmienna: args, wskazuje na wartość, którą jest tablicą pustą, tzn. w tej tablicy nie ma wcale elementów; local args=parametry_modul.PobierzArgsParametry(frame); end; </syntaxhighlight> Widzimy, że wtedy zmienna {{Code|args}} jest normalną pustą tablicą, i nie musimy wtedy wcale pisać poniżej, bo wtedy wychodzi w tym przypadku na to samo: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(frame,true); </syntaxhighlight> Argument drugi w {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, który w naszym przypadku musi mieć wartość {{Code|true}}, a wtedy jest jedynie sens, gdy {{Code|frame}} nie jest tablicą, i gdy chcemy tą wartość umieścić w tablicy, a nie powtórzyć wartość, tzn. chcemy napisać: {{Code|{{(}}frame,{{)}}}}, w przeciwnym wypadku musilibyśmy napisać coś w rodzaju, zamiast tak spreparowanej tablicy: {{Code|frame}}, czyli: <syntaxhighlight lang="lua"> -- Pierwszy przypadek, gdy frame jest wartością nietablicową; local parametry_modul=require("Module:Parametry"); ... -- Zwracana wartość: args, to nic innego niż: {frame,}; local args=parametry_modul.PobierzArgsParametry(frame,true); ... -- Zwracana wartość: args, to nic innego niż: frame, a nie {frame,}, jak poprzednio; local args=parametry_modul.PobierzArgsParametry(frame); </syntaxhighlight> == {{Code|p.PobierzParametryRamki}} == Funkcja służy do ustawienia pewnych domyślnych dwóch pewnych funkcji służących do pobieranie danych z tabelki z pierwszej tej funkcji: * Jeżeli ona posiada klucz o wartości {{Code|args}}, ** to zwracana jest ta właśnie tablica jako argument pierwszej tej funkcji, jeżeli jest w ogóle tablicą, ** w przeciwnym wypadku zwracana jest ta oryginalna tablica, też jako argument tej funkcji, * w przeciwnym dalszym wypadku zwracana jest zwracana wartość ta, jako argument tej drugiej funkcji, która zwraca prawdziwą wartość z argumentu tylko za pierwszym razem, z tej funkcji, za następnym i dalszym razem {{Code|nil}}. Z tak utworzonej ogólnie większej funkcji wykorzystywana jest w budowie omawianej funkcji, która jest zwracana przez omawianą funkcję, która względem jego budowy wywołuje raz pierwszą albo drugą poprzednią wspomnianą funkcję zależną od rodzaju zmiennej {{Code|frame}}, która może być tabelką, ale nie musi być. Ta funkcja zwracana przez funkcję w nagłówku przyjmuje argument, która jest kluczem do tych wspomnianych, może że, * tabel (dokładnie, która ta może tabelka to zależy od formatu tej naszej rozważanej zmiennej), * a jeżeli to nie tabelka, co jest zwracane, to już zostało powiedziane. Definicja skrótowa tej funkcji jest: <syntaxhighlight lang="lua"> function p.PobierzParametryRamki(frame)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu. }} Weźmy ramkę sformułowaną w wikikodzie jako dziecko w szablonie rodzicu: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5}} </syntaxhighlight> To wtedy tablica ramki tablicy transportu posiada właśnie {{Code|frame}}, która jest tablicą, i na pewno posiada tablicę o nazwie {{Code|args}}, to wtedy tę funkcję wywołaną w ramce, która wywołuje funkcję w nagłówku, formułujemy: <syntaxhighlight lang="lua"> local p={}; local p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametryRamki=parametry_modul.PobierzParametryRamki(frame); ... end; </syntaxhighlight> Równie dobrze funkcję z ramki można wywołać w sposób, co wtedy ta funkcja też zostanie wywołana pozytywnie: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"]{args={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}}; </syntaxhighlight> W tej funkcji nie trzeba definiować funkcji fałszywej {{Code|getParent}}, w postaci: {{Code|getParent{{=}}function()end}}. Widzimi, że ta tablica posiada nazwę zmiennej tablicowej o nazwie {{Code|args}}, ale ona nie jest tablicą ramki tablicy transportu, ale tą tablicę możemy bezposrednio wsadzić w tą główną tablicę w samym argumencie funkcji. Równie dobrze możemy wywołać tę funkcję zdefiniowaną naszą w jakimś module w sposób: <syntaxhighlight lang="lua"> local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; local wynik=p["Nazwa funkcji"]{tabela); </syntaxhighlight> też ta funkcja prawidłowo się wywoła. W tym przypadku, jak i w przypadkach powyżej, wyniki uzyskuje się w następującym wywołaniach: <syntaxhighlight lang="lua"> --- Zmienna: wartosc1, przyjmuje wartość: "wartość1"; local wartosc1=PobierzParametryRamki("nazwa1"); --- Zmienna: wartosc2, przyjmuje wartość: "wartość2"; local wartosc2=PobierzParametryRamki("nazwa2"); --- Zmienna: wartosc3, przyjmuje wartość: "wartość3"; local wartosc3=PobierzParametryRamki(1); </syntaxhighlight> W innym przypadku wywołań funkcji ramki jest wsadzenie do niej zwykłego nietablicowego elementu, może być też to wartość: {{Code|nil}}. A to wywołanie jest: <syntaxhighlight lang="lua"> local wartosc="wartość"; --Zmienna: wartosc, nie jest w tym przypadku tablicą; local wynik=p["Nazwa funkcji"](wartosc); </syntaxhighlight> Wtedy w tej ramce w celu uzyskania jakikolwiek wartości jest przykład wywołania tej funkcji zwracanej przez funkcję w ramce z argumentem pustym. <syntaxhighlight lang="lua"> -- Zmienna: wartość1, przyjmuje wartość: "wartość"; Jeżeli ona, przyjmuje wartość: nil, to wywołanie rzuci: nil, i za każdym następny razem; local wartosc1=PobierzParametryRamki(); -- Zmienna: wartość2, przyjmuje wartość: nil; local wartosc2=PobierzParametryRamki(); </syntaxhighlight> W wywołaniach powinno dbać się o właściwą kolejność wywołań, bo argumentem funkcji z tablicy transportu może być zwykła tablicowa wartość. Najpierw uzyskujemy wartości nietablicowe, a później tablicowe, na wypadek niewiadomej {{Code|frame}} jakiego typu ma być wartość. Też ta zmienna może istnieć pod kilkoma możliwymi kluczami, lub tą zmienną może być jedyny argument funkcji, która jest nietablicową wartością, wtedy ją się wywołuje jako dla przypadku, gdy parametr jest nietablicowy lub jest pod kluczem {{Code|tekst}}: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local tekst=parametry_modul.PobierzParametryRamki(frame)("tekst"); </syntaxhighlight> Lub chcemy tę funkcję wywołać bezparametrowo, gdy chcemy, by {{Code|frame}} nie była tablicą: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local tekst=parametry_modul.PobierzParametryRamki(frame)(); </syntaxhighlight> Wtedy ta zmienna w przedostatnim przykładzie jest pod wartością {{Code|tekst}}, gdy wartość {{Code|frame}} jest tablicą, lub może być jedyną wartością, którą jest {{Code|frame}} jako zmienna nietablicowa, wtedy ta zmienna też jest pod {{Code|tekst}}, ta funkcja uzyskana z: {{Code|{{sr|#p.PobierzParametryRamki(frame)|p=Parametry}}}}, wtedy może być wywołana tylko raz z nienilową wartością zwracaną, następnym razem zwraca wartość {{Code|nil}}, wtedy to dotyczy przedostatniego i ostatniego przykładu. Jeżeli {{Code|frame}} jest nietablicowa, to wtedy wartość {{Code|tekst}} jest taka sama, co {{Code|frame}}. A jeżeli jest tablicą, to ta wartością jest {{Code|frame.args["tekst"]}}, lub gdy {{Code|args}} nie istnieje, lub istnieje, ale jest nietablicowa, to wtedy ta wartość jest {{Code|frame["tekst"]}}. A gdy zmienne istnieją pod wieloma kluczami, lub gdy funkcję wywołano ze zmienną nietablicową, wtedy ogólnie możemy dla przykładu powiedzieć: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local PobierzParametryRamki=parametry_modul.PobierzParametryRamki(frame); local wartosc1=PobierzParametryRamki("nazwa1") or PobierzParametryRamki(1); local wartosc2=PobierzParametryRamki("nazwa2") or PobierzParametryRamki(2); local wartosc3=PobierzParametryRamki("nazwa3") or PobierzParametryRamki(3); </syntaxhighlight> Wtedy ta zmienna jest pod kluczem, np.: {{Code|nazwa1}} lub {{Code|1}}, tablicy ramki {{Code|frame}} tablicy transportu, następne wywołania dla następnych kluczy też zrzucą pewne wartości, lub jest ona zwykłą nietablicową wartością mogącą być równą nawet {{Code|nil}}. Następne wywołania uzyskanej tak funkcji w przypadku, gdy {{Code|frame}} jest nietablicowy, rzucać będzie z samej definicji funkcji wartości {{Code|nil}}, czyli {{Code|wartosc2{{=}}wartosc3{{=}}nil}}, ale za to wartość {{Code|wartosc1}} nie musi być, ale może, wartością {{Code|nil}}, jest tą wartością, gdy {{Code|frame{{=}}nil}}, w przeciwnym wypadku za pierwszym razem tej wartości nietablicowej uzyskamy wartość nie {{Code|nil}}, a za drugim i dalszym zawsze wartość {{Code|nil}}. == {{Code|p.PobierzElementNumerowanyZFrameLubTablicy}} == Definicja skrótowa funkcji jest z parametrem charakteryzującym pewien zestaw zmiennych {{Code|frame}}, * które nie musi być tablicą ramki tablicy transportu, tylko moze być innym parametrem, który jest tablicą parametrów podanych do funkcji, * nawet gdy parametrem podanym do funkcji, w której wykorzystujemy tą funkcję, jest jedyna zmienna będąca tablicą ramki. Ale z drugiej strony, tak nie musi być, może być to rozbudowany zestaw zmiennych, np. nazwanych i nienazwanych, którego wszystkie sposoby podawania łączymy jednym sposobem podawania. Mimo że parametry funkcji są parametrami nienazwanymi, mogą być one ponumerowane, ale zmienna w tablicy może przyjmować wartość tą samą na różne sposoby, raz w sposób nazwany, a za innym sposobem jako nienazwany. Ogólnie ostateczne parametry łączymy w dane parametry za pomocą jednego sposobu, tzn. za pomocą tej funkcji, i dla tak uzyskanej tablicy tworzymy funkcję zwracaną przez funkcję w nagłówku, która przyjmuje parametr, który jest kluczem tej uzyskanej tablicy. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobierzElementNumerowanyZFrameLubTablicy(frame)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu. }} Weźmy najprostszy sposób realizacji tej funkcji, w realizacji: {{Code|1-1, 2-2, 3-3}}, czyli ten opis jest zaraz poniżej. === Sposoby wywołania funkcji === ; Pierwszy sposób{{dk}} Weźmy funkcję, którą można wywoływać z wieloma parametrami, jak i w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, którą przykładowo piszemy jego wywołanie wewnątrz innej funkcji na pięć sposobów, czyli teraz pierwszy sposób z tylko z parametrem, więc tablicą ramki tablicy transportu wywodzącą się z ramki uruchomioną w wikikodzie w jakimś szablonie rodzicu: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"](frame); </syntaxhighlight> ; Drugi sposób{{dk}} A teraz drugi sposób, pisząc, bezpośrednio inaczej, formułując wywołanie tej funkcji, używając zmiennych tablicowych tablicy ramki, ale to nie jest tak naprawdę tablica ramka tablicy transportu, tylko parametr podany bezpośrednio do funkcji, tak jak się to robi w języku {{lpg|Lua}}, nie jak w przykładzie powyżej, więc: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"]{args={"wartość1","wartość2","wartość3",},}; </syntaxhighlight> ; Trzeci sposób{{dk}} Lub równoważnie, pisząc, nie używając zmiennej {{Code|args}}: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"]{"wartość1","wartość2","wartość3",}; </syntaxhighlight> ; Czwarty sposób{{dk}} Albo te parametry wsadzając do funkcji: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"]("wartość1","wartość2","wartość3"); </syntaxhighlight> ; Piąty spssób{{dk}} Można też wywołać to wszystko w ramce, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w wikikpdzie, wtedy wsadzając parametry do ramki: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|wartość1|wartość2|wartość3}} </syntaxhighlight> === Omówienie pobierania takich parmetrów === A jak połączyć wszystkie te pięć sposobów, posługiwać się tymi sposobami wewnątrz funkcji {{Code|Nazwa funkcji}} w sposób jednolity, jedynie wtedy należy skorzystać z funkcji z definiowaną w jakimś module w sposób: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(...) local tablica_prametrow_funkcji={...}; local parametry_modul=require("Module:Parametry"); local PobierzElementNumerowanyZFrameLubTablicy=parametry_modul.PobierzElementNumerowanyZFrameLubTablicy(tablica_prametrow_funkcji); ... end; </syntaxhighlight> Wtedy za pomocą zmiennej {{Code|PobierzElementNumerowanyZFrameLubTablicy}} dostaliśmy się do funkcji, która przyjmuje jedyny parametr, aby dostać się do elementów tablicy uzyskanej w wewnątrz tej funkcji, zdefiniowaną w tablicy {{Code|tablica_prametrow_funkcji}}, która jest nic innym jak zestawem parametrów w funkcji: {{Code|Nazwa funkcji}}. * W pierwszym i drugim sposobem zmienną tą nazwijmy to jako {{Code|args}}, jest zmienną z podtablicy innego {{Code|args}} przekazanych jako parametr tablicy do funkcji, * w trzecim sposobie tą zmienną jest cała tablica, * a czwartym jest zestaw parametrów ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. A czym się różnią się te sposoby, a więc te sposoby można powiązać jedną tylko funkcją powiedzianą w nagłówku według przykładu podaną zaraz powyżej, wtedy możemy dostawać się do tych samych zmiennych o takich samych nazwach i wartościach, ale w różnych reprezentacjach na różne sposoby, wtedy można powiedzieć, że: <syntaxhighlight lang="lua"> args[1]="wartość1"; args[2]="wartość2"; args[3]="wartość3"; </syntaxhighlight> Czyli w wyniku działania funkcji w nagłówku, otrzymamy funkcję zwracającą te wartości, która operuje na tej tablicy, której wynikiem jest zestaw zmiennych ponumerowanych, ogólnie nienazwanych, której wartości odpowiadają te podane w ramce ostatniej powyżej. Na podstawie tego wiemy, jak działa funkcja ta z nagłówka. === Nazwy alternatywne danych parametrów funkcji ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}} === Pisząc w inny sposób, można też wskazywać: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(...) local tablica_prametrow_funkcji={...}; local parametry_modul=require("Module:Parametry"); local PobierzElementNumerowanyZFrameLubTablicy=parametry_modul.PobierzElementNumerowanyZFrameLubTablicy(tablica_prametrow_funkcji); local wartosc1=PobierzElementNumerowanyZFrameLubTablicy("nazwa1") or PobierzElementNumerowanyZFrameLubTablicy(1); local wartosc2=PobierzElementNumerowanyZFrameLubTablicy("nazwa2") or PobierzElementNumerowanyZFrameLubTablicy(2); local wartosc3=PobierzElementNumerowanyZFrameLubTablicy("nazwa3") or PobierzElementNumerowanyZFrameLubTablicy(3); end; </syntaxhighlight> Zmienne w przykładzie o kluczach: {{Code|nazwa1}}, {{Code|nazwa2}} i {{Code|nazwa3}}, posiadające pewne swoje wartości, to są zmienne w tablicy {{Code|tablica_prametrow_funkcji}}, podane też jako zmienne, jako pewne argumenty tablicy, który są w tej funkcji zwracanej jako argument (parametr) funkcji, * jeżeli argumenty podano w postaci jednego parametru funkcji w postaci pewnej tablicy z np. elementami nazwanymi, * lub jako wiele argumentów w ramce, w wikikodzie, w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w pewnym szablonie, * a rozpatrując dalej elementy względem ich nazw, np. alternatywnych, to te numery mogą być kolejo do nazw ich odpowiedników nazwanych, które w przykładzie powyżej, mają pierwszeństwo, ale tak nie musi być, te parametry: {{Code|1}}, {{Code|2}} i {{Code|3}}, to jest numer parametru, jeżeli argumenty do funkcji podano w postaci wielu jego parametrów. == {{Code|p.PobierzParametr}} == Ta funkcja zwraca znów inną funkcję, która ma jedyny parametr, mówiący jakiego parametru poszukujemy, co jest wyjaśnione w definicji funkcji z nagłówka, że ona zwraca tą właśnie funkcje. Definicja skrótowa dunkcji: <syntaxhighlight lang="lua"> function p.PobierzParametr(frame,czy_frame_lub_parent,czy_frame) ... return function(nazwa) return __pobierz_parametr_table_args(nazwa); end; end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu. | 2 = {{Code|czy_frame_lub_parent}} i {{Code|czy_frame}} | _2 = Parametry logiczne dodatkowe funkcji. }} === Wartośc zwracanainumer metody === Funkcja zwraca jednocześnie dwie wartości, ta zwrócona z funkcji z nagłówka, prawdziwą wartość, i numer metody w postaci: {{Code|return wartosc, numer_metody}}. === Opis zwracanych elementów przez funkcję zwracaną - różnemetody zwracania, jak je wykorzystać === Ta funkcja zwracana ma w swojej definicji inną jeszcze funkcję z tym samym parametrem, co jego rodzic, i to jest za każdym razem inna funkcja w zależności z jakim typem danych się posługujemy {{Code|frame}} i jakie podaliśmy parametry. Gdy warunkiem, gdy zmienna {{Code|frame}} jest tablicą, czyli te zmienne druga: {{Code|czy_frame_lub_parent}} (jeżeli funkcja jest uruchomiona w ramce w szablonie, jeżeli ma wartość {{Code|true}}, to ona wybiera raz parametr z: {{Code|frame.args[nazwa or 1]}}, a za innym razem z {{Code|pf.args[nazwa or 1]}}, gdzie {{Code|pf{{=}}frame:getParent()}}, tutaj jest zwracana wartość: {{Code|return wartosc,2}}). Czy trzecia: {{Code|czy_frame}} (która mówi, jeżeli funkcję uruchomiono w ramce, ale przy wartości prawdziwej tego pierwszego podanego parametru, czyli {{Code|true}}, wybierana jest zawsze wartość {{Code|frame.args[nazwa or 1}}}, w przeciwnym wypadku uruchamiana jest funkcja {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, tutaj zwracana jest wartość {{Code|return wartosc,1}}). Jeżeli wartością {{Code|frame}} jest wartość nietablicowa, ale niebędącą wartością {{Code|nil}}, wtedy ustawiana jest funkcja, która tylko za pierwszym razem zwraca nienilową wartość {{Code|return wartosc,0}}, a później zwraca wartość {{Code|return nil,0}}. Gdy wartością {{Code|frame}} jest {{Code|nil}}, to funkcja zawsze wraca tą wartość {{Code|return nil,0}}. Powyższy sposób działa również dobrze, gdy zdefiniujemy w parametrach funkcji fałszywą funkcję {{Code|frame.getParent}}. Gdy funkcja nie jest uruchamiana w ramce lub funkcja {{Code|frame.getParent}} nie jest zdefiniowana, to wtedy funkcja wchodzi zawsze w ten jej krok, jakby {{Code|czy_frame_lub_parent}} było {{Code|false}} według tego powyżej, to wtedy brana jest zmienna {{Code|czy_frame}}, i jaką wartość ona przyjmuje. === Nazwy alternatywne parametrów === Funkcję pisze się według sposobu, którą się wywołuje według: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame); local wartosc1=PobierzParametr("nazwa1") or PobierzParametr(1); local wartosc2=PobierzParametr("nazwa2") or PobierzParametr(2); local wartosc3=PobierzParametr("nazwa3") or PobierzParametr(3); </syntaxhighlight> Na wypadek wartości nietabelowej, tą wartość zapisuje się jako pierwszą w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a dla wartości tabelowych, jaka jest kolejność to jest obojętne, byle by to było sensowne. === Wywołania funkcji === Tę funkcję podobnie się wywołuje jak funkcję: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}. Wartością {{Code|frame}} nie musi być tablica ramki tablicy transportu, równie dobrze może być to dowolna tablica lub wartość nietablicowa. Weźmy ramkę, w której uruchamiamy funkcję ramki: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}} </syntaxhighlight> === Przykłady wykorzystania funkcji === ; Przykład pierwszy{{dk}} Ona musi być wywołana z parametrem {{Parametr|wyspecjalizowana|tak}}, jako podpowiedź, że liczą się parametry ramki dziecka, a nie jego rodzica, czyli szablonu. Wtedy funkcję {{Code|Nazwa funkcji}} definiujemy: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame,true); ... end; </syntaxhighlight> Wtedy parametr {{Parametr|wyspecjalizowana|tak}} jest ignorowany, a przy wartości {{Code|false}} drugiego parametru funkcji, czyli wywołania: {{Code|local PobierzParametr{{=}}parametry_modul.PobierzParametr(frame,false);}}, już nie, ale nie zawsze. W takim przypadku według powyższego przykładu raz jest brana wartość, jeżeli istnieje, z {{Code|frame.args}}, a jak ona nie istnieje, to wtedy z: {{Code|pf.args}}. ; Przykład drugi{{dk}} Weźmy inny przypadek: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame,false,true); ... end; </syntaxhighlight> Przy tym też parametr: {{Parametr|wyspecjalizowana|tak}}, jest ignorowany, wtedy jest zawsze wybierana do rozważań tablica: {{Code|frame.args}}. ; Przykład trzeci{{dk}} Znów w innym przypadku, gdzie parametr: {{Parametr|wyspecjalizowana|tak}}, jest zawsze rozważany w naszym wypadku: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame,false,false); ... end; </syntaxhighlight> To to wywołanie, wtedy dokładnie działa jak funkcja: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, a zwrócona funkcja: {{Code|PobierzParametr}} pobiera elementy z tak uzyskanej tablicy {{Code|args}} poprzez nią. === Przypadek nietablicowego charakteru parametrów funkcji === W przypadku, gdy {{Code|frame}} nie jest tablicą, wtedy parametry: {{Code|czy_frame_lub_parent}} i {{Code|czy_frame}}, są w takim przypadku zawsze ignorowane, ale muszą być ustawione na wypadek, gdyby do funkcji {{Code|Nazwa funkcji}} wsadzono tablicę, np. z ramki, tzn. tablicę ramki funkcji tablicy transportu. === Ogólny przypadek, często stosowany === Najprostszym często ogólnym przykładem, który prawie zawsze jest stosowany: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame); ... end; </syntaxhighlight> Wtedy parametr: {{Parametr|wyspecjalizowana|tak}}, jest prawie zawsze nieignorowany, ale nie zawsze. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> q57svbjfkj1fkc3wrukwc9uzs8v8sjd 555735 555734 2026-09-11T19:07:05Z Persino 2851 /* {{Code|p.PobierzFrameEwentualnieParent}} */ 555735 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} Są tutaj przedstawione funkcje parametrów. == {{Code|p.PobierzFrameEwentualnieParent}} == Argument tej funkcji {{Code|frame}} koniecznie musi być tablicą, w przypadku przeciwnym wywoła to błąd języka {{lpg|Lua}}, że z wartości nietabelowej chcemy wyliczyć jego nieistniejący element {{Code|getParent}}, który ma prawo nie być. Funkcja pobiera parametry ramki szablonu rodzica, a nie dziecka, a jeżeli w dziecku w ramce w wikikodzie w szablonie podamy specjalny parametr {{Parametr|wyspecjalizowana|tak}}, to wtedy ta funkcja ściąga parametry ramki. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobierzFrameEwentualnieParent(frame)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu. }} === Sterowanie funkcją === Tą funkcją można sterować ze strony ramki tym właśnie specjalnym parametrem o wartości niepustej, którą jest {{Parametr|wyspecjalizowana|tak}}. ==== Przykłady wykorzystania z parametrem sterującym ==== W ramce podajemy argumenty wraz z tym specjalnym parametrem: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}} </syntaxhighlight> To wtedy w kodzie w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} w module o nazwie {{Code|Nazwa modułu}}, piszemy: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzFrameEwentualnieParent(frame).args; .... end; </syntaxhighlight> To wtedy w kodzie ściągane parametry ramki dziecka. === Pobieranie oryginalnej tablicy === Tę funkcję można równie dobrze wykorzystać do zwykłych tabel: <syntaxhighlight lang="lua"> local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzFrameEwentualnieParent(tabela); </syntaxhighlight> === Możliwość tej samej funkcji uruchomioną w ramce lub z podaniem do niej pewnego zestawu parametrów w postaci tablicy === A w tym przypadku ta funkcja nic nie robi, tylko zmienna {{Code|args}} referencyjnie wskazuje na tablicę {{Code|tablica}}. Ale można ją wykorzystać, gdy by funkcja {{Code|Nazwa funkcji}}, była uruchomiona ze zwykłą tablicą, ale z możliwością, że to może być tablicą ramki {{Code|frame}} tablicy transportu, np.: <syntaxhighlight lang="lua"> --- Pierwsza możliwość; local wartosc1=p["Nazwa funkcji"](frame); -- Druga możliwość local wartosc2=p["Nazwa funkcji"]{["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; </syntaxhighlight> Dla obu jest taka niedogodność, że jedynie jest taka nieprawidłowość, że w przypadku parametru tablicy ramki tablicy transportu należy podawać uzyskany element {{Code|args}}, a w przypadku zwykłej tablicy już nie, tą niedokodność rozwiązuje funkcja: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}. == {{Code|p.PobierzArgsParametry}} == Argument tej funkcji {{Code|frame}} koniecznie nie musi być tablicą, bo wtedy nie wywoła to błędu języka {{lpg|Lua}}, że z wartości nietabelowej chcemy wyliczyć jego niepusty element {{Code|getParent}}, bo przedtem sprawdzana jest w tej funkcji, czy jest to tablica. W definicji tej funkcji zmienna uzyskana z funkcji: {{Code|{{sr|#p.PobierzFrameEwentualnieParent(frame)|p=Parametry}}}}, a jeśli jej składowa {{Code|args}} jest tablicą, to jest właśnie ona zwracana, a jeśli istnieje, ale nie jest tablicą, lub ona nie istnieje, to wtedy brana jest właśnie wartość tablicowa {{Code|frame}}, jeśli jest ona taka, a gdy nie, to wtedy z tej funkcji tutaj nie korzystamy. Funkcja pobiera parametry ramki szablonu rodzica, a nie dziecka, a jeżeli w dziecku w ramce w wikikodzie w szablonie podamy specjalny parametr {{Parametr|wyspecjalizowana|tak}}, to wtedy ta funkcja ściąga parametry ramki. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobierzArgsParametry(frame, czy_nie_tablica_jako_tablica)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica transportu ramki. | 2 = {{Code|czy_nie_tablica_jako_tablica}} | _2 = Czy wartości nietablicowe umieszczać w jednoelemenowej tabeli. }} Funkcja wykorzystuje wspomnianą powyżej funkcję do swojego działania, ona jest wtedy aktywowana, gdy zmienna {{Code|frame}} jest tablicą, i jest sprawdzane, czy ona posiada nazwany element o kluczu {{Code|args}}, i czy jest on tablicowy. Jeżeli wartością zmiennej {{Code|frame}} nie jest tablica, ale nie przybiera wartości {{Code|nil}}, to ona jest umieszczana w tablicy, jeżeli zmiennej {{Code|czy_nie_tablica_jako_tablica}} przydzielimy wartość {{Code|true}}, w przeciwnym wypadku zwracana jest ona w postaci niezmienionej, a jeżeli wartość tej zmiennej nie istnieje, to zwracana jest zwykła tablica pusta. Tą funkcją można sterować ze strony ramki tym właśnie specjalnym parametrem o wartości niepustej. W ramce podajemy argumenty wraz z tym specjalnym parametrem: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}} </syntaxhighlight> To wtedy w kodzie w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} w module o nazwie {{Code|Nazwa modułu}}, piszemy: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(frame); .... end; </syntaxhighlight> To wtedy w kodzie ściągane parametry ramki dziecka. Tę funkcję można równie dobrze wykorzystać do zwykłych tabel: <syntaxhighlight lang="lua"> local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(tabela); </syntaxhighlight> A w tym przypadku ta funkcja nic nie robi, tylko zmienna {{Code|args}} referencyjnie wskazuje na tablicę {{Code|tablica}}. Ale można ją wykorzystać, gdyby funkcja {{Code|Nazwa funkcji}}, była uruchomiona ze zwykłą tablicą, ale z możliwością, że to może być tablicą ramki {{Code|frame}} tablicy transportu, np.: <syntaxhighlight lang="lua"> --- Pierwsza możliwość; local wartosc1=p["Nazwa funkcji"](frame); -- Druga możliwość local wartosc2=p["Nazwa funkcji"]{["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; </syntaxhighlight> Dla obu tych przypadków nie ma żadnej niedogodności, jak to występowała w {{Code|{{sr|#p.PobierzFrameEwentualnieParent(frame)|p=Parametry}}}}. Jeśliby do funkcji tablicy transportu dać wartość równą nie tablicy, to wtedy równoważnie możemy napisać: <syntaxhighlight lang="lua"> local wartosc="wartość"; local wynik=p["Nazwa funkcji"](wartosc); </syntaxhighlight> to wtedy definicję tej funkcji piszemy: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(frame,true); local wartosc=args[1]; end; </syntaxhighlight> lub równoważnie możemy zapisać: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); local wartosc=parametry_modul.PobierzArgsParametry(frame); end; </syntaxhighlight> A jeżeli nie wsadziliśmy żadnej wartości do funkcji ramki tablicy transportu lub tą wartością jest {{Code|nil}}, wtedy: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"](); </syntaxhighlight> wtedy definicja tej funkcji wygląda: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); -- Zmienna: args, wskazuje na wartość, którą jest tablicą pustą, tzn. w tej tablicy nie ma wcale elementów; local args=parametry_modul.PobierzArgsParametry(frame); end; </syntaxhighlight> Widzimy, że wtedy zmienna {{Code|args}} jest normalną pustą tablicą, i nie musimy wtedy wcale pisać poniżej, bo wtedy wychodzi w tym przypadku na to samo: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(frame,true); </syntaxhighlight> Argument drugi w {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, który w naszym przypadku musi mieć wartość {{Code|true}}, a wtedy jest jedynie sens, gdy {{Code|frame}} nie jest tablicą, i gdy chcemy tą wartość umieścić w tablicy, a nie powtórzyć wartość, tzn. chcemy napisać: {{Code|{{(}}frame,{{)}}}}, w przeciwnym wypadku musilibyśmy napisać coś w rodzaju, zamiast tak spreparowanej tablicy: {{Code|frame}}, czyli: <syntaxhighlight lang="lua"> -- Pierwszy przypadek, gdy frame jest wartością nietablicową; local parametry_modul=require("Module:Parametry"); ... -- Zwracana wartość: args, to nic innego niż: {frame,}; local args=parametry_modul.PobierzArgsParametry(frame,true); ... -- Zwracana wartość: args, to nic innego niż: frame, a nie {frame,}, jak poprzednio; local args=parametry_modul.PobierzArgsParametry(frame); </syntaxhighlight> == {{Code|p.PobierzParametryRamki}} == Funkcja służy do ustawienia pewnych domyślnych dwóch pewnych funkcji służących do pobieranie danych z tabelki z pierwszej tej funkcji: * Jeżeli ona posiada klucz o wartości {{Code|args}}, ** to zwracana jest ta właśnie tablica jako argument pierwszej tej funkcji, jeżeli jest w ogóle tablicą, ** w przeciwnym wypadku zwracana jest ta oryginalna tablica, też jako argument tej funkcji, * w przeciwnym dalszym wypadku zwracana jest zwracana wartość ta, jako argument tej drugiej funkcji, która zwraca prawdziwą wartość z argumentu tylko za pierwszym razem, z tej funkcji, za następnym i dalszym razem {{Code|nil}}. Z tak utworzonej ogólnie większej funkcji wykorzystywana jest w budowie omawianej funkcji, która jest zwracana przez omawianą funkcję, która względem jego budowy wywołuje raz pierwszą albo drugą poprzednią wspomnianą funkcję zależną od rodzaju zmiennej {{Code|frame}}, która może być tabelką, ale nie musi być. Ta funkcja zwracana przez funkcję w nagłówku przyjmuje argument, która jest kluczem do tych wspomnianych, może że, * tabel (dokładnie, która ta może tabelka to zależy od formatu tej naszej rozważanej zmiennej), * a jeżeli to nie tabelka, co jest zwracane, to już zostało powiedziane. Definicja skrótowa tej funkcji jest: <syntaxhighlight lang="lua"> function p.PobierzParametryRamki(frame)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu. }} Weźmy ramkę sformułowaną w wikikodzie jako dziecko w szablonie rodzicu: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5}} </syntaxhighlight> To wtedy tablica ramki tablicy transportu posiada właśnie {{Code|frame}}, która jest tablicą, i na pewno posiada tablicę o nazwie {{Code|args}}, to wtedy tę funkcję wywołaną w ramce, która wywołuje funkcję w nagłówku, formułujemy: <syntaxhighlight lang="lua"> local p={}; local p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametryRamki=parametry_modul.PobierzParametryRamki(frame); ... end; </syntaxhighlight> Równie dobrze funkcję z ramki można wywołać w sposób, co wtedy ta funkcja też zostanie wywołana pozytywnie: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"]{args={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}}; </syntaxhighlight> W tej funkcji nie trzeba definiować funkcji fałszywej {{Code|getParent}}, w postaci: {{Code|getParent{{=}}function()end}}. Widzimi, że ta tablica posiada nazwę zmiennej tablicowej o nazwie {{Code|args}}, ale ona nie jest tablicą ramki tablicy transportu, ale tą tablicę możemy bezposrednio wsadzić w tą główną tablicę w samym argumencie funkcji. Równie dobrze możemy wywołać tę funkcję zdefiniowaną naszą w jakimś module w sposób: <syntaxhighlight lang="lua"> local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; local wynik=p["Nazwa funkcji"]{tabela); </syntaxhighlight> też ta funkcja prawidłowo się wywoła. W tym przypadku, jak i w przypadkach powyżej, wyniki uzyskuje się w następującym wywołaniach: <syntaxhighlight lang="lua"> --- Zmienna: wartosc1, przyjmuje wartość: "wartość1"; local wartosc1=PobierzParametryRamki("nazwa1"); --- Zmienna: wartosc2, przyjmuje wartość: "wartość2"; local wartosc2=PobierzParametryRamki("nazwa2"); --- Zmienna: wartosc3, przyjmuje wartość: "wartość3"; local wartosc3=PobierzParametryRamki(1); </syntaxhighlight> W innym przypadku wywołań funkcji ramki jest wsadzenie do niej zwykłego nietablicowego elementu, może być też to wartość: {{Code|nil}}. A to wywołanie jest: <syntaxhighlight lang="lua"> local wartosc="wartość"; --Zmienna: wartosc, nie jest w tym przypadku tablicą; local wynik=p["Nazwa funkcji"](wartosc); </syntaxhighlight> Wtedy w tej ramce w celu uzyskania jakikolwiek wartości jest przykład wywołania tej funkcji zwracanej przez funkcję w ramce z argumentem pustym. <syntaxhighlight lang="lua"> -- Zmienna: wartość1, przyjmuje wartość: "wartość"; Jeżeli ona, przyjmuje wartość: nil, to wywołanie rzuci: nil, i za każdym następny razem; local wartosc1=PobierzParametryRamki(); -- Zmienna: wartość2, przyjmuje wartość: nil; local wartosc2=PobierzParametryRamki(); </syntaxhighlight> W wywołaniach powinno dbać się o właściwą kolejność wywołań, bo argumentem funkcji z tablicy transportu może być zwykła tablicowa wartość. Najpierw uzyskujemy wartości nietablicowe, a później tablicowe, na wypadek niewiadomej {{Code|frame}} jakiego typu ma być wartość. Też ta zmienna może istnieć pod kilkoma możliwymi kluczami, lub tą zmienną może być jedyny argument funkcji, która jest nietablicową wartością, wtedy ją się wywołuje jako dla przypadku, gdy parametr jest nietablicowy lub jest pod kluczem {{Code|tekst}}: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local tekst=parametry_modul.PobierzParametryRamki(frame)("tekst"); </syntaxhighlight> Lub chcemy tę funkcję wywołać bezparametrowo, gdy chcemy, by {{Code|frame}} nie była tablicą: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local tekst=parametry_modul.PobierzParametryRamki(frame)(); </syntaxhighlight> Wtedy ta zmienna w przedostatnim przykładzie jest pod wartością {{Code|tekst}}, gdy wartość {{Code|frame}} jest tablicą, lub może być jedyną wartością, którą jest {{Code|frame}} jako zmienna nietablicowa, wtedy ta zmienna też jest pod {{Code|tekst}}, ta funkcja uzyskana z: {{Code|{{sr|#p.PobierzParametryRamki(frame)|p=Parametry}}}}, wtedy może być wywołana tylko raz z nienilową wartością zwracaną, następnym razem zwraca wartość {{Code|nil}}, wtedy to dotyczy przedostatniego i ostatniego przykładu. Jeżeli {{Code|frame}} jest nietablicowa, to wtedy wartość {{Code|tekst}} jest taka sama, co {{Code|frame}}. A jeżeli jest tablicą, to ta wartością jest {{Code|frame.args["tekst"]}}, lub gdy {{Code|args}} nie istnieje, lub istnieje, ale jest nietablicowa, to wtedy ta wartość jest {{Code|frame["tekst"]}}. A gdy zmienne istnieją pod wieloma kluczami, lub gdy funkcję wywołano ze zmienną nietablicową, wtedy ogólnie możemy dla przykładu powiedzieć: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local PobierzParametryRamki=parametry_modul.PobierzParametryRamki(frame); local wartosc1=PobierzParametryRamki("nazwa1") or PobierzParametryRamki(1); local wartosc2=PobierzParametryRamki("nazwa2") or PobierzParametryRamki(2); local wartosc3=PobierzParametryRamki("nazwa3") or PobierzParametryRamki(3); </syntaxhighlight> Wtedy ta zmienna jest pod kluczem, np.: {{Code|nazwa1}} lub {{Code|1}}, tablicy ramki {{Code|frame}} tablicy transportu, następne wywołania dla następnych kluczy też zrzucą pewne wartości, lub jest ona zwykłą nietablicową wartością mogącą być równą nawet {{Code|nil}}. Następne wywołania uzyskanej tak funkcji w przypadku, gdy {{Code|frame}} jest nietablicowy, rzucać będzie z samej definicji funkcji wartości {{Code|nil}}, czyli {{Code|wartosc2{{=}}wartosc3{{=}}nil}}, ale za to wartość {{Code|wartosc1}} nie musi być, ale może, wartością {{Code|nil}}, jest tą wartością, gdy {{Code|frame{{=}}nil}}, w przeciwnym wypadku za pierwszym razem tej wartości nietablicowej uzyskamy wartość nie {{Code|nil}}, a za drugim i dalszym zawsze wartość {{Code|nil}}. == {{Code|p.PobierzElementNumerowanyZFrameLubTablicy}} == Definicja skrótowa funkcji jest z parametrem charakteryzującym pewien zestaw zmiennych {{Code|frame}}, * które nie musi być tablicą ramki tablicy transportu, tylko moze być innym parametrem, który jest tablicą parametrów podanych do funkcji, * nawet gdy parametrem podanym do funkcji, w której wykorzystujemy tą funkcję, jest jedyna zmienna będąca tablicą ramki. Ale z drugiej strony, tak nie musi być, może być to rozbudowany zestaw zmiennych, np. nazwanych i nienazwanych, którego wszystkie sposoby podawania łączymy jednym sposobem podawania. Mimo że parametry funkcji są parametrami nienazwanymi, mogą być one ponumerowane, ale zmienna w tablicy może przyjmować wartość tą samą na różne sposoby, raz w sposób nazwany, a za innym sposobem jako nienazwany. Ogólnie ostateczne parametry łączymy w dane parametry za pomocą jednego sposobu, tzn. za pomocą tej funkcji, i dla tak uzyskanej tablicy tworzymy funkcję zwracaną przez funkcję w nagłówku, która przyjmuje parametr, który jest kluczem tej uzyskanej tablicy. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobierzElementNumerowanyZFrameLubTablicy(frame)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu. }} Weźmy najprostszy sposób realizacji tej funkcji, w realizacji: {{Code|1-1, 2-2, 3-3}}, czyli ten opis jest zaraz poniżej. === Sposoby wywołania funkcji === ; Pierwszy sposób{{dk}} Weźmy funkcję, którą można wywoływać z wieloma parametrami, jak i w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, którą przykładowo piszemy jego wywołanie wewnątrz innej funkcji na pięć sposobów, czyli teraz pierwszy sposób z tylko z parametrem, więc tablicą ramki tablicy transportu wywodzącą się z ramki uruchomioną w wikikodzie w jakimś szablonie rodzicu: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"](frame); </syntaxhighlight> ; Drugi sposób{{dk}} A teraz drugi sposób, pisząc, bezpośrednio inaczej, formułując wywołanie tej funkcji, używając zmiennych tablicowych tablicy ramki, ale to nie jest tak naprawdę tablica ramka tablicy transportu, tylko parametr podany bezpośrednio do funkcji, tak jak się to robi w języku {{lpg|Lua}}, nie jak w przykładzie powyżej, więc: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"]{args={"wartość1","wartość2","wartość3",},}; </syntaxhighlight> ; Trzeci sposób{{dk}} Lub równoważnie, pisząc, nie używając zmiennej {{Code|args}}: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"]{"wartość1","wartość2","wartość3",}; </syntaxhighlight> ; Czwarty sposób{{dk}} Albo te parametry wsadzając do funkcji: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"]("wartość1","wartość2","wartość3"); </syntaxhighlight> ; Piąty spssób{{dk}} Można też wywołać to wszystko w ramce, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w wikikpdzie, wtedy wsadzając parametry do ramki: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|wartość1|wartość2|wartość3}} </syntaxhighlight> === Omówienie pobierania takich parmetrów === A jak połączyć wszystkie te pięć sposobów, posługiwać się tymi sposobami wewnątrz funkcji {{Code|Nazwa funkcji}} w sposób jednolity, jedynie wtedy należy skorzystać z funkcji z definiowaną w jakimś module w sposób: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(...) local tablica_prametrow_funkcji={...}; local parametry_modul=require("Module:Parametry"); local PobierzElementNumerowanyZFrameLubTablicy=parametry_modul.PobierzElementNumerowanyZFrameLubTablicy(tablica_prametrow_funkcji); ... end; </syntaxhighlight> Wtedy za pomocą zmiennej {{Code|PobierzElementNumerowanyZFrameLubTablicy}} dostaliśmy się do funkcji, która przyjmuje jedyny parametr, aby dostać się do elementów tablicy uzyskanej w wewnątrz tej funkcji, zdefiniowaną w tablicy {{Code|tablica_prametrow_funkcji}}, która jest nic innym jak zestawem parametrów w funkcji: {{Code|Nazwa funkcji}}. * W pierwszym i drugim sposobem zmienną tą nazwijmy to jako {{Code|args}}, jest zmienną z podtablicy innego {{Code|args}} przekazanych jako parametr tablicy do funkcji, * w trzecim sposobie tą zmienną jest cała tablica, * a czwartym jest zestaw parametrów ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. A czym się różnią się te sposoby, a więc te sposoby można powiązać jedną tylko funkcją powiedzianą w nagłówku według przykładu podaną zaraz powyżej, wtedy możemy dostawać się do tych samych zmiennych o takich samych nazwach i wartościach, ale w różnych reprezentacjach na różne sposoby, wtedy można powiedzieć, że: <syntaxhighlight lang="lua"> args[1]="wartość1"; args[2]="wartość2"; args[3]="wartość3"; </syntaxhighlight> Czyli w wyniku działania funkcji w nagłówku, otrzymamy funkcję zwracającą te wartości, która operuje na tej tablicy, której wynikiem jest zestaw zmiennych ponumerowanych, ogólnie nienazwanych, której wartości odpowiadają te podane w ramce ostatniej powyżej. Na podstawie tego wiemy, jak działa funkcja ta z nagłówka. === Nazwy alternatywne danych parametrów funkcji ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}} === Pisząc w inny sposób, można też wskazywać: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(...) local tablica_prametrow_funkcji={...}; local parametry_modul=require("Module:Parametry"); local PobierzElementNumerowanyZFrameLubTablicy=parametry_modul.PobierzElementNumerowanyZFrameLubTablicy(tablica_prametrow_funkcji); local wartosc1=PobierzElementNumerowanyZFrameLubTablicy("nazwa1") or PobierzElementNumerowanyZFrameLubTablicy(1); local wartosc2=PobierzElementNumerowanyZFrameLubTablicy("nazwa2") or PobierzElementNumerowanyZFrameLubTablicy(2); local wartosc3=PobierzElementNumerowanyZFrameLubTablicy("nazwa3") or PobierzElementNumerowanyZFrameLubTablicy(3); end; </syntaxhighlight> Zmienne w przykładzie o kluczach: {{Code|nazwa1}}, {{Code|nazwa2}} i {{Code|nazwa3}}, posiadające pewne swoje wartości, to są zmienne w tablicy {{Code|tablica_prametrow_funkcji}}, podane też jako zmienne, jako pewne argumenty tablicy, który są w tej funkcji zwracanej jako argument (parametr) funkcji, * jeżeli argumenty podano w postaci jednego parametru funkcji w postaci pewnej tablicy z np. elementami nazwanymi, * lub jako wiele argumentów w ramce, w wikikodzie, w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w pewnym szablonie, * a rozpatrując dalej elementy względem ich nazw, np. alternatywnych, to te numery mogą być kolejo do nazw ich odpowiedników nazwanych, które w przykładzie powyżej, mają pierwszeństwo, ale tak nie musi być, te parametry: {{Code|1}}, {{Code|2}} i {{Code|3}}, to jest numer parametru, jeżeli argumenty do funkcji podano w postaci wielu jego parametrów. == {{Code|p.PobierzParametr}} == Ta funkcja zwraca znów inną funkcję, która ma jedyny parametr, mówiący jakiego parametru poszukujemy, co jest wyjaśnione w definicji funkcji z nagłówka, że ona zwraca tą właśnie funkcje. Definicja skrótowa dunkcji: <syntaxhighlight lang="lua"> function p.PobierzParametr(frame,czy_frame_lub_parent,czy_frame) ... return function(nazwa) return __pobierz_parametr_table_args(nazwa); end; end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu. | 2 = {{Code|czy_frame_lub_parent}} i {{Code|czy_frame}} | _2 = Parametry logiczne dodatkowe funkcji. }} === Wartośc zwracanainumer metody === Funkcja zwraca jednocześnie dwie wartości, ta zwrócona z funkcji z nagłówka, prawdziwą wartość, i numer metody w postaci: {{Code|return wartosc, numer_metody}}. === Opis zwracanych elementów przez funkcję zwracaną - różnemetody zwracania, jak je wykorzystać === Ta funkcja zwracana ma w swojej definicji inną jeszcze funkcję z tym samym parametrem, co jego rodzic, i to jest za każdym razem inna funkcja w zależności z jakim typem danych się posługujemy {{Code|frame}} i jakie podaliśmy parametry. Gdy warunkiem, gdy zmienna {{Code|frame}} jest tablicą, czyli te zmienne druga: {{Code|czy_frame_lub_parent}} (jeżeli funkcja jest uruchomiona w ramce w szablonie, jeżeli ma wartość {{Code|true}}, to ona wybiera raz parametr z: {{Code|frame.args[nazwa or 1]}}, a za innym razem z {{Code|pf.args[nazwa or 1]}}, gdzie {{Code|pf{{=}}frame:getParent()}}, tutaj jest zwracana wartość: {{Code|return wartosc,2}}). Czy trzecia: {{Code|czy_frame}} (która mówi, jeżeli funkcję uruchomiono w ramce, ale przy wartości prawdziwej tego pierwszego podanego parametru, czyli {{Code|true}}, wybierana jest zawsze wartość {{Code|frame.args[nazwa or 1}}}, w przeciwnym wypadku uruchamiana jest funkcja {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, tutaj zwracana jest wartość {{Code|return wartosc,1}}). Jeżeli wartością {{Code|frame}} jest wartość nietablicowa, ale niebędącą wartością {{Code|nil}}, wtedy ustawiana jest funkcja, która tylko za pierwszym razem zwraca nienilową wartość {{Code|return wartosc,0}}, a później zwraca wartość {{Code|return nil,0}}. Gdy wartością {{Code|frame}} jest {{Code|nil}}, to funkcja zawsze wraca tą wartość {{Code|return nil,0}}. Powyższy sposób działa również dobrze, gdy zdefiniujemy w parametrach funkcji fałszywą funkcję {{Code|frame.getParent}}. Gdy funkcja nie jest uruchamiana w ramce lub funkcja {{Code|frame.getParent}} nie jest zdefiniowana, to wtedy funkcja wchodzi zawsze w ten jej krok, jakby {{Code|czy_frame_lub_parent}} było {{Code|false}} według tego powyżej, to wtedy brana jest zmienna {{Code|czy_frame}}, i jaką wartość ona przyjmuje. === Nazwy alternatywne parametrów === Funkcję pisze się według sposobu, którą się wywołuje według: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame); local wartosc1=PobierzParametr("nazwa1") or PobierzParametr(1); local wartosc2=PobierzParametr("nazwa2") or PobierzParametr(2); local wartosc3=PobierzParametr("nazwa3") or PobierzParametr(3); </syntaxhighlight> Na wypadek wartości nietabelowej, tą wartość zapisuje się jako pierwszą w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a dla wartości tabelowych, jaka jest kolejność to jest obojętne, byle by to było sensowne. === Wywołania funkcji === Tę funkcję podobnie się wywołuje jak funkcję: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}. Wartością {{Code|frame}} nie musi być tablica ramki tablicy transportu, równie dobrze może być to dowolna tablica lub wartość nietablicowa. Weźmy ramkę, w której uruchamiamy funkcję ramki: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}} </syntaxhighlight> === Przykłady wykorzystania funkcji === ; Przykład pierwszy{{dk}} Ona musi być wywołana z parametrem {{Parametr|wyspecjalizowana|tak}}, jako podpowiedź, że liczą się parametry ramki dziecka, a nie jego rodzica, czyli szablonu. Wtedy funkcję {{Code|Nazwa funkcji}} definiujemy: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame,true); ... end; </syntaxhighlight> Wtedy parametr {{Parametr|wyspecjalizowana|tak}} jest ignorowany, a przy wartości {{Code|false}} drugiego parametru funkcji, czyli wywołania: {{Code|local PobierzParametr{{=}}parametry_modul.PobierzParametr(frame,false);}}, już nie, ale nie zawsze. W takim przypadku według powyższego przykładu raz jest brana wartość, jeżeli istnieje, z {{Code|frame.args}}, a jak ona nie istnieje, to wtedy z: {{Code|pf.args}}. ; Przykład drugi{{dk}} Weźmy inny przypadek: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame,false,true); ... end; </syntaxhighlight> Przy tym też parametr: {{Parametr|wyspecjalizowana|tak}}, jest ignorowany, wtedy jest zawsze wybierana do rozważań tablica: {{Code|frame.args}}. ; Przykład trzeci{{dk}} Znów w innym przypadku, gdzie parametr: {{Parametr|wyspecjalizowana|tak}}, jest zawsze rozważany w naszym wypadku: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame,false,false); ... end; </syntaxhighlight> To to wywołanie, wtedy dokładnie działa jak funkcja: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, a zwrócona funkcja: {{Code|PobierzParametr}} pobiera elementy z tak uzyskanej tablicy {{Code|args}} poprzez nią. === Przypadek nietablicowego charakteru parametrów funkcji === W przypadku, gdy {{Code|frame}} nie jest tablicą, wtedy parametry: {{Code|czy_frame_lub_parent}} i {{Code|czy_frame}}, są w takim przypadku zawsze ignorowane, ale muszą być ustawione na wypadek, gdyby do funkcji {{Code|Nazwa funkcji}} wsadzono tablicę, np. z ramki, tzn. tablicę ramki funkcji tablicy transportu. === Ogólny przypadek, często stosowany === Najprostszym często ogólnym przykładem, który prawie zawsze jest stosowany: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame); ... end; </syntaxhighlight> Wtedy parametr: {{Parametr|wyspecjalizowana|tak}}, jest prawie zawsze nieignorowany, ale nie zawsze. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 47r3vuhaamho3p4kkph0jl34sbe7thp 555736 555735 2026-09-11T19:08:25Z Persino 2851 /* Możliwość tej samej funkcji uruchomioną w ramce lub z podaniem do niej pewnego zestawu parametrów w postaci tablicy */ 555736 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} Są tutaj przedstawione funkcje parametrów. == {{Code|p.PobierzFrameEwentualnieParent}} == Argument tej funkcji {{Code|frame}} koniecznie musi być tablicą, w przypadku przeciwnym wywoła to błąd języka {{lpg|Lua}}, że z wartości nietabelowej chcemy wyliczyć jego nieistniejący element {{Code|getParent}}, który ma prawo nie być. Funkcja pobiera parametry ramki szablonu rodzica, a nie dziecka, a jeżeli w dziecku w ramce w wikikodzie w szablonie podamy specjalny parametr {{Parametr|wyspecjalizowana|tak}}, to wtedy ta funkcja ściąga parametry ramki. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobierzFrameEwentualnieParent(frame)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu. }} === Sterowanie funkcją === Tą funkcją można sterować ze strony ramki tym właśnie specjalnym parametrem o wartości niepustej, którą jest {{Parametr|wyspecjalizowana|tak}}. ==== Przykłady wykorzystania z parametrem sterującym ==== W ramce podajemy argumenty wraz z tym specjalnym parametrem: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}} </syntaxhighlight> To wtedy w kodzie w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} w module o nazwie {{Code|Nazwa modułu}}, piszemy: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzFrameEwentualnieParent(frame).args; .... end; </syntaxhighlight> To wtedy w kodzie ściągane parametry ramki dziecka. === Pobieranie oryginalnej tablicy === Tę funkcję można równie dobrze wykorzystać do zwykłych tabel: <syntaxhighlight lang="lua"> local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzFrameEwentualnieParent(tabela); </syntaxhighlight> === Możliwość tej samej funkcji uruchomioną w ramce lub z podaniem do niej pewnego zestawu parametrów w postaci tablicy === A w tym przypadku ta funkcja nic nie robi, tylko zmienna {{Code|args}} referencyjnie wskazuje na tablicę {{Code|tablica}}. Ale można ją wykorzystać, gdy by funkcja {{Code|Nazwa funkcji}}, była uruchomiona ze zwykłą tablicą, ale z możliwością, że to może być tablicą ramki {{Code|frame}} tablicy transportu, np.: <syntaxhighlight lang="lua"> --- Pierwsza możliwość; local wartosc1=p["Nazwa funkcji"](frame); -- Druga możliwość local wartosc2=p["Nazwa funkcji"]{["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; </syntaxhighlight> === Niedogodności stosowania z funkcji === Dla obu jest taka niedogodność, że jedynie jest taka nieprawidłowość, że w przypadku parametru tablicy ramki tablicy transportu należy podawać uzyskany element {{Code|args}}, a w przypadku zwykłej tablicy już nie, tą niedokodność rozwiązuje funkcja: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}. == {{Code|p.PobierzArgsParametry}} == Argument tej funkcji {{Code|frame}} koniecznie nie musi być tablicą, bo wtedy nie wywoła to błędu języka {{lpg|Lua}}, że z wartości nietabelowej chcemy wyliczyć jego niepusty element {{Code|getParent}}, bo przedtem sprawdzana jest w tej funkcji, czy jest to tablica. W definicji tej funkcji zmienna uzyskana z funkcji: {{Code|{{sr|#p.PobierzFrameEwentualnieParent(frame)|p=Parametry}}}}, a jeśli jej składowa {{Code|args}} jest tablicą, to jest właśnie ona zwracana, a jeśli istnieje, ale nie jest tablicą, lub ona nie istnieje, to wtedy brana jest właśnie wartość tablicowa {{Code|frame}}, jeśli jest ona taka, a gdy nie, to wtedy z tej funkcji tutaj nie korzystamy. Funkcja pobiera parametry ramki szablonu rodzica, a nie dziecka, a jeżeli w dziecku w ramce w wikikodzie w szablonie podamy specjalny parametr {{Parametr|wyspecjalizowana|tak}}, to wtedy ta funkcja ściąga parametry ramki. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobierzArgsParametry(frame, czy_nie_tablica_jako_tablica)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica transportu ramki. | 2 = {{Code|czy_nie_tablica_jako_tablica}} | _2 = Czy wartości nietablicowe umieszczać w jednoelemenowej tabeli. }} Funkcja wykorzystuje wspomnianą powyżej funkcję do swojego działania, ona jest wtedy aktywowana, gdy zmienna {{Code|frame}} jest tablicą, i jest sprawdzane, czy ona posiada nazwany element o kluczu {{Code|args}}, i czy jest on tablicowy. Jeżeli wartością zmiennej {{Code|frame}} nie jest tablica, ale nie przybiera wartości {{Code|nil}}, to ona jest umieszczana w tablicy, jeżeli zmiennej {{Code|czy_nie_tablica_jako_tablica}} przydzielimy wartość {{Code|true}}, w przeciwnym wypadku zwracana jest ona w postaci niezmienionej, a jeżeli wartość tej zmiennej nie istnieje, to zwracana jest zwykła tablica pusta. Tą funkcją można sterować ze strony ramki tym właśnie specjalnym parametrem o wartości niepustej. W ramce podajemy argumenty wraz z tym specjalnym parametrem: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}} </syntaxhighlight> To wtedy w kodzie w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} w module o nazwie {{Code|Nazwa modułu}}, piszemy: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(frame); .... end; </syntaxhighlight> To wtedy w kodzie ściągane parametry ramki dziecka. Tę funkcję można równie dobrze wykorzystać do zwykłych tabel: <syntaxhighlight lang="lua"> local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(tabela); </syntaxhighlight> A w tym przypadku ta funkcja nic nie robi, tylko zmienna {{Code|args}} referencyjnie wskazuje na tablicę {{Code|tablica}}. Ale można ją wykorzystać, gdyby funkcja {{Code|Nazwa funkcji}}, była uruchomiona ze zwykłą tablicą, ale z możliwością, że to może być tablicą ramki {{Code|frame}} tablicy transportu, np.: <syntaxhighlight lang="lua"> --- Pierwsza możliwość; local wartosc1=p["Nazwa funkcji"](frame); -- Druga możliwość local wartosc2=p["Nazwa funkcji"]{["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; </syntaxhighlight> Dla obu tych przypadków nie ma żadnej niedogodności, jak to występowała w {{Code|{{sr|#p.PobierzFrameEwentualnieParent(frame)|p=Parametry}}}}. Jeśliby do funkcji tablicy transportu dać wartość równą nie tablicy, to wtedy równoważnie możemy napisać: <syntaxhighlight lang="lua"> local wartosc="wartość"; local wynik=p["Nazwa funkcji"](wartosc); </syntaxhighlight> to wtedy definicję tej funkcji piszemy: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(frame,true); local wartosc=args[1]; end; </syntaxhighlight> lub równoważnie możemy zapisać: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); local wartosc=parametry_modul.PobierzArgsParametry(frame); end; </syntaxhighlight> A jeżeli nie wsadziliśmy żadnej wartości do funkcji ramki tablicy transportu lub tą wartością jest {{Code|nil}}, wtedy: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"](); </syntaxhighlight> wtedy definicja tej funkcji wygląda: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); -- Zmienna: args, wskazuje na wartość, którą jest tablicą pustą, tzn. w tej tablicy nie ma wcale elementów; local args=parametry_modul.PobierzArgsParametry(frame); end; </syntaxhighlight> Widzimy, że wtedy zmienna {{Code|args}} jest normalną pustą tablicą, i nie musimy wtedy wcale pisać poniżej, bo wtedy wychodzi w tym przypadku na to samo: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(frame,true); </syntaxhighlight> Argument drugi w {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, który w naszym przypadku musi mieć wartość {{Code|true}}, a wtedy jest jedynie sens, gdy {{Code|frame}} nie jest tablicą, i gdy chcemy tą wartość umieścić w tablicy, a nie powtórzyć wartość, tzn. chcemy napisać: {{Code|{{(}}frame,{{)}}}}, w przeciwnym wypadku musilibyśmy napisać coś w rodzaju, zamiast tak spreparowanej tablicy: {{Code|frame}}, czyli: <syntaxhighlight lang="lua"> -- Pierwszy przypadek, gdy frame jest wartością nietablicową; local parametry_modul=require("Module:Parametry"); ... -- Zwracana wartość: args, to nic innego niż: {frame,}; local args=parametry_modul.PobierzArgsParametry(frame,true); ... -- Zwracana wartość: args, to nic innego niż: frame, a nie {frame,}, jak poprzednio; local args=parametry_modul.PobierzArgsParametry(frame); </syntaxhighlight> == {{Code|p.PobierzParametryRamki}} == Funkcja służy do ustawienia pewnych domyślnych dwóch pewnych funkcji służących do pobieranie danych z tabelki z pierwszej tej funkcji: * Jeżeli ona posiada klucz o wartości {{Code|args}}, ** to zwracana jest ta właśnie tablica jako argument pierwszej tej funkcji, jeżeli jest w ogóle tablicą, ** w przeciwnym wypadku zwracana jest ta oryginalna tablica, też jako argument tej funkcji, * w przeciwnym dalszym wypadku zwracana jest zwracana wartość ta, jako argument tej drugiej funkcji, która zwraca prawdziwą wartość z argumentu tylko za pierwszym razem, z tej funkcji, za następnym i dalszym razem {{Code|nil}}. Z tak utworzonej ogólnie większej funkcji wykorzystywana jest w budowie omawianej funkcji, która jest zwracana przez omawianą funkcję, która względem jego budowy wywołuje raz pierwszą albo drugą poprzednią wspomnianą funkcję zależną od rodzaju zmiennej {{Code|frame}}, która może być tabelką, ale nie musi być. Ta funkcja zwracana przez funkcję w nagłówku przyjmuje argument, która jest kluczem do tych wspomnianych, może że, * tabel (dokładnie, która ta może tabelka to zależy od formatu tej naszej rozważanej zmiennej), * a jeżeli to nie tabelka, co jest zwracane, to już zostało powiedziane. Definicja skrótowa tej funkcji jest: <syntaxhighlight lang="lua"> function p.PobierzParametryRamki(frame)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu. }} Weźmy ramkę sformułowaną w wikikodzie jako dziecko w szablonie rodzicu: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5}} </syntaxhighlight> To wtedy tablica ramki tablicy transportu posiada właśnie {{Code|frame}}, która jest tablicą, i na pewno posiada tablicę o nazwie {{Code|args}}, to wtedy tę funkcję wywołaną w ramce, która wywołuje funkcję w nagłówku, formułujemy: <syntaxhighlight lang="lua"> local p={}; local p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametryRamki=parametry_modul.PobierzParametryRamki(frame); ... end; </syntaxhighlight> Równie dobrze funkcję z ramki można wywołać w sposób, co wtedy ta funkcja też zostanie wywołana pozytywnie: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"]{args={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}}; </syntaxhighlight> W tej funkcji nie trzeba definiować funkcji fałszywej {{Code|getParent}}, w postaci: {{Code|getParent{{=}}function()end}}. Widzimi, że ta tablica posiada nazwę zmiennej tablicowej o nazwie {{Code|args}}, ale ona nie jest tablicą ramki tablicy transportu, ale tą tablicę możemy bezposrednio wsadzić w tą główną tablicę w samym argumencie funkcji. Równie dobrze możemy wywołać tę funkcję zdefiniowaną naszą w jakimś module w sposób: <syntaxhighlight lang="lua"> local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; local wynik=p["Nazwa funkcji"]{tabela); </syntaxhighlight> też ta funkcja prawidłowo się wywoła. W tym przypadku, jak i w przypadkach powyżej, wyniki uzyskuje się w następującym wywołaniach: <syntaxhighlight lang="lua"> --- Zmienna: wartosc1, przyjmuje wartość: "wartość1"; local wartosc1=PobierzParametryRamki("nazwa1"); --- Zmienna: wartosc2, przyjmuje wartość: "wartość2"; local wartosc2=PobierzParametryRamki("nazwa2"); --- Zmienna: wartosc3, przyjmuje wartość: "wartość3"; local wartosc3=PobierzParametryRamki(1); </syntaxhighlight> W innym przypadku wywołań funkcji ramki jest wsadzenie do niej zwykłego nietablicowego elementu, może być też to wartość: {{Code|nil}}. A to wywołanie jest: <syntaxhighlight lang="lua"> local wartosc="wartość"; --Zmienna: wartosc, nie jest w tym przypadku tablicą; local wynik=p["Nazwa funkcji"](wartosc); </syntaxhighlight> Wtedy w tej ramce w celu uzyskania jakikolwiek wartości jest przykład wywołania tej funkcji zwracanej przez funkcję w ramce z argumentem pustym. <syntaxhighlight lang="lua"> -- Zmienna: wartość1, przyjmuje wartość: "wartość"; Jeżeli ona, przyjmuje wartość: nil, to wywołanie rzuci: nil, i za każdym następny razem; local wartosc1=PobierzParametryRamki(); -- Zmienna: wartość2, przyjmuje wartość: nil; local wartosc2=PobierzParametryRamki(); </syntaxhighlight> W wywołaniach powinno dbać się o właściwą kolejność wywołań, bo argumentem funkcji z tablicy transportu może być zwykła tablicowa wartość. Najpierw uzyskujemy wartości nietablicowe, a później tablicowe, na wypadek niewiadomej {{Code|frame}} jakiego typu ma być wartość. Też ta zmienna może istnieć pod kilkoma możliwymi kluczami, lub tą zmienną może być jedyny argument funkcji, która jest nietablicową wartością, wtedy ją się wywołuje jako dla przypadku, gdy parametr jest nietablicowy lub jest pod kluczem {{Code|tekst}}: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local tekst=parametry_modul.PobierzParametryRamki(frame)("tekst"); </syntaxhighlight> Lub chcemy tę funkcję wywołać bezparametrowo, gdy chcemy, by {{Code|frame}} nie była tablicą: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local tekst=parametry_modul.PobierzParametryRamki(frame)(); </syntaxhighlight> Wtedy ta zmienna w przedostatnim przykładzie jest pod wartością {{Code|tekst}}, gdy wartość {{Code|frame}} jest tablicą, lub może być jedyną wartością, którą jest {{Code|frame}} jako zmienna nietablicowa, wtedy ta zmienna też jest pod {{Code|tekst}}, ta funkcja uzyskana z: {{Code|{{sr|#p.PobierzParametryRamki(frame)|p=Parametry}}}}, wtedy może być wywołana tylko raz z nienilową wartością zwracaną, następnym razem zwraca wartość {{Code|nil}}, wtedy to dotyczy przedostatniego i ostatniego przykładu. Jeżeli {{Code|frame}} jest nietablicowa, to wtedy wartość {{Code|tekst}} jest taka sama, co {{Code|frame}}. A jeżeli jest tablicą, to ta wartością jest {{Code|frame.args["tekst"]}}, lub gdy {{Code|args}} nie istnieje, lub istnieje, ale jest nietablicowa, to wtedy ta wartość jest {{Code|frame["tekst"]}}. A gdy zmienne istnieją pod wieloma kluczami, lub gdy funkcję wywołano ze zmienną nietablicową, wtedy ogólnie możemy dla przykładu powiedzieć: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local PobierzParametryRamki=parametry_modul.PobierzParametryRamki(frame); local wartosc1=PobierzParametryRamki("nazwa1") or PobierzParametryRamki(1); local wartosc2=PobierzParametryRamki("nazwa2") or PobierzParametryRamki(2); local wartosc3=PobierzParametryRamki("nazwa3") or PobierzParametryRamki(3); </syntaxhighlight> Wtedy ta zmienna jest pod kluczem, np.: {{Code|nazwa1}} lub {{Code|1}}, tablicy ramki {{Code|frame}} tablicy transportu, następne wywołania dla następnych kluczy też zrzucą pewne wartości, lub jest ona zwykłą nietablicową wartością mogącą być równą nawet {{Code|nil}}. Następne wywołania uzyskanej tak funkcji w przypadku, gdy {{Code|frame}} jest nietablicowy, rzucać będzie z samej definicji funkcji wartości {{Code|nil}}, czyli {{Code|wartosc2{{=}}wartosc3{{=}}nil}}, ale za to wartość {{Code|wartosc1}} nie musi być, ale może, wartością {{Code|nil}}, jest tą wartością, gdy {{Code|frame{{=}}nil}}, w przeciwnym wypadku za pierwszym razem tej wartości nietablicowej uzyskamy wartość nie {{Code|nil}}, a za drugim i dalszym zawsze wartość {{Code|nil}}. == {{Code|p.PobierzElementNumerowanyZFrameLubTablicy}} == Definicja skrótowa funkcji jest z parametrem charakteryzującym pewien zestaw zmiennych {{Code|frame}}, * które nie musi być tablicą ramki tablicy transportu, tylko moze być innym parametrem, który jest tablicą parametrów podanych do funkcji, * nawet gdy parametrem podanym do funkcji, w której wykorzystujemy tą funkcję, jest jedyna zmienna będąca tablicą ramki. Ale z drugiej strony, tak nie musi być, może być to rozbudowany zestaw zmiennych, np. nazwanych i nienazwanych, którego wszystkie sposoby podawania łączymy jednym sposobem podawania. Mimo że parametry funkcji są parametrami nienazwanymi, mogą być one ponumerowane, ale zmienna w tablicy może przyjmować wartość tą samą na różne sposoby, raz w sposób nazwany, a za innym sposobem jako nienazwany. Ogólnie ostateczne parametry łączymy w dane parametry za pomocą jednego sposobu, tzn. za pomocą tej funkcji, i dla tak uzyskanej tablicy tworzymy funkcję zwracaną przez funkcję w nagłówku, która przyjmuje parametr, który jest kluczem tej uzyskanej tablicy. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobierzElementNumerowanyZFrameLubTablicy(frame)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu. }} Weźmy najprostszy sposób realizacji tej funkcji, w realizacji: {{Code|1-1, 2-2, 3-3}}, czyli ten opis jest zaraz poniżej. === Sposoby wywołania funkcji === ; Pierwszy sposób{{dk}} Weźmy funkcję, którą można wywoływać z wieloma parametrami, jak i w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, którą przykładowo piszemy jego wywołanie wewnątrz innej funkcji na pięć sposobów, czyli teraz pierwszy sposób z tylko z parametrem, więc tablicą ramki tablicy transportu wywodzącą się z ramki uruchomioną w wikikodzie w jakimś szablonie rodzicu: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"](frame); </syntaxhighlight> ; Drugi sposób{{dk}} A teraz drugi sposób, pisząc, bezpośrednio inaczej, formułując wywołanie tej funkcji, używając zmiennych tablicowych tablicy ramki, ale to nie jest tak naprawdę tablica ramka tablicy transportu, tylko parametr podany bezpośrednio do funkcji, tak jak się to robi w języku {{lpg|Lua}}, nie jak w przykładzie powyżej, więc: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"]{args={"wartość1","wartość2","wartość3",},}; </syntaxhighlight> ; Trzeci sposób{{dk}} Lub równoważnie, pisząc, nie używając zmiennej {{Code|args}}: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"]{"wartość1","wartość2","wartość3",}; </syntaxhighlight> ; Czwarty sposób{{dk}} Albo te parametry wsadzając do funkcji: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"]("wartość1","wartość2","wartość3"); </syntaxhighlight> ; Piąty spssób{{dk}} Można też wywołać to wszystko w ramce, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w wikikpdzie, wtedy wsadzając parametry do ramki: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|wartość1|wartość2|wartość3}} </syntaxhighlight> === Omówienie pobierania takich parmetrów === A jak połączyć wszystkie te pięć sposobów, posługiwać się tymi sposobami wewnątrz funkcji {{Code|Nazwa funkcji}} w sposób jednolity, jedynie wtedy należy skorzystać z funkcji z definiowaną w jakimś module w sposób: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(...) local tablica_prametrow_funkcji={...}; local parametry_modul=require("Module:Parametry"); local PobierzElementNumerowanyZFrameLubTablicy=parametry_modul.PobierzElementNumerowanyZFrameLubTablicy(tablica_prametrow_funkcji); ... end; </syntaxhighlight> Wtedy za pomocą zmiennej {{Code|PobierzElementNumerowanyZFrameLubTablicy}} dostaliśmy się do funkcji, która przyjmuje jedyny parametr, aby dostać się do elementów tablicy uzyskanej w wewnątrz tej funkcji, zdefiniowaną w tablicy {{Code|tablica_prametrow_funkcji}}, która jest nic innym jak zestawem parametrów w funkcji: {{Code|Nazwa funkcji}}. * W pierwszym i drugim sposobem zmienną tą nazwijmy to jako {{Code|args}}, jest zmienną z podtablicy innego {{Code|args}} przekazanych jako parametr tablicy do funkcji, * w trzecim sposobie tą zmienną jest cała tablica, * a czwartym jest zestaw parametrów ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. A czym się różnią się te sposoby, a więc te sposoby można powiązać jedną tylko funkcją powiedzianą w nagłówku według przykładu podaną zaraz powyżej, wtedy możemy dostawać się do tych samych zmiennych o takich samych nazwach i wartościach, ale w różnych reprezentacjach na różne sposoby, wtedy można powiedzieć, że: <syntaxhighlight lang="lua"> args[1]="wartość1"; args[2]="wartość2"; args[3]="wartość3"; </syntaxhighlight> Czyli w wyniku działania funkcji w nagłówku, otrzymamy funkcję zwracającą te wartości, która operuje na tej tablicy, której wynikiem jest zestaw zmiennych ponumerowanych, ogólnie nienazwanych, której wartości odpowiadają te podane w ramce ostatniej powyżej. Na podstawie tego wiemy, jak działa funkcja ta z nagłówka. === Nazwy alternatywne danych parametrów funkcji ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}} === Pisząc w inny sposób, można też wskazywać: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(...) local tablica_prametrow_funkcji={...}; local parametry_modul=require("Module:Parametry"); local PobierzElementNumerowanyZFrameLubTablicy=parametry_modul.PobierzElementNumerowanyZFrameLubTablicy(tablica_prametrow_funkcji); local wartosc1=PobierzElementNumerowanyZFrameLubTablicy("nazwa1") or PobierzElementNumerowanyZFrameLubTablicy(1); local wartosc2=PobierzElementNumerowanyZFrameLubTablicy("nazwa2") or PobierzElementNumerowanyZFrameLubTablicy(2); local wartosc3=PobierzElementNumerowanyZFrameLubTablicy("nazwa3") or PobierzElementNumerowanyZFrameLubTablicy(3); end; </syntaxhighlight> Zmienne w przykładzie o kluczach: {{Code|nazwa1}}, {{Code|nazwa2}} i {{Code|nazwa3}}, posiadające pewne swoje wartości, to są zmienne w tablicy {{Code|tablica_prametrow_funkcji}}, podane też jako zmienne, jako pewne argumenty tablicy, który są w tej funkcji zwracanej jako argument (parametr) funkcji, * jeżeli argumenty podano w postaci jednego parametru funkcji w postaci pewnej tablicy z np. elementami nazwanymi, * lub jako wiele argumentów w ramce, w wikikodzie, w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w pewnym szablonie, * a rozpatrując dalej elementy względem ich nazw, np. alternatywnych, to te numery mogą być kolejo do nazw ich odpowiedników nazwanych, które w przykładzie powyżej, mają pierwszeństwo, ale tak nie musi być, te parametry: {{Code|1}}, {{Code|2}} i {{Code|3}}, to jest numer parametru, jeżeli argumenty do funkcji podano w postaci wielu jego parametrów. == {{Code|p.PobierzParametr}} == Ta funkcja zwraca znów inną funkcję, która ma jedyny parametr, mówiący jakiego parametru poszukujemy, co jest wyjaśnione w definicji funkcji z nagłówka, że ona zwraca tą właśnie funkcje. Definicja skrótowa dunkcji: <syntaxhighlight lang="lua"> function p.PobierzParametr(frame,czy_frame_lub_parent,czy_frame) ... return function(nazwa) return __pobierz_parametr_table_args(nazwa); end; end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu. | 2 = {{Code|czy_frame_lub_parent}} i {{Code|czy_frame}} | _2 = Parametry logiczne dodatkowe funkcji. }} === Wartośc zwracanainumer metody === Funkcja zwraca jednocześnie dwie wartości, ta zwrócona z funkcji z nagłówka, prawdziwą wartość, i numer metody w postaci: {{Code|return wartosc, numer_metody}}. === Opis zwracanych elementów przez funkcję zwracaną - różnemetody zwracania, jak je wykorzystać === Ta funkcja zwracana ma w swojej definicji inną jeszcze funkcję z tym samym parametrem, co jego rodzic, i to jest za każdym razem inna funkcja w zależności z jakim typem danych się posługujemy {{Code|frame}} i jakie podaliśmy parametry. Gdy warunkiem, gdy zmienna {{Code|frame}} jest tablicą, czyli te zmienne druga: {{Code|czy_frame_lub_parent}} (jeżeli funkcja jest uruchomiona w ramce w szablonie, jeżeli ma wartość {{Code|true}}, to ona wybiera raz parametr z: {{Code|frame.args[nazwa or 1]}}, a za innym razem z {{Code|pf.args[nazwa or 1]}}, gdzie {{Code|pf{{=}}frame:getParent()}}, tutaj jest zwracana wartość: {{Code|return wartosc,2}}). Czy trzecia: {{Code|czy_frame}} (która mówi, jeżeli funkcję uruchomiono w ramce, ale przy wartości prawdziwej tego pierwszego podanego parametru, czyli {{Code|true}}, wybierana jest zawsze wartość {{Code|frame.args[nazwa or 1}}}, w przeciwnym wypadku uruchamiana jest funkcja {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, tutaj zwracana jest wartość {{Code|return wartosc,1}}). Jeżeli wartością {{Code|frame}} jest wartość nietablicowa, ale niebędącą wartością {{Code|nil}}, wtedy ustawiana jest funkcja, która tylko za pierwszym razem zwraca nienilową wartość {{Code|return wartosc,0}}, a później zwraca wartość {{Code|return nil,0}}. Gdy wartością {{Code|frame}} jest {{Code|nil}}, to funkcja zawsze wraca tą wartość {{Code|return nil,0}}. Powyższy sposób działa również dobrze, gdy zdefiniujemy w parametrach funkcji fałszywą funkcję {{Code|frame.getParent}}. Gdy funkcja nie jest uruchamiana w ramce lub funkcja {{Code|frame.getParent}} nie jest zdefiniowana, to wtedy funkcja wchodzi zawsze w ten jej krok, jakby {{Code|czy_frame_lub_parent}} było {{Code|false}} według tego powyżej, to wtedy brana jest zmienna {{Code|czy_frame}}, i jaką wartość ona przyjmuje. === Nazwy alternatywne parametrów === Funkcję pisze się według sposobu, którą się wywołuje według: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame); local wartosc1=PobierzParametr("nazwa1") or PobierzParametr(1); local wartosc2=PobierzParametr("nazwa2") or PobierzParametr(2); local wartosc3=PobierzParametr("nazwa3") or PobierzParametr(3); </syntaxhighlight> Na wypadek wartości nietabelowej, tą wartość zapisuje się jako pierwszą w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a dla wartości tabelowych, jaka jest kolejność to jest obojętne, byle by to było sensowne. === Wywołania funkcji === Tę funkcję podobnie się wywołuje jak funkcję: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}. Wartością {{Code|frame}} nie musi być tablica ramki tablicy transportu, równie dobrze może być to dowolna tablica lub wartość nietablicowa. Weźmy ramkę, w której uruchamiamy funkcję ramki: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}} </syntaxhighlight> === Przykłady wykorzystania funkcji === ; Przykład pierwszy{{dk}} Ona musi być wywołana z parametrem {{Parametr|wyspecjalizowana|tak}}, jako podpowiedź, że liczą się parametry ramki dziecka, a nie jego rodzica, czyli szablonu. Wtedy funkcję {{Code|Nazwa funkcji}} definiujemy: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame,true); ... end; </syntaxhighlight> Wtedy parametr {{Parametr|wyspecjalizowana|tak}} jest ignorowany, a przy wartości {{Code|false}} drugiego parametru funkcji, czyli wywołania: {{Code|local PobierzParametr{{=}}parametry_modul.PobierzParametr(frame,false);}}, już nie, ale nie zawsze. W takim przypadku według powyższego przykładu raz jest brana wartość, jeżeli istnieje, z {{Code|frame.args}}, a jak ona nie istnieje, to wtedy z: {{Code|pf.args}}. ; Przykład drugi{{dk}} Weźmy inny przypadek: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame,false,true); ... end; </syntaxhighlight> Przy tym też parametr: {{Parametr|wyspecjalizowana|tak}}, jest ignorowany, wtedy jest zawsze wybierana do rozważań tablica: {{Code|frame.args}}. ; Przykład trzeci{{dk}} Znów w innym przypadku, gdzie parametr: {{Parametr|wyspecjalizowana|tak}}, jest zawsze rozważany w naszym wypadku: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame,false,false); ... end; </syntaxhighlight> To to wywołanie, wtedy dokładnie działa jak funkcja: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, a zwrócona funkcja: {{Code|PobierzParametr}} pobiera elementy z tak uzyskanej tablicy {{Code|args}} poprzez nią. === Przypadek nietablicowego charakteru parametrów funkcji === W przypadku, gdy {{Code|frame}} nie jest tablicą, wtedy parametry: {{Code|czy_frame_lub_parent}} i {{Code|czy_frame}}, są w takim przypadku zawsze ignorowane, ale muszą być ustawione na wypadek, gdyby do funkcji {{Code|Nazwa funkcji}} wsadzono tablicę, np. z ramki, tzn. tablicę ramki funkcji tablicy transportu. === Ogólny przypadek, często stosowany === Najprostszym często ogólnym przykładem, który prawie zawsze jest stosowany: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame); ... end; </syntaxhighlight> Wtedy parametr: {{Parametr|wyspecjalizowana|tak}}, jest prawie zawsze nieignorowany, ale nie zawsze. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 1eg1cr6zkzi65ososj7xb0s62nj3k7q 555737 555736 2026-09-11T19:28:13Z Persino 2851 /* {{Code|p.PobierzParametryRamki}} */ 555737 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} Są tutaj przedstawione funkcje parametrów. == {{Code|p.PobierzFrameEwentualnieParent}} == Argument tej funkcji {{Code|frame}} koniecznie musi być tablicą, w przypadku przeciwnym wywoła to błąd języka {{lpg|Lua}}, że z wartości nietabelowej chcemy wyliczyć jego nieistniejący element {{Code|getParent}}, który ma prawo nie być. Funkcja pobiera parametry ramki szablonu rodzica, a nie dziecka, a jeżeli w dziecku w ramce w wikikodzie w szablonie podamy specjalny parametr {{Parametr|wyspecjalizowana|tak}}, to wtedy ta funkcja ściąga parametry ramki. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobierzFrameEwentualnieParent(frame)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu. }} === Sterowanie funkcją === Tą funkcją można sterować ze strony ramki tym właśnie specjalnym parametrem o wartości niepustej, którą jest {{Parametr|wyspecjalizowana|tak}}. ==== Przykłady wykorzystania z parametrem sterującym ==== W ramce podajemy argumenty wraz z tym specjalnym parametrem: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}} </syntaxhighlight> To wtedy w kodzie w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} w module o nazwie {{Code|Nazwa modułu}}, piszemy: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzFrameEwentualnieParent(frame).args; .... end; </syntaxhighlight> To wtedy w kodzie ściągane parametry ramki dziecka. === Pobieranie oryginalnej tablicy === Tę funkcję można równie dobrze wykorzystać do zwykłych tabel: <syntaxhighlight lang="lua"> local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzFrameEwentualnieParent(tabela); </syntaxhighlight> === Możliwość tej samej funkcji uruchomioną w ramce lub z podaniem do niej pewnego zestawu parametrów w postaci tablicy === A w tym przypadku ta funkcja nic nie robi, tylko zmienna {{Code|args}} referencyjnie wskazuje na tablicę {{Code|tablica}}. Ale można ją wykorzystać, gdy by funkcja {{Code|Nazwa funkcji}}, była uruchomiona ze zwykłą tablicą, ale z możliwością, że to może być tablicą ramki {{Code|frame}} tablicy transportu, np.: <syntaxhighlight lang="lua"> --- Pierwsza możliwość; local wartosc1=p["Nazwa funkcji"](frame); -- Druga możliwość local wartosc2=p["Nazwa funkcji"]{["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; </syntaxhighlight> === Niedogodności stosowania z funkcji === Dla obu jest taka niedogodność, że jedynie jest taka nieprawidłowość, że w przypadku parametru tablicy ramki tablicy transportu należy podawać uzyskany element {{Code|args}}, a w przypadku zwykłej tablicy już nie, tą niedokodność rozwiązuje funkcja: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}. == {{Code|p.PobierzArgsParametry}} == Argument tej funkcji {{Code|frame}} koniecznie nie musi być tablicą, bo wtedy nie wywoła to błędu języka {{lpg|Lua}}, że z wartości nietabelowej chcemy wyliczyć jego niepusty element {{Code|getParent}}, bo przedtem sprawdzana jest w tej funkcji, czy jest to tablica. W definicji tej funkcji zmienna uzyskana z funkcji: {{Code|{{sr|#p.PobierzFrameEwentualnieParent(frame)|p=Parametry}}}}, a jeśli jej składowa {{Code|args}} jest tablicą, to jest właśnie ona zwracana, a jeśli istnieje, ale nie jest tablicą, lub ona nie istnieje, to wtedy brana jest właśnie wartość tablicowa {{Code|frame}}, jeśli jest ona taka, a gdy nie, to wtedy z tej funkcji tutaj nie korzystamy. Funkcja pobiera parametry ramki szablonu rodzica, a nie dziecka, a jeżeli w dziecku w ramce w wikikodzie w szablonie podamy specjalny parametr {{Parametr|wyspecjalizowana|tak}}, to wtedy ta funkcja ściąga parametry ramki. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobierzArgsParametry(frame, czy_nie_tablica_jako_tablica)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica transportu ramki. | 2 = {{Code|czy_nie_tablica_jako_tablica}} | _2 = Czy wartości nietablicowe umieszczać w jednoelemenowej tabeli. }} Funkcja wykorzystuje wspomnianą powyżej funkcję do swojego działania, ona jest wtedy aktywowana, gdy zmienna {{Code|frame}} jest tablicą, i jest sprawdzane, czy ona posiada nazwany element o kluczu {{Code|args}}, i czy jest on tablicowy. Jeżeli wartością zmiennej {{Code|frame}} nie jest tablica, ale nie przybiera wartości {{Code|nil}}, to ona jest umieszczana w tablicy, jeżeli zmiennej {{Code|czy_nie_tablica_jako_tablica}} przydzielimy wartość {{Code|true}}, w przeciwnym wypadku zwracana jest ona w postaci niezmienionej, a jeżeli wartość tej zmiennej nie istnieje, to zwracana jest zwykła tablica pusta. Tą funkcją można sterować ze strony ramki tym właśnie specjalnym parametrem o wartości niepustej. W ramce podajemy argumenty wraz z tym specjalnym parametrem: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}} </syntaxhighlight> To wtedy w kodzie w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} w module o nazwie {{Code|Nazwa modułu}}, piszemy: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(frame); .... end; </syntaxhighlight> To wtedy w kodzie ściągane parametry ramki dziecka. Tę funkcję można równie dobrze wykorzystać do zwykłych tabel: <syntaxhighlight lang="lua"> local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(tabela); </syntaxhighlight> A w tym przypadku ta funkcja nic nie robi, tylko zmienna {{Code|args}} referencyjnie wskazuje na tablicę {{Code|tablica}}. Ale można ją wykorzystać, gdyby funkcja {{Code|Nazwa funkcji}}, była uruchomiona ze zwykłą tablicą, ale z możliwością, że to może być tablicą ramki {{Code|frame}} tablicy transportu, np.: <syntaxhighlight lang="lua"> --- Pierwsza możliwość; local wartosc1=p["Nazwa funkcji"](frame); -- Druga możliwość local wartosc2=p["Nazwa funkcji"]{["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; </syntaxhighlight> Dla obu tych przypadków nie ma żadnej niedogodności, jak to występowała w {{Code|{{sr|#p.PobierzFrameEwentualnieParent(frame)|p=Parametry}}}}. Jeśliby do funkcji tablicy transportu dać wartość równą nie tablicy, to wtedy równoważnie możemy napisać: <syntaxhighlight lang="lua"> local wartosc="wartość"; local wynik=p["Nazwa funkcji"](wartosc); </syntaxhighlight> to wtedy definicję tej funkcji piszemy: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(frame,true); local wartosc=args[1]; end; </syntaxhighlight> lub równoważnie możemy zapisać: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); local wartosc=parametry_modul.PobierzArgsParametry(frame); end; </syntaxhighlight> A jeżeli nie wsadziliśmy żadnej wartości do funkcji ramki tablicy transportu lub tą wartością jest {{Code|nil}}, wtedy: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"](); </syntaxhighlight> wtedy definicja tej funkcji wygląda: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); -- Zmienna: args, wskazuje na wartość, którą jest tablicą pustą, tzn. w tej tablicy nie ma wcale elementów; local args=parametry_modul.PobierzArgsParametry(frame); end; </syntaxhighlight> Widzimy, że wtedy zmienna {{Code|args}} jest normalną pustą tablicą, i nie musimy wtedy wcale pisać poniżej, bo wtedy wychodzi w tym przypadku na to samo: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(frame,true); </syntaxhighlight> Argument drugi w {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, który w naszym przypadku musi mieć wartość {{Code|true}}, a wtedy jest jedynie sens, gdy {{Code|frame}} nie jest tablicą, i gdy chcemy tą wartość umieścić w tablicy, a nie powtórzyć wartość, tzn. chcemy napisać: {{Code|{{(}}frame,{{)}}}}, w przeciwnym wypadku musilibyśmy napisać coś w rodzaju, zamiast tak spreparowanej tablicy: {{Code|frame}}, czyli: <syntaxhighlight lang="lua"> -- Pierwszy przypadek, gdy frame jest wartością nietablicową; local parametry_modul=require("Module:Parametry"); ... -- Zwracana wartość: args, to nic innego niż: {frame,}; local args=parametry_modul.PobierzArgsParametry(frame,true); ... -- Zwracana wartość: args, to nic innego niż: frame, a nie {frame,}, jak poprzednio; local args=parametry_modul.PobierzArgsParametry(frame); </syntaxhighlight> == {{Code|p.PobierzParametryRamki}} == Funkcja służy do ustawienia pewnych domyślnych dwóch pewnych funkcji służących do pobieranie danych z tabelki z pierwszej tej funkcji: * Jeżeli ona posiada klucz o wartości {{Code|args}}, ** to zwracana jest ta właśnie tablica jako argument pierwszej tej funkcji, jeżeli jest w ogóle tablicą, ** w przeciwnym wypadku zwracana jest ta oryginalna tablica, też jako argument tej funkcji, * w przeciwnym dalszym wypadku zwracana jest zwracana wartość ta, jako argument tej drugiej funkcji, która zwraca prawdziwą wartość z argumentu tylko za pierwszym razem, z tej funkcji, za następnym i dalszym razem {{Code|nil}}. Z tak utworzonej ogólnie większej funkcji wykorzystywana jest w budowie omawianej funkcji, która jest zwracana przez omawianą funkcję, która względem jego budowy wywołuje raz pierwszą albo drugą poprzednią wspomnianą funkcję zależną od rodzaju zmiennej {{Code|frame}}, która może być tabelką, ale nie musi być. Ta funkcja zwracana przez funkcję w nagłówku przyjmuje argument, która jest kluczem do tych wspomnianych, może że, * tabel (dokładnie, która ta może tabelka to zależy od formatu tej naszej rozważanej zmiennej), * a jeżeli to nie tabelka, co jest zwracane, to już zostało powiedziane. Definicja skrótowa tej funkcji jest: <syntaxhighlight lang="lua"> function p.PobierzParametryRamki(frame)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu. }} Weźmy ramkę sformułowaną w wikikodzie jako dziecko w szablonie rodzicu: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5}} </syntaxhighlight> === Funkcje, funkcją parametrów, z tablicią ramki lub one z podtablicą {{Code|args}} === To wtedy tablica ramki tablicy transportu posiada właśnie {{Code|frame}}, która jest tablicą, i na pewno posiada tablicę o nazwie {{Code|args}}, to wtedy tę funkcję wywołaną w ramce, która wywołuje funkcję w nagłówku, formułujemy: <syntaxhighlight lang="lua"> local p={}; local p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametryRamki=parametry_modul.PobierzParametryRamki(frame); ... end; </syntaxhighlight> ==== Przykład wywołania funkcji z funkcją parametrów z tablicą {{Code|args}} ==== Równie dobrze funkcję z ramki można wywołać w sposób, co wtedy ta funkcja też zostanie wywołana pozytywnie: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"]{args={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}}; </syntaxhighlight> W tej funkcji nie trzeba definiować funkcji fałszywej {{Code|getParent}}, w postaci: {{Code|getParent{{=}}function()end}}. Widzimi, że ta tablica posiada nazwę zmiennej tablicowej o nazwie {{Code|args}}, ale ona nie jest tablicą ramki tablicy transportu, ale tą tablicę możemy bezposrednio wsadzić w tą główną tablicę w samym argumencie funkcji. ==== Przykład wywołania z tablicą bez podtablicy {{Code|args}} ==== Równie dobrze możemy wywołać tę funkcję zdefiniowaną naszą w jakimś module w sposób: <syntaxhighlight lang="lua"> local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; local wynik=p["Nazwa funkcji"]{tabela); </syntaxhighlight> też ta funkcja prawidłowo się wywoła. W tym przypadku, jak i w przypadkach powyżej, wyniki uzyskuje się w następującym wywołaniach: <syntaxhighlight lang="lua"> --- Zmienna: wartosc1, przyjmuje wartość: "wartość1"; local wartosc1=PobierzParametryRamki("nazwa1"); --- Zmienna: wartosc2, przyjmuje wartość: "wartość2"; local wartosc2=PobierzParametryRamki("nazwa2"); --- Zmienna: wartosc3, przyjmuje wartość: "wartość3"; local wartosc3=PobierzParametryRamki(1); </syntaxhighlight> ==== Przykłąd wywołania funkcji z wartością nietablicową ==== W innym przypadku wywołań funkcji ramki jest wsadzenie do niej zwykłego nietablicowego elementu, może być też to wartość: {{Code|nil}}. A to wywołanie jest: <syntaxhighlight lang="lua"> local wartosc="wartość"; --Zmienna: wartosc, nie jest w tym przypadku tablicą; local wynik=p["Nazwa funkcji"](wartosc); </syntaxhighlight> === Wywołania funkcji parametrów bez argumentów - wiele kolejnych wywołań jednocześnie === Wtedy w tej ramce w celu uzyskania, jakikolwiek wartości jest przykład wywołania tej funkcji zwracanej przez funkcję w ramce z argumentem pustym. <syntaxhighlight lang="lua"> -- Zmienna: wartość1, przyjmuje wartość: "wartość"; Jeżeli ona, przyjmuje wartość: nil, to wywołanie rzuci: nil, i za każdym następny razem; local wartosc1=PobierzParametryRamki(); -- Zmienna: wartość2, przyjmuje wartość: nil; local wartosc2=PobierzParametryRamki(); </syntaxhighlight> W wywołaniach powinno dbać się o właściwą kolejność wywołań, bo argumentem funkcji z tablicy transportu może być zwykła tablicowa wartość. Najpierw uzyskujemy wartości nietablicowe, a później tablicowe, na wypadek niewiadomej {{Code|frame}} jakiego typu ma być wartość. === Dwa przypadki, parametr w tablicy, lub wartość nietablicowa funkcji === Też ta zmienna może istnieć pod kilkoma możliwymi kluczami, lub tą zmienną może być jedyny argument funkcji, która jest nietablicową wartością, wtedy ją się wywołuje jako dla przypadku, gdy parametr jest nietablicowy lub jest pod kluczem {{Code|tekst}}: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local tekst=parametry_modul.PobierzParametryRamki(frame)("tekst"); </syntaxhighlight> === Przypadek, gdy parametr funkcji nie jest tablicą === Lub chcemy tę funkcję wywołać bezparametrowo, gdy chcemy, by {{Code|frame}} nie była tablicą: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local tekst=parametry_modul.PobierzParametryRamki(frame)(); </syntaxhighlight> ==== Omówienie przypadku istnienia tego samego wariantu zmiennej raz podtablicą, a raz jako zmienna nietablicowa === * Wtedy ta zmienna w przedostatnim przykładzie jest pod wartością {{Code|tekst}}, gdy wartość {{Code|frame}} jest tablicą, * lub może być jedyną wartością, którą jest {{Code|frame}}, jako zmienna nietablicowa, wtedy ta zmienna też jest pod {{Code|tekst}}, ** ta funkcja uzyskana z: {{Code|{{sr|#p.PobierzParametryRamki(frame)|p=Parametry}}}}, wtedy może być wywołana tylko raz z nienilową wartością zwracaną, następnym razem zwraca wartość {{Code|nil}}, wtedy to dotyczy przedostatniego i ostatniego przykładu. === Jakma liczyć element funkcji w przypadku różnych jej parametrów === Jeżeli {{Code|frame}} jest nietablicowa, to wtedy wartość {{Code|tekst}} jest taka sama, co {{Code|frame}}. A jeżeli jest tablicą, to ta wartością jest {{Code|frame.args["tekst"]}}, lub gdy {{Code|args}} nie istnieje, lub istnieje, ale jest nietablicowa, to wtedy ta wartość jest {{Code|frame["tekst"]}}. === Parametry alternatywne funkcji - przykład wykorzystania funkcji parametrów === A gdy zmienne istnieją pod wieloma kluczami, lub gdy funkcję wywołano ze zmienną nietablicową, wtedy ogólnie możemy dla przykładu powiedzieć: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local PobierzParametryRamki=parametry_modul.PobierzParametryRamki(frame); local wartosc1=PobierzParametryRamki("nazwa1") or PobierzParametryRamki(1); local wartosc2=PobierzParametryRamki("nazwa2") or PobierzParametryRamki(2); local wartosc3=PobierzParametryRamki("nazwa3") or PobierzParametryRamki(3); </syntaxhighlight> * Wtedy ta zmienna jest pod kluczem, np.: {{Code|nazwa1}} lub {{Code|1}}, tablicy ramki {{Code|frame}} tablicy transportu, następne wywołania dla następnych kluczy też zrzucą pewne wartości, * lub jest ona zwykłą nietablicową wartością mogącą być równą, nawet {{Code|nil}}. ---- * Następne wywołania uzyskanej tak funkcji w przypadku, gdy {{Code|frame}} jest nietablicowy, rzucać będzie z samej definicji funkcji wartości {{Code|nil}}, czyli {{Code|wartosc2{{=}}wartosc3{{=}}nil}}, ale za to wartość {{Code|wartosc1}} nie musi być, ale może, wartością {{Code|nil}}, jeśli tą wartością jest, gdy {{Code|frame{{=}}nil}}, * w przeciwnym wypadku za pierwszym razem tej wartości nietablicowej uzyskamy wartość nie {{Code|nil}}, a za drugim i dalszym zawsze wartość {{Code|nil}}. == {{Code|p.PobierzElementNumerowanyZFrameLubTablicy}} == Definicja skrótowa funkcji jest z parametrem charakteryzującym pewien zestaw zmiennych {{Code|frame}}, * które nie musi być tablicą ramki tablicy transportu, tylko moze być innym parametrem, który jest tablicą parametrów podanych do funkcji, * nawet gdy parametrem podanym do funkcji, w której wykorzystujemy tą funkcję, jest jedyna zmienna będąca tablicą ramki. Ale z drugiej strony, tak nie musi być, może być to rozbudowany zestaw zmiennych, np. nazwanych i nienazwanych, którego wszystkie sposoby podawania łączymy jednym sposobem podawania. Mimo że parametry funkcji są parametrami nienazwanymi, mogą być one ponumerowane, ale zmienna w tablicy może przyjmować wartość tą samą na różne sposoby, raz w sposób nazwany, a za innym sposobem jako nienazwany. Ogólnie ostateczne parametry łączymy w dane parametry za pomocą jednego sposobu, tzn. za pomocą tej funkcji, i dla tak uzyskanej tablicy tworzymy funkcję zwracaną przez funkcję w nagłówku, która przyjmuje parametr, który jest kluczem tej uzyskanej tablicy. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobierzElementNumerowanyZFrameLubTablicy(frame)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu. }} Weźmy najprostszy sposób realizacji tej funkcji, w realizacji: {{Code|1-1, 2-2, 3-3}}, czyli ten opis jest zaraz poniżej. === Sposoby wywołania funkcji === ; Pierwszy sposób{{dk}} Weźmy funkcję, którą można wywoływać z wieloma parametrami, jak i w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, którą przykładowo piszemy jego wywołanie wewnątrz innej funkcji na pięć sposobów, czyli teraz pierwszy sposób z tylko z parametrem, więc tablicą ramki tablicy transportu wywodzącą się z ramki uruchomioną w wikikodzie w jakimś szablonie rodzicu: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"](frame); </syntaxhighlight> ; Drugi sposób{{dk}} A teraz drugi sposób, pisząc, bezpośrednio inaczej, formułując wywołanie tej funkcji, używając zmiennych tablicowych tablicy ramki, ale to nie jest tak naprawdę tablica ramka tablicy transportu, tylko parametr podany bezpośrednio do funkcji, tak jak się to robi w języku {{lpg|Lua}}, nie jak w przykładzie powyżej, więc: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"]{args={"wartość1","wartość2","wartość3",},}; </syntaxhighlight> ; Trzeci sposób{{dk}} Lub równoważnie, pisząc, nie używając zmiennej {{Code|args}}: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"]{"wartość1","wartość2","wartość3",}; </syntaxhighlight> ; Czwarty sposób{{dk}} Albo te parametry wsadzając do funkcji: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"]("wartość1","wartość2","wartość3"); </syntaxhighlight> ; Piąty spssób{{dk}} Można też wywołać to wszystko w ramce, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w wikikpdzie, wtedy wsadzając parametry do ramki: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|wartość1|wartość2|wartość3}} </syntaxhighlight> === Omówienie pobierania takich parmetrów === A jak połączyć wszystkie te pięć sposobów, posługiwać się tymi sposobami wewnątrz funkcji {{Code|Nazwa funkcji}} w sposób jednolity, jedynie wtedy należy skorzystać z funkcji z definiowaną w jakimś module w sposób: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(...) local tablica_prametrow_funkcji={...}; local parametry_modul=require("Module:Parametry"); local PobierzElementNumerowanyZFrameLubTablicy=parametry_modul.PobierzElementNumerowanyZFrameLubTablicy(tablica_prametrow_funkcji); ... end; </syntaxhighlight> Wtedy za pomocą zmiennej {{Code|PobierzElementNumerowanyZFrameLubTablicy}} dostaliśmy się do funkcji, która przyjmuje jedyny parametr, aby dostać się do elementów tablicy uzyskanej w wewnątrz tej funkcji, zdefiniowaną w tablicy {{Code|tablica_prametrow_funkcji}}, która jest nic innym jak zestawem parametrów w funkcji: {{Code|Nazwa funkcji}}. * W pierwszym i drugim sposobem zmienną tą nazwijmy to jako {{Code|args}}, jest zmienną z podtablicy innego {{Code|args}} przekazanych jako parametr tablicy do funkcji, * w trzecim sposobie tą zmienną jest cała tablica, * a czwartym jest zestaw parametrów ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. A czym się różnią się te sposoby, a więc te sposoby można powiązać jedną tylko funkcją powiedzianą w nagłówku według przykładu podaną zaraz powyżej, wtedy możemy dostawać się do tych samych zmiennych o takich samych nazwach i wartościach, ale w różnych reprezentacjach na różne sposoby, wtedy można powiedzieć, że: <syntaxhighlight lang="lua"> args[1]="wartość1"; args[2]="wartość2"; args[3]="wartość3"; </syntaxhighlight> Czyli w wyniku działania funkcji w nagłówku, otrzymamy funkcję zwracającą te wartości, która operuje na tej tablicy, której wynikiem jest zestaw zmiennych ponumerowanych, ogólnie nienazwanych, której wartości odpowiadają te podane w ramce ostatniej powyżej. Na podstawie tego wiemy, jak działa funkcja ta z nagłówka. === Nazwy alternatywne danych parametrów funkcji ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}} === Pisząc w inny sposób, można też wskazywać: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(...) local tablica_prametrow_funkcji={...}; local parametry_modul=require("Module:Parametry"); local PobierzElementNumerowanyZFrameLubTablicy=parametry_modul.PobierzElementNumerowanyZFrameLubTablicy(tablica_prametrow_funkcji); local wartosc1=PobierzElementNumerowanyZFrameLubTablicy("nazwa1") or PobierzElementNumerowanyZFrameLubTablicy(1); local wartosc2=PobierzElementNumerowanyZFrameLubTablicy("nazwa2") or PobierzElementNumerowanyZFrameLubTablicy(2); local wartosc3=PobierzElementNumerowanyZFrameLubTablicy("nazwa3") or PobierzElementNumerowanyZFrameLubTablicy(3); end; </syntaxhighlight> Zmienne w przykładzie o kluczach: {{Code|nazwa1}}, {{Code|nazwa2}} i {{Code|nazwa3}}, posiadające pewne swoje wartości, to są zmienne w tablicy {{Code|tablica_prametrow_funkcji}}, podane też jako zmienne, jako pewne argumenty tablicy, który są w tej funkcji zwracanej jako argument (parametr) funkcji, * jeżeli argumenty podano w postaci jednego parametru funkcji w postaci pewnej tablicy z np. elementami nazwanymi, * lub jako wiele argumentów w ramce, w wikikodzie, w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w pewnym szablonie, * a rozpatrując dalej elementy względem ich nazw, np. alternatywnych, to te numery mogą być kolejo do nazw ich odpowiedników nazwanych, które w przykładzie powyżej, mają pierwszeństwo, ale tak nie musi być, te parametry: {{Code|1}}, {{Code|2}} i {{Code|3}}, to jest numer parametru, jeżeli argumenty do funkcji podano w postaci wielu jego parametrów. == {{Code|p.PobierzParametr}} == Ta funkcja zwraca znów inną funkcję, która ma jedyny parametr, mówiący jakiego parametru poszukujemy, co jest wyjaśnione w definicji funkcji z nagłówka, że ona zwraca tą właśnie funkcje. Definicja skrótowa dunkcji: <syntaxhighlight lang="lua"> function p.PobierzParametr(frame,czy_frame_lub_parent,czy_frame) ... return function(nazwa) return __pobierz_parametr_table_args(nazwa); end; end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu. | 2 = {{Code|czy_frame_lub_parent}} i {{Code|czy_frame}} | _2 = Parametry logiczne dodatkowe funkcji. }} === Wartośc zwracanainumer metody === Funkcja zwraca jednocześnie dwie wartości, ta zwrócona z funkcji z nagłówka, prawdziwą wartość, i numer metody w postaci: {{Code|return wartosc, numer_metody}}. === Opis zwracanych elementów przez funkcję zwracaną - różnemetody zwracania, jak je wykorzystać === Ta funkcja zwracana ma w swojej definicji inną jeszcze funkcję z tym samym parametrem, co jego rodzic, i to jest za każdym razem inna funkcja w zależności z jakim typem danych się posługujemy {{Code|frame}} i jakie podaliśmy parametry. Gdy warunkiem, gdy zmienna {{Code|frame}} jest tablicą, czyli te zmienne druga: {{Code|czy_frame_lub_parent}} (jeżeli funkcja jest uruchomiona w ramce w szablonie, jeżeli ma wartość {{Code|true}}, to ona wybiera raz parametr z: {{Code|frame.args[nazwa or 1]}}, a za innym razem z {{Code|pf.args[nazwa or 1]}}, gdzie {{Code|pf{{=}}frame:getParent()}}, tutaj jest zwracana wartość: {{Code|return wartosc,2}}). Czy trzecia: {{Code|czy_frame}} (która mówi, jeżeli funkcję uruchomiono w ramce, ale przy wartości prawdziwej tego pierwszego podanego parametru, czyli {{Code|true}}, wybierana jest zawsze wartość {{Code|frame.args[nazwa or 1}}}, w przeciwnym wypadku uruchamiana jest funkcja {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, tutaj zwracana jest wartość {{Code|return wartosc,1}}). Jeżeli wartością {{Code|frame}} jest wartość nietablicowa, ale niebędącą wartością {{Code|nil}}, wtedy ustawiana jest funkcja, która tylko za pierwszym razem zwraca nienilową wartość {{Code|return wartosc,0}}, a później zwraca wartość {{Code|return nil,0}}. Gdy wartością {{Code|frame}} jest {{Code|nil}}, to funkcja zawsze wraca tą wartość {{Code|return nil,0}}. Powyższy sposób działa również dobrze, gdy zdefiniujemy w parametrach funkcji fałszywą funkcję {{Code|frame.getParent}}. Gdy funkcja nie jest uruchamiana w ramce lub funkcja {{Code|frame.getParent}} nie jest zdefiniowana, to wtedy funkcja wchodzi zawsze w ten jej krok, jakby {{Code|czy_frame_lub_parent}} było {{Code|false}} według tego powyżej, to wtedy brana jest zmienna {{Code|czy_frame}}, i jaką wartość ona przyjmuje. === Nazwy alternatywne parametrów === Funkcję pisze się według sposobu, którą się wywołuje według: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame); local wartosc1=PobierzParametr("nazwa1") or PobierzParametr(1); local wartosc2=PobierzParametr("nazwa2") or PobierzParametr(2); local wartosc3=PobierzParametr("nazwa3") or PobierzParametr(3); </syntaxhighlight> Na wypadek wartości nietabelowej, tą wartość zapisuje się jako pierwszą w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a dla wartości tabelowych, jaka jest kolejność to jest obojętne, byle by to było sensowne. === Wywołania funkcji === Tę funkcję podobnie się wywołuje jak funkcję: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}. Wartością {{Code|frame}} nie musi być tablica ramki tablicy transportu, równie dobrze może być to dowolna tablica lub wartość nietablicowa. Weźmy ramkę, w której uruchamiamy funkcję ramki: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}} </syntaxhighlight> === Przykłady wykorzystania funkcji === ; Przykład pierwszy{{dk}} Ona musi być wywołana z parametrem {{Parametr|wyspecjalizowana|tak}}, jako podpowiedź, że liczą się parametry ramki dziecka, a nie jego rodzica, czyli szablonu. Wtedy funkcję {{Code|Nazwa funkcji}} definiujemy: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame,true); ... end; </syntaxhighlight> Wtedy parametr {{Parametr|wyspecjalizowana|tak}} jest ignorowany, a przy wartości {{Code|false}} drugiego parametru funkcji, czyli wywołania: {{Code|local PobierzParametr{{=}}parametry_modul.PobierzParametr(frame,false);}}, już nie, ale nie zawsze. W takim przypadku według powyższego przykładu raz jest brana wartość, jeżeli istnieje, z {{Code|frame.args}}, a jak ona nie istnieje, to wtedy z: {{Code|pf.args}}. ; Przykład drugi{{dk}} Weźmy inny przypadek: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame,false,true); ... end; </syntaxhighlight> Przy tym też parametr: {{Parametr|wyspecjalizowana|tak}}, jest ignorowany, wtedy jest zawsze wybierana do rozważań tablica: {{Code|frame.args}}. ; Przykład trzeci{{dk}} Znów w innym przypadku, gdzie parametr: {{Parametr|wyspecjalizowana|tak}}, jest zawsze rozważany w naszym wypadku: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame,false,false); ... end; </syntaxhighlight> To to wywołanie, wtedy dokładnie działa jak funkcja: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, a zwrócona funkcja: {{Code|PobierzParametr}} pobiera elementy z tak uzyskanej tablicy {{Code|args}} poprzez nią. === Przypadek nietablicowego charakteru parametrów funkcji === W przypadku, gdy {{Code|frame}} nie jest tablicą, wtedy parametry: {{Code|czy_frame_lub_parent}} i {{Code|czy_frame}}, są w takim przypadku zawsze ignorowane, ale muszą być ustawione na wypadek, gdyby do funkcji {{Code|Nazwa funkcji}} wsadzono tablicę, np. z ramki, tzn. tablicę ramki funkcji tablicy transportu. === Ogólny przypadek, często stosowany === Najprostszym często ogólnym przykładem, który prawie zawsze jest stosowany: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame); ... end; </syntaxhighlight> Wtedy parametr: {{Parametr|wyspecjalizowana|tak}}, jest prawie zawsze nieignorowany, ale nie zawsze. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> tq6d12w5h27qqe5t1e4sexs0dprufqt 555738 555737 2026-09-11T19:37:22Z Persino 2851 /* {{Code|p.PobierzArgsParametry}} */ 555738 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} Są tutaj przedstawione funkcje parametrów. == {{Code|p.PobierzFrameEwentualnieParent}} == Argument tej funkcji {{Code|frame}} koniecznie musi być tablicą, w przypadku przeciwnym wywoła to błąd języka {{lpg|Lua}}, że z wartości nietabelowej chcemy wyliczyć jego nieistniejący element {{Code|getParent}}, który ma prawo nie być. Funkcja pobiera parametry ramki szablonu rodzica, a nie dziecka, a jeżeli w dziecku w ramce w wikikodzie w szablonie podamy specjalny parametr {{Parametr|wyspecjalizowana|tak}}, to wtedy ta funkcja ściąga parametry ramki. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobierzFrameEwentualnieParent(frame)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu. }} === Sterowanie funkcją === Tą funkcją można sterować ze strony ramki tym właśnie specjalnym parametrem o wartości niepustej, którą jest {{Parametr|wyspecjalizowana|tak}}. ==== Przykłady wykorzystania z parametrem sterującym ==== W ramce podajemy argumenty wraz z tym specjalnym parametrem: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}} </syntaxhighlight> To wtedy w kodzie w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} w module o nazwie {{Code|Nazwa modułu}}, piszemy: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzFrameEwentualnieParent(frame).args; .... end; </syntaxhighlight> To wtedy w kodzie ściągane parametry ramki dziecka. === Pobieranie oryginalnej tablicy === Tę funkcję można równie dobrze wykorzystać do zwykłych tabel: <syntaxhighlight lang="lua"> local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzFrameEwentualnieParent(tabela); </syntaxhighlight> === Możliwość tej samej funkcji uruchomioną w ramce lub z podaniem do niej pewnego zestawu parametrów w postaci tablicy === A w tym przypadku ta funkcja nic nie robi, tylko zmienna {{Code|args}} referencyjnie wskazuje na tablicę {{Code|tablica}}. Ale można ją wykorzystać, gdy by funkcja {{Code|Nazwa funkcji}}, była uruchomiona ze zwykłą tablicą, ale z możliwością, że to może być tablicą ramki {{Code|frame}} tablicy transportu, np.: <syntaxhighlight lang="lua"> --- Pierwsza możliwość; local wartosc1=p["Nazwa funkcji"](frame); -- Druga możliwość local wartosc2=p["Nazwa funkcji"]{["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; </syntaxhighlight> === Niedogodności stosowania z funkcji === Dla obu jest taka niedogodność, że jedynie jest taka nieprawidłowość, że w przypadku parametru tablicy ramki tablicy transportu należy podawać uzyskany element {{Code|args}}, a w przypadku zwykłej tablicy już nie, tą niedokodność rozwiązuje funkcja: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}. == {{Code|p.PobierzArgsParametry}} == Argument tej funkcji {{Code|frame}} koniecznie nie musi być tablicą, bo wtedy nie wywoła to błędu języka {{lpg|Lua}}, że z wartości nietabelowej chcemy wyliczyć jego niepusty element {{Code|getParent}}, bo przedtem sprawdzana jest w tej funkcji, czy jest to tablica. W definicji tej funkcji zmienna uzyskana z funkcji: {{Code|{{sr|#p.PobierzFrameEwentualnieParent(frame)|p=Parametry}}}}, a jeśli jej składowa {{Code|args}} jest tablicą, to jest właśnie ona zwracana, a jeśli istnieje, ale nie jest tablicą, lub ona nie istnieje, to wtedy brana jest właśnie wartość tablicowa {{Code|frame}}, jeśli jest ona taka, a gdy nie, to wtedy z tej funkcji tutaj nie korzystamy. Funkcja pobiera parametry ramki szablonu rodzica, a nie dziecka, a jeżeli w dziecku w ramce w wikikodzie w szablonie podamy specjalny parametr {{Parametr|wyspecjalizowana|tak}}, to wtedy ta funkcja ściąga parametry ramki. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobierzArgsParametry(frame, czy_nie_tablica_jako_tablica)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica transportu ramki. | 2 = {{Code|czy_nie_tablica_jako_tablica}} | _2 = Czy wartości nietablicowe umieszczać w jednoelemenowej tabeli. }} === Opis działania === Funkcja wykorzystuje wspomnianą powyżej funkcję do swojego działania, ona jest wtedy aktywowana, gdy zmienna {{Code|frame}} jest tablicą, i jest sprawdzane, czy ona posiada nazwany element o kluczu {{Code|args}}, i czy jest on tablicowy. Jeżeli wartością zmiennej {{Code|frame}} nie jest tablica, ale nie przybiera wartości {{Code|nil}}, to ona jest umieszczana w tablicy, jeżeli zmiennej {{Code|czy_nie_tablica_jako_tablica}} przydzielimy wartość {{Code|true}}, w przeciwnym wypadku zwracana jest ona w postaci niezmienionej, a jeżeli wartość tej zmiennej nie istnieje, to zwracana jest zwykła tablica pusta. Tą funkcją można sterować ze strony ramki tym właśnie specjalnym parametrem o wartości niepustej. === Przykład wywołania fubkcji z funkcją parametrów === W ramce podajemy argumenty wraz z tym specjalnym parametrem: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}} </syntaxhighlight> ==== Użycie funkcji parametrów ==== To wtedy w kodzie w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} w module o nazwie {{Code|Nazwa modułu}}, piszemy: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(frame); .... end; </syntaxhighlight> To wtedy w kodzie ściągane parametry ramki dziecka. === Wykorzystanie fukcji w różnych sytuacjach === ; Przypadek pierwszy{{dk}} Tę funkcję można równie dobrze wykorzystać do zwykłych tabel: <syntaxhighlight lang="lua"> local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(tabela); </syntaxhighlight> ; Drugi przypadek{{dk}} A w tym przypadku ta funkcja nic nie robi, tylko zmienna {{Code|args}} referencyjnie wskazuje na tablicę {{Code|tablica}}. Ale można ją wykorzystać, gdyby funkcja {{Code|Nazwa funkcji}}, była uruchomiona ze zwykłą tablicą, ale z możliwością, że to może być tablicą ramki {{Code|frame}} tablicy transportu, np.: <syntaxhighlight lang="lua"> --- Pierwsza możliwość; local wartosc1=p["Nazwa funkcji"](frame); -- Druga możliwość local wartosc2=p["Nazwa funkcji"]{["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; </syntaxhighlight> ==== Usunięcie niedogodności ==== Dla obu tych przypadków nie ma żadnej niedogodności, jak to występowała w {{Code|{{sr|#p.PobierzFrameEwentualnieParent(frame)|p=Parametry}}}}. === Parametr funkcji nietablicowy === Jeśliby do funkcji tablicy transportu dać wartość równą nie tablicy, to wtedy równoważnie możemy napisać: <syntaxhighlight lang="lua"> local wartosc="wartość"; local wynik=p["Nazwa funkcji"](wartosc); </syntaxhighlight> to wtedy definicję tej funkcji piszemy: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(frame,true); local wartosc=args[1]; end; </syntaxhighlight> lub równoważnie możemy zapisać: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); local wartosc=parametry_modul.PobierzArgsParametry(frame); end; </syntaxhighlight> === Brak parametrów funkcji === A jeżeli nie wsadziliśmy żadnej wartości do funkcji ramki tablicy transportu lub tą wartością jest {{Code|nil}}, wtedy: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"](); </syntaxhighlight> wtedy definicja tej funkcji wygląda: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); -- Zmienna: args, wskazuje na wartość, którą jest tablicą pustą, tzn. w tej tablicy nie ma wcale elementów; local args=parametry_modul.PobierzArgsParametry(frame); end; </syntaxhighlight> === Zmienna {{Code|args}} - alternatywny przypadek dla wartości tablicowych niż te bez drugiego parametru === Widzimy, że wtedy zmienna {{Code|args}} jest normalną pustą tablicą, i nie musimy wtedy wcale pisać poniżej, bo wtedy wychodzi w tym przypadku na to samo: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(frame,true); </syntaxhighlight> === Różnica drugiego parametru w przypadku wartości nietablicowych === Argument drugi w {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, który w naszym przypadku musi mieć wartość {{Code|true}}, a wtedy jest jedynie sens, gdy {{Code|frame}} nie jest tablicą, i gdy chcemy tą wartość umieścić w tablicy, a nie powtórzyć wartość, tzn. chcemy napisać: {{Code|{{(}}frame,{{)}}}}, w przeciwnym wypadku musilibyśmy napisać coś w rodzaju, zamiast tak spreparowanej tablicy: {{Code|frame}}, czyli: <syntaxhighlight lang="lua"> -- Pierwszy przypadek, gdy frame jest wartością nietablicową; local parametry_modul=require("Module:Parametry"); ... -- Zwracana wartość: args, to nic innego niż: {frame,}; local args=parametry_modul.PobierzArgsParametry(frame,true); ... -- Zwracana wartość: args, to nic innego niż: frame, a nie {frame,}, jak poprzednio; local args=parametry_modul.PobierzArgsParametry(frame); </syntaxhighlight> == {{Code|p.PobierzParametryRamki}} == Funkcja służy do ustawienia pewnych domyślnych dwóch pewnych funkcji służących do pobieranie danych z tabelki z pierwszej tej funkcji: * Jeżeli ona posiada klucz o wartości {{Code|args}}, ** to zwracana jest ta właśnie tablica jako argument pierwszej tej funkcji, jeżeli jest w ogóle tablicą, ** w przeciwnym wypadku zwracana jest ta oryginalna tablica, też jako argument tej funkcji, * w przeciwnym dalszym wypadku zwracana jest zwracana wartość ta, jako argument tej drugiej funkcji, która zwraca prawdziwą wartość z argumentu tylko za pierwszym razem, z tej funkcji, za następnym i dalszym razem {{Code|nil}}. Z tak utworzonej ogólnie większej funkcji wykorzystywana jest w budowie omawianej funkcji, która jest zwracana przez omawianą funkcję, która względem jego budowy wywołuje raz pierwszą albo drugą poprzednią wspomnianą funkcję zależną od rodzaju zmiennej {{Code|frame}}, która może być tabelką, ale nie musi być. Ta funkcja zwracana przez funkcję w nagłówku przyjmuje argument, która jest kluczem do tych wspomnianych, może że, * tabel (dokładnie, która ta może tabelka to zależy od formatu tej naszej rozważanej zmiennej), * a jeżeli to nie tabelka, co jest zwracane, to już zostało powiedziane. Definicja skrótowa tej funkcji jest: <syntaxhighlight lang="lua"> function p.PobierzParametryRamki(frame)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu. }} Weźmy ramkę sformułowaną w wikikodzie jako dziecko w szablonie rodzicu: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5}} </syntaxhighlight> === Funkcje, funkcją parametrów, z tablicią ramki lub one z podtablicą {{Code|args}} === To wtedy tablica ramki tablicy transportu posiada właśnie {{Code|frame}}, która jest tablicą, i na pewno posiada tablicę o nazwie {{Code|args}}, to wtedy tę funkcję wywołaną w ramce, która wywołuje funkcję w nagłówku, formułujemy: <syntaxhighlight lang="lua"> local p={}; local p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametryRamki=parametry_modul.PobierzParametryRamki(frame); ... end; </syntaxhighlight> ==== Przykład wywołania funkcji z funkcją parametrów z tablicą {{Code|args}} ==== Równie dobrze funkcję z ramki można wywołać w sposób, co wtedy ta funkcja też zostanie wywołana pozytywnie: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"]{args={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}}; </syntaxhighlight> W tej funkcji nie trzeba definiować funkcji fałszywej {{Code|getParent}}, w postaci: {{Code|getParent{{=}}function()end}}. Widzimi, że ta tablica posiada nazwę zmiennej tablicowej o nazwie {{Code|args}}, ale ona nie jest tablicą ramki tablicy transportu, ale tą tablicę możemy bezposrednio wsadzić w tą główną tablicę w samym argumencie funkcji. ==== Przykład wywołania z tablicą bez podtablicy {{Code|args}} ==== Równie dobrze możemy wywołać tę funkcję zdefiniowaną naszą w jakimś module w sposób: <syntaxhighlight lang="lua"> local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; local wynik=p["Nazwa funkcji"]{tabela); </syntaxhighlight> też ta funkcja prawidłowo się wywoła. W tym przypadku, jak i w przypadkach powyżej, wyniki uzyskuje się w następującym wywołaniach: <syntaxhighlight lang="lua"> --- Zmienna: wartosc1, przyjmuje wartość: "wartość1"; local wartosc1=PobierzParametryRamki("nazwa1"); --- Zmienna: wartosc2, przyjmuje wartość: "wartość2"; local wartosc2=PobierzParametryRamki("nazwa2"); --- Zmienna: wartosc3, przyjmuje wartość: "wartość3"; local wartosc3=PobierzParametryRamki(1); </syntaxhighlight> ==== Przykłąd wywołania funkcji z wartością nietablicową ==== W innym przypadku wywołań funkcji ramki jest wsadzenie do niej zwykłego nietablicowego elementu, może być też to wartość: {{Code|nil}}. A to wywołanie jest: <syntaxhighlight lang="lua"> local wartosc="wartość"; --Zmienna: wartosc, nie jest w tym przypadku tablicą; local wynik=p["Nazwa funkcji"](wartosc); </syntaxhighlight> === Wywołania funkcji parametrów bez argumentów - wiele kolejnych wywołań jednocześnie === Wtedy w tej ramce w celu uzyskania, jakikolwiek wartości jest przykład wywołania tej funkcji zwracanej przez funkcję w ramce z argumentem pustym. <syntaxhighlight lang="lua"> -- Zmienna: wartość1, przyjmuje wartość: "wartość"; Jeżeli ona, przyjmuje wartość: nil, to wywołanie rzuci: nil, i za każdym następny razem; local wartosc1=PobierzParametryRamki(); -- Zmienna: wartość2, przyjmuje wartość: nil; local wartosc2=PobierzParametryRamki(); </syntaxhighlight> W wywołaniach powinno dbać się o właściwą kolejność wywołań, bo argumentem funkcji z tablicy transportu może być zwykła tablicowa wartość. Najpierw uzyskujemy wartości nietablicowe, a później tablicowe, na wypadek niewiadomej {{Code|frame}} jakiego typu ma być wartość. === Dwa przypadki, parametr w tablicy, lub wartość nietablicowa funkcji === Też ta zmienna może istnieć pod kilkoma możliwymi kluczami, lub tą zmienną może być jedyny argument funkcji, która jest nietablicową wartością, wtedy ją się wywołuje jako dla przypadku, gdy parametr jest nietablicowy lub jest pod kluczem {{Code|tekst}}: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local tekst=parametry_modul.PobierzParametryRamki(frame)("tekst"); </syntaxhighlight> === Przypadek, gdy parametr funkcji nie jest tablicą === Lub chcemy tę funkcję wywołać bezparametrowo, gdy chcemy, by {{Code|frame}} nie była tablicą: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local tekst=parametry_modul.PobierzParametryRamki(frame)(); </syntaxhighlight> ==== Omówienie przypadku istnienia tego samego wariantu zmiennej raz podtablicą, a raz jako zmienna nietablicowa === * Wtedy ta zmienna w przedostatnim przykładzie jest pod wartością {{Code|tekst}}, gdy wartość {{Code|frame}} jest tablicą, * lub może być jedyną wartością, którą jest {{Code|frame}}, jako zmienna nietablicowa, wtedy ta zmienna też jest pod {{Code|tekst}}, ** ta funkcja uzyskana z: {{Code|{{sr|#p.PobierzParametryRamki(frame)|p=Parametry}}}}, wtedy może być wywołana tylko raz z nienilową wartością zwracaną, następnym razem zwraca wartość {{Code|nil}}, wtedy to dotyczy przedostatniego i ostatniego przykładu. === Jakma liczyć element funkcji w przypadku różnych jej parametrów === Jeżeli {{Code|frame}} jest nietablicowa, to wtedy wartość {{Code|tekst}} jest taka sama, co {{Code|frame}}. A jeżeli jest tablicą, to ta wartością jest {{Code|frame.args["tekst"]}}, lub gdy {{Code|args}} nie istnieje, lub istnieje, ale jest nietablicowa, to wtedy ta wartość jest {{Code|frame["tekst"]}}. === Parametry alternatywne funkcji - przykład wykorzystania funkcji parametrów === A gdy zmienne istnieją pod wieloma kluczami, lub gdy funkcję wywołano ze zmienną nietablicową, wtedy ogólnie możemy dla przykładu powiedzieć: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local PobierzParametryRamki=parametry_modul.PobierzParametryRamki(frame); local wartosc1=PobierzParametryRamki("nazwa1") or PobierzParametryRamki(1); local wartosc2=PobierzParametryRamki("nazwa2") or PobierzParametryRamki(2); local wartosc3=PobierzParametryRamki("nazwa3") or PobierzParametryRamki(3); </syntaxhighlight> * Wtedy ta zmienna jest pod kluczem, np.: {{Code|nazwa1}} lub {{Code|1}}, tablicy ramki {{Code|frame}} tablicy transportu, następne wywołania dla następnych kluczy też zrzucą pewne wartości, * lub jest ona zwykłą nietablicową wartością mogącą być równą, nawet {{Code|nil}}. ---- * Następne wywołania uzyskanej tak funkcji w przypadku, gdy {{Code|frame}} jest nietablicowy, rzucać będzie z samej definicji funkcji wartości {{Code|nil}}, czyli {{Code|wartosc2{{=}}wartosc3{{=}}nil}}, ale za to wartość {{Code|wartosc1}} nie musi być, ale może, wartością {{Code|nil}}, jeśli tą wartością jest, gdy {{Code|frame{{=}}nil}}, * w przeciwnym wypadku za pierwszym razem tej wartości nietablicowej uzyskamy wartość nie {{Code|nil}}, a za drugim i dalszym zawsze wartość {{Code|nil}}. == {{Code|p.PobierzElementNumerowanyZFrameLubTablicy}} == Definicja skrótowa funkcji jest z parametrem charakteryzującym pewien zestaw zmiennych {{Code|frame}}, * które nie musi być tablicą ramki tablicy transportu, tylko moze być innym parametrem, który jest tablicą parametrów podanych do funkcji, * nawet gdy parametrem podanym do funkcji, w której wykorzystujemy tą funkcję, jest jedyna zmienna będąca tablicą ramki. Ale z drugiej strony, tak nie musi być, może być to rozbudowany zestaw zmiennych, np. nazwanych i nienazwanych, którego wszystkie sposoby podawania łączymy jednym sposobem podawania. Mimo że parametry funkcji są parametrami nienazwanymi, mogą być one ponumerowane, ale zmienna w tablicy może przyjmować wartość tą samą na różne sposoby, raz w sposób nazwany, a za innym sposobem jako nienazwany. Ogólnie ostateczne parametry łączymy w dane parametry za pomocą jednego sposobu, tzn. za pomocą tej funkcji, i dla tak uzyskanej tablicy tworzymy funkcję zwracaną przez funkcję w nagłówku, która przyjmuje parametr, który jest kluczem tej uzyskanej tablicy. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobierzElementNumerowanyZFrameLubTablicy(frame)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu. }} Weźmy najprostszy sposób realizacji tej funkcji, w realizacji: {{Code|1-1, 2-2, 3-3}}, czyli ten opis jest zaraz poniżej. === Sposoby wywołania funkcji === ; Pierwszy sposób{{dk}} Weźmy funkcję, którą można wywoływać z wieloma parametrami, jak i w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, którą przykładowo piszemy jego wywołanie wewnątrz innej funkcji na pięć sposobów, czyli teraz pierwszy sposób z tylko z parametrem, więc tablicą ramki tablicy transportu wywodzącą się z ramki uruchomioną w wikikodzie w jakimś szablonie rodzicu: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"](frame); </syntaxhighlight> ; Drugi sposób{{dk}} A teraz drugi sposób, pisząc, bezpośrednio inaczej, formułując wywołanie tej funkcji, używając zmiennych tablicowych tablicy ramki, ale to nie jest tak naprawdę tablica ramka tablicy transportu, tylko parametr podany bezpośrednio do funkcji, tak jak się to robi w języku {{lpg|Lua}}, nie jak w przykładzie powyżej, więc: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"]{args={"wartość1","wartość2","wartość3",},}; </syntaxhighlight> ; Trzeci sposób{{dk}} Lub równoważnie, pisząc, nie używając zmiennej {{Code|args}}: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"]{"wartość1","wartość2","wartość3",}; </syntaxhighlight> ; Czwarty sposób{{dk}} Albo te parametry wsadzając do funkcji: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"]("wartość1","wartość2","wartość3"); </syntaxhighlight> ; Piąty spssób{{dk}} Można też wywołać to wszystko w ramce, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w wikikpdzie, wtedy wsadzając parametry do ramki: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|wartość1|wartość2|wartość3}} </syntaxhighlight> === Omówienie pobierania takich parmetrów === A jak połączyć wszystkie te pięć sposobów, posługiwać się tymi sposobami wewnątrz funkcji {{Code|Nazwa funkcji}} w sposób jednolity, jedynie wtedy należy skorzystać z funkcji z definiowaną w jakimś module w sposób: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(...) local tablica_prametrow_funkcji={...}; local parametry_modul=require("Module:Parametry"); local PobierzElementNumerowanyZFrameLubTablicy=parametry_modul.PobierzElementNumerowanyZFrameLubTablicy(tablica_prametrow_funkcji); ... end; </syntaxhighlight> Wtedy za pomocą zmiennej {{Code|PobierzElementNumerowanyZFrameLubTablicy}} dostaliśmy się do funkcji, która przyjmuje jedyny parametr, aby dostać się do elementów tablicy uzyskanej w wewnątrz tej funkcji, zdefiniowaną w tablicy {{Code|tablica_prametrow_funkcji}}, która jest nic innym jak zestawem parametrów w funkcji: {{Code|Nazwa funkcji}}. * W pierwszym i drugim sposobem zmienną tą nazwijmy to jako {{Code|args}}, jest zmienną z podtablicy innego {{Code|args}} przekazanych jako parametr tablicy do funkcji, * w trzecim sposobie tą zmienną jest cała tablica, * a czwartym jest zestaw parametrów ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. A czym się różnią się te sposoby, a więc te sposoby można powiązać jedną tylko funkcją powiedzianą w nagłówku według przykładu podaną zaraz powyżej, wtedy możemy dostawać się do tych samych zmiennych o takich samych nazwach i wartościach, ale w różnych reprezentacjach na różne sposoby, wtedy można powiedzieć, że: <syntaxhighlight lang="lua"> args[1]="wartość1"; args[2]="wartość2"; args[3]="wartość3"; </syntaxhighlight> Czyli w wyniku działania funkcji w nagłówku, otrzymamy funkcję zwracającą te wartości, która operuje na tej tablicy, której wynikiem jest zestaw zmiennych ponumerowanych, ogólnie nienazwanych, której wartości odpowiadają te podane w ramce ostatniej powyżej. Na podstawie tego wiemy, jak działa funkcja ta z nagłówka. === Nazwy alternatywne danych parametrów funkcji ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}} === Pisząc w inny sposób, można też wskazywać: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(...) local tablica_prametrow_funkcji={...}; local parametry_modul=require("Module:Parametry"); local PobierzElementNumerowanyZFrameLubTablicy=parametry_modul.PobierzElementNumerowanyZFrameLubTablicy(tablica_prametrow_funkcji); local wartosc1=PobierzElementNumerowanyZFrameLubTablicy("nazwa1") or PobierzElementNumerowanyZFrameLubTablicy(1); local wartosc2=PobierzElementNumerowanyZFrameLubTablicy("nazwa2") or PobierzElementNumerowanyZFrameLubTablicy(2); local wartosc3=PobierzElementNumerowanyZFrameLubTablicy("nazwa3") or PobierzElementNumerowanyZFrameLubTablicy(3); end; </syntaxhighlight> Zmienne w przykładzie o kluczach: {{Code|nazwa1}}, {{Code|nazwa2}} i {{Code|nazwa3}}, posiadające pewne swoje wartości, to są zmienne w tablicy {{Code|tablica_prametrow_funkcji}}, podane też jako zmienne, jako pewne argumenty tablicy, który są w tej funkcji zwracanej jako argument (parametr) funkcji, * jeżeli argumenty podano w postaci jednego parametru funkcji w postaci pewnej tablicy z np. elementami nazwanymi, * lub jako wiele argumentów w ramce, w wikikodzie, w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w pewnym szablonie, * a rozpatrując dalej elementy względem ich nazw, np. alternatywnych, to te numery mogą być kolejo do nazw ich odpowiedników nazwanych, które w przykładzie powyżej, mają pierwszeństwo, ale tak nie musi być, te parametry: {{Code|1}}, {{Code|2}} i {{Code|3}}, to jest numer parametru, jeżeli argumenty do funkcji podano w postaci wielu jego parametrów. == {{Code|p.PobierzParametr}} == Ta funkcja zwraca znów inną funkcję, która ma jedyny parametr, mówiący jakiego parametru poszukujemy, co jest wyjaśnione w definicji funkcji z nagłówka, że ona zwraca tą właśnie funkcje. Definicja skrótowa dunkcji: <syntaxhighlight lang="lua"> function p.PobierzParametr(frame,czy_frame_lub_parent,czy_frame) ... return function(nazwa) return __pobierz_parametr_table_args(nazwa); end; end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu. | 2 = {{Code|czy_frame_lub_parent}} i {{Code|czy_frame}} | _2 = Parametry logiczne dodatkowe funkcji. }} === Wartośc zwracanainumer metody === Funkcja zwraca jednocześnie dwie wartości, ta zwrócona z funkcji z nagłówka, prawdziwą wartość, i numer metody w postaci: {{Code|return wartosc, numer_metody}}. === Opis zwracanych elementów przez funkcję zwracaną - różnemetody zwracania, jak je wykorzystać === Ta funkcja zwracana ma w swojej definicji inną jeszcze funkcję z tym samym parametrem, co jego rodzic, i to jest za każdym razem inna funkcja w zależności z jakim typem danych się posługujemy {{Code|frame}} i jakie podaliśmy parametry. Gdy warunkiem, gdy zmienna {{Code|frame}} jest tablicą, czyli te zmienne druga: {{Code|czy_frame_lub_parent}} (jeżeli funkcja jest uruchomiona w ramce w szablonie, jeżeli ma wartość {{Code|true}}, to ona wybiera raz parametr z: {{Code|frame.args[nazwa or 1]}}, a za innym razem z {{Code|pf.args[nazwa or 1]}}, gdzie {{Code|pf{{=}}frame:getParent()}}, tutaj jest zwracana wartość: {{Code|return wartosc,2}}). Czy trzecia: {{Code|czy_frame}} (która mówi, jeżeli funkcję uruchomiono w ramce, ale przy wartości prawdziwej tego pierwszego podanego parametru, czyli {{Code|true}}, wybierana jest zawsze wartość {{Code|frame.args[nazwa or 1}}}, w przeciwnym wypadku uruchamiana jest funkcja {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, tutaj zwracana jest wartość {{Code|return wartosc,1}}). Jeżeli wartością {{Code|frame}} jest wartość nietablicowa, ale niebędącą wartością {{Code|nil}}, wtedy ustawiana jest funkcja, która tylko za pierwszym razem zwraca nienilową wartość {{Code|return wartosc,0}}, a później zwraca wartość {{Code|return nil,0}}. Gdy wartością {{Code|frame}} jest {{Code|nil}}, to funkcja zawsze wraca tą wartość {{Code|return nil,0}}. Powyższy sposób działa również dobrze, gdy zdefiniujemy w parametrach funkcji fałszywą funkcję {{Code|frame.getParent}}. Gdy funkcja nie jest uruchamiana w ramce lub funkcja {{Code|frame.getParent}} nie jest zdefiniowana, to wtedy funkcja wchodzi zawsze w ten jej krok, jakby {{Code|czy_frame_lub_parent}} było {{Code|false}} według tego powyżej, to wtedy brana jest zmienna {{Code|czy_frame}}, i jaką wartość ona przyjmuje. === Nazwy alternatywne parametrów === Funkcję pisze się według sposobu, którą się wywołuje według: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame); local wartosc1=PobierzParametr("nazwa1") or PobierzParametr(1); local wartosc2=PobierzParametr("nazwa2") or PobierzParametr(2); local wartosc3=PobierzParametr("nazwa3") or PobierzParametr(3); </syntaxhighlight> Na wypadek wartości nietabelowej, tą wartość zapisuje się jako pierwszą w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a dla wartości tabelowych, jaka jest kolejność to jest obojętne, byle by to było sensowne. === Wywołania funkcji === Tę funkcję podobnie się wywołuje jak funkcję: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}. Wartością {{Code|frame}} nie musi być tablica ramki tablicy transportu, równie dobrze może być to dowolna tablica lub wartość nietablicowa. Weźmy ramkę, w której uruchamiamy funkcję ramki: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}} </syntaxhighlight> === Przykłady wykorzystania funkcji === ; Przykład pierwszy{{dk}} Ona musi być wywołana z parametrem {{Parametr|wyspecjalizowana|tak}}, jako podpowiedź, że liczą się parametry ramki dziecka, a nie jego rodzica, czyli szablonu. Wtedy funkcję {{Code|Nazwa funkcji}} definiujemy: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame,true); ... end; </syntaxhighlight> Wtedy parametr {{Parametr|wyspecjalizowana|tak}} jest ignorowany, a przy wartości {{Code|false}} drugiego parametru funkcji, czyli wywołania: {{Code|local PobierzParametr{{=}}parametry_modul.PobierzParametr(frame,false);}}, już nie, ale nie zawsze. W takim przypadku według powyższego przykładu raz jest brana wartość, jeżeli istnieje, z {{Code|frame.args}}, a jak ona nie istnieje, to wtedy z: {{Code|pf.args}}. ; Przykład drugi{{dk}} Weźmy inny przypadek: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame,false,true); ... end; </syntaxhighlight> Przy tym też parametr: {{Parametr|wyspecjalizowana|tak}}, jest ignorowany, wtedy jest zawsze wybierana do rozważań tablica: {{Code|frame.args}}. ; Przykład trzeci{{dk}} Znów w innym przypadku, gdzie parametr: {{Parametr|wyspecjalizowana|tak}}, jest zawsze rozważany w naszym wypadku: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame,false,false); ... end; </syntaxhighlight> To to wywołanie, wtedy dokładnie działa jak funkcja: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, a zwrócona funkcja: {{Code|PobierzParametr}} pobiera elementy z tak uzyskanej tablicy {{Code|args}} poprzez nią. === Przypadek nietablicowego charakteru parametrów funkcji === W przypadku, gdy {{Code|frame}} nie jest tablicą, wtedy parametry: {{Code|czy_frame_lub_parent}} i {{Code|czy_frame}}, są w takim przypadku zawsze ignorowane, ale muszą być ustawione na wypadek, gdyby do funkcji {{Code|Nazwa funkcji}} wsadzono tablicę, np. z ramki, tzn. tablicę ramki funkcji tablicy transportu. === Ogólny przypadek, często stosowany === Najprostszym często ogólnym przykładem, który prawie zawsze jest stosowany: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame); ... end; </syntaxhighlight> Wtedy parametr: {{Parametr|wyspecjalizowana|tak}}, jest prawie zawsze nieignorowany, ale nie zawsze. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> jqittdsewto9c3r656314w1gjvitmr7 555739 555738 2026-09-11T19:37:58Z Persino 2851 /* Usunięcie niedogodności */ 555739 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} Są tutaj przedstawione funkcje parametrów. == {{Code|p.PobierzFrameEwentualnieParent}} == Argument tej funkcji {{Code|frame}} koniecznie musi być tablicą, w przypadku przeciwnym wywoła to błąd języka {{lpg|Lua}}, że z wartości nietabelowej chcemy wyliczyć jego nieistniejący element {{Code|getParent}}, który ma prawo nie być. Funkcja pobiera parametry ramki szablonu rodzica, a nie dziecka, a jeżeli w dziecku w ramce w wikikodzie w szablonie podamy specjalny parametr {{Parametr|wyspecjalizowana|tak}}, to wtedy ta funkcja ściąga parametry ramki. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobierzFrameEwentualnieParent(frame)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu. }} === Sterowanie funkcją === Tą funkcją można sterować ze strony ramki tym właśnie specjalnym parametrem o wartości niepustej, którą jest {{Parametr|wyspecjalizowana|tak}}. ==== Przykłady wykorzystania z parametrem sterującym ==== W ramce podajemy argumenty wraz z tym specjalnym parametrem: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}} </syntaxhighlight> To wtedy w kodzie w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} w module o nazwie {{Code|Nazwa modułu}}, piszemy: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzFrameEwentualnieParent(frame).args; .... end; </syntaxhighlight> To wtedy w kodzie ściągane parametry ramki dziecka. === Pobieranie oryginalnej tablicy === Tę funkcję można równie dobrze wykorzystać do zwykłych tabel: <syntaxhighlight lang="lua"> local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzFrameEwentualnieParent(tabela); </syntaxhighlight> === Możliwość tej samej funkcji uruchomioną w ramce lub z podaniem do niej pewnego zestawu parametrów w postaci tablicy === A w tym przypadku ta funkcja nic nie robi, tylko zmienna {{Code|args}} referencyjnie wskazuje na tablicę {{Code|tablica}}. Ale można ją wykorzystać, gdy by funkcja {{Code|Nazwa funkcji}}, była uruchomiona ze zwykłą tablicą, ale z możliwością, że to może być tablicą ramki {{Code|frame}} tablicy transportu, np.: <syntaxhighlight lang="lua"> --- Pierwsza możliwość; local wartosc1=p["Nazwa funkcji"](frame); -- Druga możliwość local wartosc2=p["Nazwa funkcji"]{["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; </syntaxhighlight> === Niedogodności stosowania z funkcji === Dla obu jest taka niedogodność, że jedynie jest taka nieprawidłowość, że w przypadku parametru tablicy ramki tablicy transportu należy podawać uzyskany element {{Code|args}}, a w przypadku zwykłej tablicy już nie, tą niedokodność rozwiązuje funkcja: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}. == {{Code|p.PobierzArgsParametry}} == Argument tej funkcji {{Code|frame}} koniecznie nie musi być tablicą, bo wtedy nie wywoła to błędu języka {{lpg|Lua}}, że z wartości nietabelowej chcemy wyliczyć jego niepusty element {{Code|getParent}}, bo przedtem sprawdzana jest w tej funkcji, czy jest to tablica. W definicji tej funkcji zmienna uzyskana z funkcji: {{Code|{{sr|#p.PobierzFrameEwentualnieParent(frame)|p=Parametry}}}}, a jeśli jej składowa {{Code|args}} jest tablicą, to jest właśnie ona zwracana, a jeśli istnieje, ale nie jest tablicą, lub ona nie istnieje, to wtedy brana jest właśnie wartość tablicowa {{Code|frame}}, jeśli jest ona taka, a gdy nie, to wtedy z tej funkcji tutaj nie korzystamy. Funkcja pobiera parametry ramki szablonu rodzica, a nie dziecka, a jeżeli w dziecku w ramce w wikikodzie w szablonie podamy specjalny parametr {{Parametr|wyspecjalizowana|tak}}, to wtedy ta funkcja ściąga parametry ramki. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobierzArgsParametry(frame, czy_nie_tablica_jako_tablica)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica transportu ramki. | 2 = {{Code|czy_nie_tablica_jako_tablica}} | _2 = Czy wartości nietablicowe umieszczać w jednoelemenowej tabeli. }} === Opis działania === Funkcja wykorzystuje wspomnianą powyżej funkcję do swojego działania, ona jest wtedy aktywowana, gdy zmienna {{Code|frame}} jest tablicą, i jest sprawdzane, czy ona posiada nazwany element o kluczu {{Code|args}}, i czy jest on tablicowy. Jeżeli wartością zmiennej {{Code|frame}} nie jest tablica, ale nie przybiera wartości {{Code|nil}}, to ona jest umieszczana w tablicy, jeżeli zmiennej {{Code|czy_nie_tablica_jako_tablica}} przydzielimy wartość {{Code|true}}, w przeciwnym wypadku zwracana jest ona w postaci niezmienionej, a jeżeli wartość tej zmiennej nie istnieje, to zwracana jest zwykła tablica pusta. Tą funkcją można sterować ze strony ramki tym właśnie specjalnym parametrem o wartości niepustej. === Przykład wywołania fubkcji z funkcją parametrów === W ramce podajemy argumenty wraz z tym specjalnym parametrem: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}} </syntaxhighlight> ==== Użycie funkcji parametrów ==== To wtedy w kodzie w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} w module o nazwie {{Code|Nazwa modułu}}, piszemy: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(frame); .... end; </syntaxhighlight> To wtedy w kodzie ściągane parametry ramki dziecka. === Wykorzystanie fukcji w różnych sytuacjach === ; Przypadek pierwszy{{dk}} Tę funkcję można równie dobrze wykorzystać do zwykłych tabel: <syntaxhighlight lang="lua"> local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(tabela); </syntaxhighlight> ; Drugi przypadek{{dk}} A w tym przypadku ta funkcja nic nie robi, tylko zmienna {{Code|args}} referencyjnie wskazuje na tablicę {{Code|tablica}}. Ale można ją wykorzystać, gdyby funkcja {{Code|Nazwa funkcji}}, była uruchomiona ze zwykłą tablicą, ale z możliwością, że to może być tablicą ramki {{Code|frame}} tablicy transportu, np.: <syntaxhighlight lang="lua"> --- Pierwsza możliwość; local wartosc1=p["Nazwa funkcji"](frame); -- Druga możliwość local wartosc2=p["Nazwa funkcji"]{["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; </syntaxhighlight> === Usunięcie niedogodności === Dla obu tych przypadków nie ma żadnej niedogodności, jak to występowała w {{Code|{{sr|#p.PobierzFrameEwentualnieParent(frame)|p=Parametry}}}}. === Parametr funkcji nietablicowy === Jeśliby do funkcji tablicy transportu dać wartość równą nie tablicy, to wtedy równoważnie możemy napisać: <syntaxhighlight lang="lua"> local wartosc="wartość"; local wynik=p["Nazwa funkcji"](wartosc); </syntaxhighlight> to wtedy definicję tej funkcji piszemy: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(frame,true); local wartosc=args[1]; end; </syntaxhighlight> lub równoważnie możemy zapisać: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); local wartosc=parametry_modul.PobierzArgsParametry(frame); end; </syntaxhighlight> === Brak parametrów funkcji === A jeżeli nie wsadziliśmy żadnej wartości do funkcji ramki tablicy transportu lub tą wartością jest {{Code|nil}}, wtedy: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"](); </syntaxhighlight> wtedy definicja tej funkcji wygląda: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); -- Zmienna: args, wskazuje na wartość, którą jest tablicą pustą, tzn. w tej tablicy nie ma wcale elementów; local args=parametry_modul.PobierzArgsParametry(frame); end; </syntaxhighlight> === Zmienna {{Code|args}} - alternatywny przypadek dla wartości tablicowych niż te bez drugiego parametru === Widzimy, że wtedy zmienna {{Code|args}} jest normalną pustą tablicą, i nie musimy wtedy wcale pisać poniżej, bo wtedy wychodzi w tym przypadku na to samo: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(frame,true); </syntaxhighlight> === Różnica drugiego parametru w przypadku wartości nietablicowych === Argument drugi w {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, który w naszym przypadku musi mieć wartość {{Code|true}}, a wtedy jest jedynie sens, gdy {{Code|frame}} nie jest tablicą, i gdy chcemy tą wartość umieścić w tablicy, a nie powtórzyć wartość, tzn. chcemy napisać: {{Code|{{(}}frame,{{)}}}}, w przeciwnym wypadku musilibyśmy napisać coś w rodzaju, zamiast tak spreparowanej tablicy: {{Code|frame}}, czyli: <syntaxhighlight lang="lua"> -- Pierwszy przypadek, gdy frame jest wartością nietablicową; local parametry_modul=require("Module:Parametry"); ... -- Zwracana wartość: args, to nic innego niż: {frame,}; local args=parametry_modul.PobierzArgsParametry(frame,true); ... -- Zwracana wartość: args, to nic innego niż: frame, a nie {frame,}, jak poprzednio; local args=parametry_modul.PobierzArgsParametry(frame); </syntaxhighlight> == {{Code|p.PobierzParametryRamki}} == Funkcja służy do ustawienia pewnych domyślnych dwóch pewnych funkcji służących do pobieranie danych z tabelki z pierwszej tej funkcji: * Jeżeli ona posiada klucz o wartości {{Code|args}}, ** to zwracana jest ta właśnie tablica jako argument pierwszej tej funkcji, jeżeli jest w ogóle tablicą, ** w przeciwnym wypadku zwracana jest ta oryginalna tablica, też jako argument tej funkcji, * w przeciwnym dalszym wypadku zwracana jest zwracana wartość ta, jako argument tej drugiej funkcji, która zwraca prawdziwą wartość z argumentu tylko za pierwszym razem, z tej funkcji, za następnym i dalszym razem {{Code|nil}}. Z tak utworzonej ogólnie większej funkcji wykorzystywana jest w budowie omawianej funkcji, która jest zwracana przez omawianą funkcję, która względem jego budowy wywołuje raz pierwszą albo drugą poprzednią wspomnianą funkcję zależną od rodzaju zmiennej {{Code|frame}}, która może być tabelką, ale nie musi być. Ta funkcja zwracana przez funkcję w nagłówku przyjmuje argument, która jest kluczem do tych wspomnianych, może że, * tabel (dokładnie, która ta może tabelka to zależy od formatu tej naszej rozważanej zmiennej), * a jeżeli to nie tabelka, co jest zwracane, to już zostało powiedziane. Definicja skrótowa tej funkcji jest: <syntaxhighlight lang="lua"> function p.PobierzParametryRamki(frame)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu. }} Weźmy ramkę sformułowaną w wikikodzie jako dziecko w szablonie rodzicu: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5}} </syntaxhighlight> === Funkcje, funkcją parametrów, z tablicią ramki lub one z podtablicą {{Code|args}} === To wtedy tablica ramki tablicy transportu posiada właśnie {{Code|frame}}, która jest tablicą, i na pewno posiada tablicę o nazwie {{Code|args}}, to wtedy tę funkcję wywołaną w ramce, która wywołuje funkcję w nagłówku, formułujemy: <syntaxhighlight lang="lua"> local p={}; local p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametryRamki=parametry_modul.PobierzParametryRamki(frame); ... end; </syntaxhighlight> ==== Przykład wywołania funkcji z funkcją parametrów z tablicą {{Code|args}} ==== Równie dobrze funkcję z ramki można wywołać w sposób, co wtedy ta funkcja też zostanie wywołana pozytywnie: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"]{args={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}}; </syntaxhighlight> W tej funkcji nie trzeba definiować funkcji fałszywej {{Code|getParent}}, w postaci: {{Code|getParent{{=}}function()end}}. Widzimi, że ta tablica posiada nazwę zmiennej tablicowej o nazwie {{Code|args}}, ale ona nie jest tablicą ramki tablicy transportu, ale tą tablicę możemy bezposrednio wsadzić w tą główną tablicę w samym argumencie funkcji. ==== Przykład wywołania z tablicą bez podtablicy {{Code|args}} ==== Równie dobrze możemy wywołać tę funkcję zdefiniowaną naszą w jakimś module w sposób: <syntaxhighlight lang="lua"> local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; local wynik=p["Nazwa funkcji"]{tabela); </syntaxhighlight> też ta funkcja prawidłowo się wywoła. W tym przypadku, jak i w przypadkach powyżej, wyniki uzyskuje się w następującym wywołaniach: <syntaxhighlight lang="lua"> --- Zmienna: wartosc1, przyjmuje wartość: "wartość1"; local wartosc1=PobierzParametryRamki("nazwa1"); --- Zmienna: wartosc2, przyjmuje wartość: "wartość2"; local wartosc2=PobierzParametryRamki("nazwa2"); --- Zmienna: wartosc3, przyjmuje wartość: "wartość3"; local wartosc3=PobierzParametryRamki(1); </syntaxhighlight> ==== Przykłąd wywołania funkcji z wartością nietablicową ==== W innym przypadku wywołań funkcji ramki jest wsadzenie do niej zwykłego nietablicowego elementu, może być też to wartość: {{Code|nil}}. A to wywołanie jest: <syntaxhighlight lang="lua"> local wartosc="wartość"; --Zmienna: wartosc, nie jest w tym przypadku tablicą; local wynik=p["Nazwa funkcji"](wartosc); </syntaxhighlight> === Wywołania funkcji parametrów bez argumentów - wiele kolejnych wywołań jednocześnie === Wtedy w tej ramce w celu uzyskania, jakikolwiek wartości jest przykład wywołania tej funkcji zwracanej przez funkcję w ramce z argumentem pustym. <syntaxhighlight lang="lua"> -- Zmienna: wartość1, przyjmuje wartość: "wartość"; Jeżeli ona, przyjmuje wartość: nil, to wywołanie rzuci: nil, i za każdym następny razem; local wartosc1=PobierzParametryRamki(); -- Zmienna: wartość2, przyjmuje wartość: nil; local wartosc2=PobierzParametryRamki(); </syntaxhighlight> W wywołaniach powinno dbać się o właściwą kolejność wywołań, bo argumentem funkcji z tablicy transportu może być zwykła tablicowa wartość. Najpierw uzyskujemy wartości nietablicowe, a później tablicowe, na wypadek niewiadomej {{Code|frame}} jakiego typu ma być wartość. === Dwa przypadki, parametr w tablicy, lub wartość nietablicowa funkcji === Też ta zmienna może istnieć pod kilkoma możliwymi kluczami, lub tą zmienną może być jedyny argument funkcji, która jest nietablicową wartością, wtedy ją się wywołuje jako dla przypadku, gdy parametr jest nietablicowy lub jest pod kluczem {{Code|tekst}}: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local tekst=parametry_modul.PobierzParametryRamki(frame)("tekst"); </syntaxhighlight> === Przypadek, gdy parametr funkcji nie jest tablicą === Lub chcemy tę funkcję wywołać bezparametrowo, gdy chcemy, by {{Code|frame}} nie była tablicą: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local tekst=parametry_modul.PobierzParametryRamki(frame)(); </syntaxhighlight> ==== Omówienie przypadku istnienia tego samego wariantu zmiennej raz podtablicą, a raz jako zmienna nietablicowa === * Wtedy ta zmienna w przedostatnim przykładzie jest pod wartością {{Code|tekst}}, gdy wartość {{Code|frame}} jest tablicą, * lub może być jedyną wartością, którą jest {{Code|frame}}, jako zmienna nietablicowa, wtedy ta zmienna też jest pod {{Code|tekst}}, ** ta funkcja uzyskana z: {{Code|{{sr|#p.PobierzParametryRamki(frame)|p=Parametry}}}}, wtedy może być wywołana tylko raz z nienilową wartością zwracaną, następnym razem zwraca wartość {{Code|nil}}, wtedy to dotyczy przedostatniego i ostatniego przykładu. === Jakma liczyć element funkcji w przypadku różnych jej parametrów === Jeżeli {{Code|frame}} jest nietablicowa, to wtedy wartość {{Code|tekst}} jest taka sama, co {{Code|frame}}. A jeżeli jest tablicą, to ta wartością jest {{Code|frame.args["tekst"]}}, lub gdy {{Code|args}} nie istnieje, lub istnieje, ale jest nietablicowa, to wtedy ta wartość jest {{Code|frame["tekst"]}}. === Parametry alternatywne funkcji - przykład wykorzystania funkcji parametrów === A gdy zmienne istnieją pod wieloma kluczami, lub gdy funkcję wywołano ze zmienną nietablicową, wtedy ogólnie możemy dla przykładu powiedzieć: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local PobierzParametryRamki=parametry_modul.PobierzParametryRamki(frame); local wartosc1=PobierzParametryRamki("nazwa1") or PobierzParametryRamki(1); local wartosc2=PobierzParametryRamki("nazwa2") or PobierzParametryRamki(2); local wartosc3=PobierzParametryRamki("nazwa3") or PobierzParametryRamki(3); </syntaxhighlight> * Wtedy ta zmienna jest pod kluczem, np.: {{Code|nazwa1}} lub {{Code|1}}, tablicy ramki {{Code|frame}} tablicy transportu, następne wywołania dla następnych kluczy też zrzucą pewne wartości, * lub jest ona zwykłą nietablicową wartością mogącą być równą, nawet {{Code|nil}}. ---- * Następne wywołania uzyskanej tak funkcji w przypadku, gdy {{Code|frame}} jest nietablicowy, rzucać będzie z samej definicji funkcji wartości {{Code|nil}}, czyli {{Code|wartosc2{{=}}wartosc3{{=}}nil}}, ale za to wartość {{Code|wartosc1}} nie musi być, ale może, wartością {{Code|nil}}, jeśli tą wartością jest, gdy {{Code|frame{{=}}nil}}, * w przeciwnym wypadku za pierwszym razem tej wartości nietablicowej uzyskamy wartość nie {{Code|nil}}, a za drugim i dalszym zawsze wartość {{Code|nil}}. == {{Code|p.PobierzElementNumerowanyZFrameLubTablicy}} == Definicja skrótowa funkcji jest z parametrem charakteryzującym pewien zestaw zmiennych {{Code|frame}}, * które nie musi być tablicą ramki tablicy transportu, tylko moze być innym parametrem, który jest tablicą parametrów podanych do funkcji, * nawet gdy parametrem podanym do funkcji, w której wykorzystujemy tą funkcję, jest jedyna zmienna będąca tablicą ramki. Ale z drugiej strony, tak nie musi być, może być to rozbudowany zestaw zmiennych, np. nazwanych i nienazwanych, którego wszystkie sposoby podawania łączymy jednym sposobem podawania. Mimo że parametry funkcji są parametrami nienazwanymi, mogą być one ponumerowane, ale zmienna w tablicy może przyjmować wartość tą samą na różne sposoby, raz w sposób nazwany, a za innym sposobem jako nienazwany. Ogólnie ostateczne parametry łączymy w dane parametry za pomocą jednego sposobu, tzn. za pomocą tej funkcji, i dla tak uzyskanej tablicy tworzymy funkcję zwracaną przez funkcję w nagłówku, która przyjmuje parametr, który jest kluczem tej uzyskanej tablicy. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobierzElementNumerowanyZFrameLubTablicy(frame)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu. }} Weźmy najprostszy sposób realizacji tej funkcji, w realizacji: {{Code|1-1, 2-2, 3-3}}, czyli ten opis jest zaraz poniżej. === Sposoby wywołania funkcji === ; Pierwszy sposób{{dk}} Weźmy funkcję, którą można wywoływać z wieloma parametrami, jak i w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, którą przykładowo piszemy jego wywołanie wewnątrz innej funkcji na pięć sposobów, czyli teraz pierwszy sposób z tylko z parametrem, więc tablicą ramki tablicy transportu wywodzącą się z ramki uruchomioną w wikikodzie w jakimś szablonie rodzicu: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"](frame); </syntaxhighlight> ; Drugi sposób{{dk}} A teraz drugi sposób, pisząc, bezpośrednio inaczej, formułując wywołanie tej funkcji, używając zmiennych tablicowych tablicy ramki, ale to nie jest tak naprawdę tablica ramka tablicy transportu, tylko parametr podany bezpośrednio do funkcji, tak jak się to robi w języku {{lpg|Lua}}, nie jak w przykładzie powyżej, więc: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"]{args={"wartość1","wartość2","wartość3",},}; </syntaxhighlight> ; Trzeci sposób{{dk}} Lub równoważnie, pisząc, nie używając zmiennej {{Code|args}}: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"]{"wartość1","wartość2","wartość3",}; </syntaxhighlight> ; Czwarty sposób{{dk}} Albo te parametry wsadzając do funkcji: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"]("wartość1","wartość2","wartość3"); </syntaxhighlight> ; Piąty spssób{{dk}} Można też wywołać to wszystko w ramce, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w wikikpdzie, wtedy wsadzając parametry do ramki: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|wartość1|wartość2|wartość3}} </syntaxhighlight> === Omówienie pobierania takich parmetrów === A jak połączyć wszystkie te pięć sposobów, posługiwać się tymi sposobami wewnątrz funkcji {{Code|Nazwa funkcji}} w sposób jednolity, jedynie wtedy należy skorzystać z funkcji z definiowaną w jakimś module w sposób: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(...) local tablica_prametrow_funkcji={...}; local parametry_modul=require("Module:Parametry"); local PobierzElementNumerowanyZFrameLubTablicy=parametry_modul.PobierzElementNumerowanyZFrameLubTablicy(tablica_prametrow_funkcji); ... end; </syntaxhighlight> Wtedy za pomocą zmiennej {{Code|PobierzElementNumerowanyZFrameLubTablicy}} dostaliśmy się do funkcji, która przyjmuje jedyny parametr, aby dostać się do elementów tablicy uzyskanej w wewnątrz tej funkcji, zdefiniowaną w tablicy {{Code|tablica_prametrow_funkcji}}, która jest nic innym jak zestawem parametrów w funkcji: {{Code|Nazwa funkcji}}. * W pierwszym i drugim sposobem zmienną tą nazwijmy to jako {{Code|args}}, jest zmienną z podtablicy innego {{Code|args}} przekazanych jako parametr tablicy do funkcji, * w trzecim sposobie tą zmienną jest cała tablica, * a czwartym jest zestaw parametrów ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. A czym się różnią się te sposoby, a więc te sposoby można powiązać jedną tylko funkcją powiedzianą w nagłówku według przykładu podaną zaraz powyżej, wtedy możemy dostawać się do tych samych zmiennych o takich samych nazwach i wartościach, ale w różnych reprezentacjach na różne sposoby, wtedy można powiedzieć, że: <syntaxhighlight lang="lua"> args[1]="wartość1"; args[2]="wartość2"; args[3]="wartość3"; </syntaxhighlight> Czyli w wyniku działania funkcji w nagłówku, otrzymamy funkcję zwracającą te wartości, która operuje na tej tablicy, której wynikiem jest zestaw zmiennych ponumerowanych, ogólnie nienazwanych, której wartości odpowiadają te podane w ramce ostatniej powyżej. Na podstawie tego wiemy, jak działa funkcja ta z nagłówka. === Nazwy alternatywne danych parametrów funkcji ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}} === Pisząc w inny sposób, można też wskazywać: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(...) local tablica_prametrow_funkcji={...}; local parametry_modul=require("Module:Parametry"); local PobierzElementNumerowanyZFrameLubTablicy=parametry_modul.PobierzElementNumerowanyZFrameLubTablicy(tablica_prametrow_funkcji); local wartosc1=PobierzElementNumerowanyZFrameLubTablicy("nazwa1") or PobierzElementNumerowanyZFrameLubTablicy(1); local wartosc2=PobierzElementNumerowanyZFrameLubTablicy("nazwa2") or PobierzElementNumerowanyZFrameLubTablicy(2); local wartosc3=PobierzElementNumerowanyZFrameLubTablicy("nazwa3") or PobierzElementNumerowanyZFrameLubTablicy(3); end; </syntaxhighlight> Zmienne w przykładzie o kluczach: {{Code|nazwa1}}, {{Code|nazwa2}} i {{Code|nazwa3}}, posiadające pewne swoje wartości, to są zmienne w tablicy {{Code|tablica_prametrow_funkcji}}, podane też jako zmienne, jako pewne argumenty tablicy, który są w tej funkcji zwracanej jako argument (parametr) funkcji, * jeżeli argumenty podano w postaci jednego parametru funkcji w postaci pewnej tablicy z np. elementami nazwanymi, * lub jako wiele argumentów w ramce, w wikikodzie, w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w pewnym szablonie, * a rozpatrując dalej elementy względem ich nazw, np. alternatywnych, to te numery mogą być kolejo do nazw ich odpowiedników nazwanych, które w przykładzie powyżej, mają pierwszeństwo, ale tak nie musi być, te parametry: {{Code|1}}, {{Code|2}} i {{Code|3}}, to jest numer parametru, jeżeli argumenty do funkcji podano w postaci wielu jego parametrów. == {{Code|p.PobierzParametr}} == Ta funkcja zwraca znów inną funkcję, która ma jedyny parametr, mówiący jakiego parametru poszukujemy, co jest wyjaśnione w definicji funkcji z nagłówka, że ona zwraca tą właśnie funkcje. Definicja skrótowa dunkcji: <syntaxhighlight lang="lua"> function p.PobierzParametr(frame,czy_frame_lub_parent,czy_frame) ... return function(nazwa) return __pobierz_parametr_table_args(nazwa); end; end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu. | 2 = {{Code|czy_frame_lub_parent}} i {{Code|czy_frame}} | _2 = Parametry logiczne dodatkowe funkcji. }} === Wartośc zwracanainumer metody === Funkcja zwraca jednocześnie dwie wartości, ta zwrócona z funkcji z nagłówka, prawdziwą wartość, i numer metody w postaci: {{Code|return wartosc, numer_metody}}. === Opis zwracanych elementów przez funkcję zwracaną - różnemetody zwracania, jak je wykorzystać === Ta funkcja zwracana ma w swojej definicji inną jeszcze funkcję z tym samym parametrem, co jego rodzic, i to jest za każdym razem inna funkcja w zależności z jakim typem danych się posługujemy {{Code|frame}} i jakie podaliśmy parametry. Gdy warunkiem, gdy zmienna {{Code|frame}} jest tablicą, czyli te zmienne druga: {{Code|czy_frame_lub_parent}} (jeżeli funkcja jest uruchomiona w ramce w szablonie, jeżeli ma wartość {{Code|true}}, to ona wybiera raz parametr z: {{Code|frame.args[nazwa or 1]}}, a za innym razem z {{Code|pf.args[nazwa or 1]}}, gdzie {{Code|pf{{=}}frame:getParent()}}, tutaj jest zwracana wartość: {{Code|return wartosc,2}}). Czy trzecia: {{Code|czy_frame}} (która mówi, jeżeli funkcję uruchomiono w ramce, ale przy wartości prawdziwej tego pierwszego podanego parametru, czyli {{Code|true}}, wybierana jest zawsze wartość {{Code|frame.args[nazwa or 1}}}, w przeciwnym wypadku uruchamiana jest funkcja {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, tutaj zwracana jest wartość {{Code|return wartosc,1}}). Jeżeli wartością {{Code|frame}} jest wartość nietablicowa, ale niebędącą wartością {{Code|nil}}, wtedy ustawiana jest funkcja, która tylko za pierwszym razem zwraca nienilową wartość {{Code|return wartosc,0}}, a później zwraca wartość {{Code|return nil,0}}. Gdy wartością {{Code|frame}} jest {{Code|nil}}, to funkcja zawsze wraca tą wartość {{Code|return nil,0}}. Powyższy sposób działa również dobrze, gdy zdefiniujemy w parametrach funkcji fałszywą funkcję {{Code|frame.getParent}}. Gdy funkcja nie jest uruchamiana w ramce lub funkcja {{Code|frame.getParent}} nie jest zdefiniowana, to wtedy funkcja wchodzi zawsze w ten jej krok, jakby {{Code|czy_frame_lub_parent}} było {{Code|false}} według tego powyżej, to wtedy brana jest zmienna {{Code|czy_frame}}, i jaką wartość ona przyjmuje. === Nazwy alternatywne parametrów === Funkcję pisze się według sposobu, którą się wywołuje według: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame); local wartosc1=PobierzParametr("nazwa1") or PobierzParametr(1); local wartosc2=PobierzParametr("nazwa2") or PobierzParametr(2); local wartosc3=PobierzParametr("nazwa3") or PobierzParametr(3); </syntaxhighlight> Na wypadek wartości nietabelowej, tą wartość zapisuje się jako pierwszą w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a dla wartości tabelowych, jaka jest kolejność to jest obojętne, byle by to było sensowne. === Wywołania funkcji === Tę funkcję podobnie się wywołuje jak funkcję: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}. Wartością {{Code|frame}} nie musi być tablica ramki tablicy transportu, równie dobrze może być to dowolna tablica lub wartość nietablicowa. Weźmy ramkę, w której uruchamiamy funkcję ramki: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}} </syntaxhighlight> === Przykłady wykorzystania funkcji === ; Przykład pierwszy{{dk}} Ona musi być wywołana z parametrem {{Parametr|wyspecjalizowana|tak}}, jako podpowiedź, że liczą się parametry ramki dziecka, a nie jego rodzica, czyli szablonu. Wtedy funkcję {{Code|Nazwa funkcji}} definiujemy: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame,true); ... end; </syntaxhighlight> Wtedy parametr {{Parametr|wyspecjalizowana|tak}} jest ignorowany, a przy wartości {{Code|false}} drugiego parametru funkcji, czyli wywołania: {{Code|local PobierzParametr{{=}}parametry_modul.PobierzParametr(frame,false);}}, już nie, ale nie zawsze. W takim przypadku według powyższego przykładu raz jest brana wartość, jeżeli istnieje, z {{Code|frame.args}}, a jak ona nie istnieje, to wtedy z: {{Code|pf.args}}. ; Przykład drugi{{dk}} Weźmy inny przypadek: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame,false,true); ... end; </syntaxhighlight> Przy tym też parametr: {{Parametr|wyspecjalizowana|tak}}, jest ignorowany, wtedy jest zawsze wybierana do rozważań tablica: {{Code|frame.args}}. ; Przykład trzeci{{dk}} Znów w innym przypadku, gdzie parametr: {{Parametr|wyspecjalizowana|tak}}, jest zawsze rozważany w naszym wypadku: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame,false,false); ... end; </syntaxhighlight> To to wywołanie, wtedy dokładnie działa jak funkcja: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, a zwrócona funkcja: {{Code|PobierzParametr}} pobiera elementy z tak uzyskanej tablicy {{Code|args}} poprzez nią. === Przypadek nietablicowego charakteru parametrów funkcji === W przypadku, gdy {{Code|frame}} nie jest tablicą, wtedy parametry: {{Code|czy_frame_lub_parent}} i {{Code|czy_frame}}, są w takim przypadku zawsze ignorowane, ale muszą być ustawione na wypadek, gdyby do funkcji {{Code|Nazwa funkcji}} wsadzono tablicę, np. z ramki, tzn. tablicę ramki funkcji tablicy transportu. === Ogólny przypadek, często stosowany === Najprostszym często ogólnym przykładem, który prawie zawsze jest stosowany: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame); ... end; </syntaxhighlight> Wtedy parametr: {{Parametr|wyspecjalizowana|tak}}, jest prawie zawsze nieignorowany, ale nie zawsze. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> cu3mhulbp6jjf05kzre3ai7q6j8lh6b 555740 555739 2026-09-11T19:38:36Z Persino 2851 /* Funkcje, funkcją parametrów, z tablicią ramki lub one z podtablicą {{Code|args}} */ 555740 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} Są tutaj przedstawione funkcje parametrów. == {{Code|p.PobierzFrameEwentualnieParent}} == Argument tej funkcji {{Code|frame}} koniecznie musi być tablicą, w przypadku przeciwnym wywoła to błąd języka {{lpg|Lua}}, że z wartości nietabelowej chcemy wyliczyć jego nieistniejący element {{Code|getParent}}, który ma prawo nie być. Funkcja pobiera parametry ramki szablonu rodzica, a nie dziecka, a jeżeli w dziecku w ramce w wikikodzie w szablonie podamy specjalny parametr {{Parametr|wyspecjalizowana|tak}}, to wtedy ta funkcja ściąga parametry ramki. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobierzFrameEwentualnieParent(frame)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu. }} === Sterowanie funkcją === Tą funkcją można sterować ze strony ramki tym właśnie specjalnym parametrem o wartości niepustej, którą jest {{Parametr|wyspecjalizowana|tak}}. ==== Przykłady wykorzystania z parametrem sterującym ==== W ramce podajemy argumenty wraz z tym specjalnym parametrem: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}} </syntaxhighlight> To wtedy w kodzie w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} w module o nazwie {{Code|Nazwa modułu}}, piszemy: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzFrameEwentualnieParent(frame).args; .... end; </syntaxhighlight> To wtedy w kodzie ściągane parametry ramki dziecka. === Pobieranie oryginalnej tablicy === Tę funkcję można równie dobrze wykorzystać do zwykłych tabel: <syntaxhighlight lang="lua"> local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzFrameEwentualnieParent(tabela); </syntaxhighlight> === Możliwość tej samej funkcji uruchomioną w ramce lub z podaniem do niej pewnego zestawu parametrów w postaci tablicy === A w tym przypadku ta funkcja nic nie robi, tylko zmienna {{Code|args}} referencyjnie wskazuje na tablicę {{Code|tablica}}. Ale można ją wykorzystać, gdy by funkcja {{Code|Nazwa funkcji}}, była uruchomiona ze zwykłą tablicą, ale z możliwością, że to może być tablicą ramki {{Code|frame}} tablicy transportu, np.: <syntaxhighlight lang="lua"> --- Pierwsza możliwość; local wartosc1=p["Nazwa funkcji"](frame); -- Druga możliwość local wartosc2=p["Nazwa funkcji"]{["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; </syntaxhighlight> === Niedogodności stosowania z funkcji === Dla obu jest taka niedogodność, że jedynie jest taka nieprawidłowość, że w przypadku parametru tablicy ramki tablicy transportu należy podawać uzyskany element {{Code|args}}, a w przypadku zwykłej tablicy już nie, tą niedokodność rozwiązuje funkcja: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}. == {{Code|p.PobierzArgsParametry}} == Argument tej funkcji {{Code|frame}} koniecznie nie musi być tablicą, bo wtedy nie wywoła to błędu języka {{lpg|Lua}}, że z wartości nietabelowej chcemy wyliczyć jego niepusty element {{Code|getParent}}, bo przedtem sprawdzana jest w tej funkcji, czy jest to tablica. W definicji tej funkcji zmienna uzyskana z funkcji: {{Code|{{sr|#p.PobierzFrameEwentualnieParent(frame)|p=Parametry}}}}, a jeśli jej składowa {{Code|args}} jest tablicą, to jest właśnie ona zwracana, a jeśli istnieje, ale nie jest tablicą, lub ona nie istnieje, to wtedy brana jest właśnie wartość tablicowa {{Code|frame}}, jeśli jest ona taka, a gdy nie, to wtedy z tej funkcji tutaj nie korzystamy. Funkcja pobiera parametry ramki szablonu rodzica, a nie dziecka, a jeżeli w dziecku w ramce w wikikodzie w szablonie podamy specjalny parametr {{Parametr|wyspecjalizowana|tak}}, to wtedy ta funkcja ściąga parametry ramki. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobierzArgsParametry(frame, czy_nie_tablica_jako_tablica)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica transportu ramki. | 2 = {{Code|czy_nie_tablica_jako_tablica}} | _2 = Czy wartości nietablicowe umieszczać w jednoelemenowej tabeli. }} === Opis działania === Funkcja wykorzystuje wspomnianą powyżej funkcję do swojego działania, ona jest wtedy aktywowana, gdy zmienna {{Code|frame}} jest tablicą, i jest sprawdzane, czy ona posiada nazwany element o kluczu {{Code|args}}, i czy jest on tablicowy. Jeżeli wartością zmiennej {{Code|frame}} nie jest tablica, ale nie przybiera wartości {{Code|nil}}, to ona jest umieszczana w tablicy, jeżeli zmiennej {{Code|czy_nie_tablica_jako_tablica}} przydzielimy wartość {{Code|true}}, w przeciwnym wypadku zwracana jest ona w postaci niezmienionej, a jeżeli wartość tej zmiennej nie istnieje, to zwracana jest zwykła tablica pusta. Tą funkcją można sterować ze strony ramki tym właśnie specjalnym parametrem o wartości niepustej. === Przykład wywołania fubkcji z funkcją parametrów === W ramce podajemy argumenty wraz z tym specjalnym parametrem: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}} </syntaxhighlight> ==== Użycie funkcji parametrów ==== To wtedy w kodzie w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} w module o nazwie {{Code|Nazwa modułu}}, piszemy: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(frame); .... end; </syntaxhighlight> To wtedy w kodzie ściągane parametry ramki dziecka. === Wykorzystanie fukcji w różnych sytuacjach === ; Przypadek pierwszy{{dk}} Tę funkcję można równie dobrze wykorzystać do zwykłych tabel: <syntaxhighlight lang="lua"> local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(tabela); </syntaxhighlight> ; Drugi przypadek{{dk}} A w tym przypadku ta funkcja nic nie robi, tylko zmienna {{Code|args}} referencyjnie wskazuje na tablicę {{Code|tablica}}. Ale można ją wykorzystać, gdyby funkcja {{Code|Nazwa funkcji}}, była uruchomiona ze zwykłą tablicą, ale z możliwością, że to może być tablicą ramki {{Code|frame}} tablicy transportu, np.: <syntaxhighlight lang="lua"> --- Pierwsza możliwość; local wartosc1=p["Nazwa funkcji"](frame); -- Druga możliwość local wartosc2=p["Nazwa funkcji"]{["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; </syntaxhighlight> === Usunięcie niedogodności === Dla obu tych przypadków nie ma żadnej niedogodności, jak to występowała w {{Code|{{sr|#p.PobierzFrameEwentualnieParent(frame)|p=Parametry}}}}. === Parametr funkcji nietablicowy === Jeśliby do funkcji tablicy transportu dać wartość równą nie tablicy, to wtedy równoważnie możemy napisać: <syntaxhighlight lang="lua"> local wartosc="wartość"; local wynik=p["Nazwa funkcji"](wartosc); </syntaxhighlight> to wtedy definicję tej funkcji piszemy: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(frame,true); local wartosc=args[1]; end; </syntaxhighlight> lub równoważnie możemy zapisać: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); local wartosc=parametry_modul.PobierzArgsParametry(frame); end; </syntaxhighlight> === Brak parametrów funkcji === A jeżeli nie wsadziliśmy żadnej wartości do funkcji ramki tablicy transportu lub tą wartością jest {{Code|nil}}, wtedy: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"](); </syntaxhighlight> wtedy definicja tej funkcji wygląda: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); -- Zmienna: args, wskazuje na wartość, którą jest tablicą pustą, tzn. w tej tablicy nie ma wcale elementów; local args=parametry_modul.PobierzArgsParametry(frame); end; </syntaxhighlight> === Zmienna {{Code|args}} - alternatywny przypadek dla wartości tablicowych niż te bez drugiego parametru === Widzimy, że wtedy zmienna {{Code|args}} jest normalną pustą tablicą, i nie musimy wtedy wcale pisać poniżej, bo wtedy wychodzi w tym przypadku na to samo: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(frame,true); </syntaxhighlight> === Różnica drugiego parametru w przypadku wartości nietablicowych === Argument drugi w {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, który w naszym przypadku musi mieć wartość {{Code|true}}, a wtedy jest jedynie sens, gdy {{Code|frame}} nie jest tablicą, i gdy chcemy tą wartość umieścić w tablicy, a nie powtórzyć wartość, tzn. chcemy napisać: {{Code|{{(}}frame,{{)}}}}, w przeciwnym wypadku musilibyśmy napisać coś w rodzaju, zamiast tak spreparowanej tablicy: {{Code|frame}}, czyli: <syntaxhighlight lang="lua"> -- Pierwszy przypadek, gdy frame jest wartością nietablicową; local parametry_modul=require("Module:Parametry"); ... -- Zwracana wartość: args, to nic innego niż: {frame,}; local args=parametry_modul.PobierzArgsParametry(frame,true); ... -- Zwracana wartość: args, to nic innego niż: frame, a nie {frame,}, jak poprzednio; local args=parametry_modul.PobierzArgsParametry(frame); </syntaxhighlight> == {{Code|p.PobierzParametryRamki}} == Funkcja służy do ustawienia pewnych domyślnych dwóch pewnych funkcji służących do pobieranie danych z tabelki z pierwszej tej funkcji: * Jeżeli ona posiada klucz o wartości {{Code|args}}, ** to zwracana jest ta właśnie tablica jako argument pierwszej tej funkcji, jeżeli jest w ogóle tablicą, ** w przeciwnym wypadku zwracana jest ta oryginalna tablica, też jako argument tej funkcji, * w przeciwnym dalszym wypadku zwracana jest zwracana wartość ta, jako argument tej drugiej funkcji, która zwraca prawdziwą wartość z argumentu tylko za pierwszym razem, z tej funkcji, za następnym i dalszym razem {{Code|nil}}. Z tak utworzonej ogólnie większej funkcji wykorzystywana jest w budowie omawianej funkcji, która jest zwracana przez omawianą funkcję, która względem jego budowy wywołuje raz pierwszą albo drugą poprzednią wspomnianą funkcję zależną od rodzaju zmiennej {{Code|frame}}, która może być tabelką, ale nie musi być. Ta funkcja zwracana przez funkcję w nagłówku przyjmuje argument, która jest kluczem do tych wspomnianych, może że, * tabel (dokładnie, która ta może tabelka to zależy od formatu tej naszej rozważanej zmiennej), * a jeżeli to nie tabelka, co jest zwracane, to już zostało powiedziane. Definicja skrótowa tej funkcji jest: <syntaxhighlight lang="lua"> function p.PobierzParametryRamki(frame)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu. }} Weźmy ramkę sformułowaną w wikikodzie jako dziecko w szablonie rodzicu: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5}} </syntaxhighlight> === Funkcje, z funkcją parametrów, z tablicią ramki lub one z podtablicą {{Code|args}} === To wtedy tablica ramki tablicy transportu posiada właśnie {{Code|frame}}, która jest tablicą, i na pewno posiada tablicę o nazwie {{Code|args}}, to wtedy tę funkcję wywołaną w ramce, która wywołuje funkcję w nagłówku, formułujemy: <syntaxhighlight lang="lua"> local p={}; local p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametryRamki=parametry_modul.PobierzParametryRamki(frame); ... end; </syntaxhighlight> ==== Przykład wywołania funkcji z funkcją parametrów z tablicą {{Code|args}} ==== Równie dobrze funkcję z ramki można wywołać w sposób, co wtedy ta funkcja też zostanie wywołana pozytywnie: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"]{args={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}}; </syntaxhighlight> W tej funkcji nie trzeba definiować funkcji fałszywej {{Code|getParent}}, w postaci: {{Code|getParent{{=}}function()end}}. Widzimi, że ta tablica posiada nazwę zmiennej tablicowej o nazwie {{Code|args}}, ale ona nie jest tablicą ramki tablicy transportu, ale tą tablicę możemy bezposrednio wsadzić w tą główną tablicę w samym argumencie funkcji. ==== Przykład wywołania z tablicą bez podtablicy {{Code|args}} ==== Równie dobrze możemy wywołać tę funkcję zdefiniowaną naszą w jakimś module w sposób: <syntaxhighlight lang="lua"> local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; local wynik=p["Nazwa funkcji"]{tabela); </syntaxhighlight> też ta funkcja prawidłowo się wywoła. W tym przypadku, jak i w przypadkach powyżej, wyniki uzyskuje się w następującym wywołaniach: <syntaxhighlight lang="lua"> --- Zmienna: wartosc1, przyjmuje wartość: "wartość1"; local wartosc1=PobierzParametryRamki("nazwa1"); --- Zmienna: wartosc2, przyjmuje wartość: "wartość2"; local wartosc2=PobierzParametryRamki("nazwa2"); --- Zmienna: wartosc3, przyjmuje wartość: "wartość3"; local wartosc3=PobierzParametryRamki(1); </syntaxhighlight> ==== Przykłąd wywołania funkcji z wartością nietablicową ==== W innym przypadku wywołań funkcji ramki jest wsadzenie do niej zwykłego nietablicowego elementu, może być też to wartość: {{Code|nil}}. A to wywołanie jest: <syntaxhighlight lang="lua"> local wartosc="wartość"; --Zmienna: wartosc, nie jest w tym przypadku tablicą; local wynik=p["Nazwa funkcji"](wartosc); </syntaxhighlight> === Wywołania funkcji parametrów bez argumentów - wiele kolejnych wywołań jednocześnie === Wtedy w tej ramce w celu uzyskania, jakikolwiek wartości jest przykład wywołania tej funkcji zwracanej przez funkcję w ramce z argumentem pustym. <syntaxhighlight lang="lua"> -- Zmienna: wartość1, przyjmuje wartość: "wartość"; Jeżeli ona, przyjmuje wartość: nil, to wywołanie rzuci: nil, i za każdym następny razem; local wartosc1=PobierzParametryRamki(); -- Zmienna: wartość2, przyjmuje wartość: nil; local wartosc2=PobierzParametryRamki(); </syntaxhighlight> W wywołaniach powinno dbać się o właściwą kolejność wywołań, bo argumentem funkcji z tablicy transportu może być zwykła tablicowa wartość. Najpierw uzyskujemy wartości nietablicowe, a później tablicowe, na wypadek niewiadomej {{Code|frame}} jakiego typu ma być wartość. === Dwa przypadki, parametr w tablicy, lub wartość nietablicowa funkcji === Też ta zmienna może istnieć pod kilkoma możliwymi kluczami, lub tą zmienną może być jedyny argument funkcji, która jest nietablicową wartością, wtedy ją się wywołuje jako dla przypadku, gdy parametr jest nietablicowy lub jest pod kluczem {{Code|tekst}}: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local tekst=parametry_modul.PobierzParametryRamki(frame)("tekst"); </syntaxhighlight> === Przypadek, gdy parametr funkcji nie jest tablicą === Lub chcemy tę funkcję wywołać bezparametrowo, gdy chcemy, by {{Code|frame}} nie była tablicą: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local tekst=parametry_modul.PobierzParametryRamki(frame)(); </syntaxhighlight> ==== Omówienie przypadku istnienia tego samego wariantu zmiennej raz podtablicą, a raz jako zmienna nietablicowa === * Wtedy ta zmienna w przedostatnim przykładzie jest pod wartością {{Code|tekst}}, gdy wartość {{Code|frame}} jest tablicą, * lub może być jedyną wartością, którą jest {{Code|frame}}, jako zmienna nietablicowa, wtedy ta zmienna też jest pod {{Code|tekst}}, ** ta funkcja uzyskana z: {{Code|{{sr|#p.PobierzParametryRamki(frame)|p=Parametry}}}}, wtedy może być wywołana tylko raz z nienilową wartością zwracaną, następnym razem zwraca wartość {{Code|nil}}, wtedy to dotyczy przedostatniego i ostatniego przykładu. === Jakma liczyć element funkcji w przypadku różnych jej parametrów === Jeżeli {{Code|frame}} jest nietablicowa, to wtedy wartość {{Code|tekst}} jest taka sama, co {{Code|frame}}. A jeżeli jest tablicą, to ta wartością jest {{Code|frame.args["tekst"]}}, lub gdy {{Code|args}} nie istnieje, lub istnieje, ale jest nietablicowa, to wtedy ta wartość jest {{Code|frame["tekst"]}}. === Parametry alternatywne funkcji - przykład wykorzystania funkcji parametrów === A gdy zmienne istnieją pod wieloma kluczami, lub gdy funkcję wywołano ze zmienną nietablicową, wtedy ogólnie możemy dla przykładu powiedzieć: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local PobierzParametryRamki=parametry_modul.PobierzParametryRamki(frame); local wartosc1=PobierzParametryRamki("nazwa1") or PobierzParametryRamki(1); local wartosc2=PobierzParametryRamki("nazwa2") or PobierzParametryRamki(2); local wartosc3=PobierzParametryRamki("nazwa3") or PobierzParametryRamki(3); </syntaxhighlight> * Wtedy ta zmienna jest pod kluczem, np.: {{Code|nazwa1}} lub {{Code|1}}, tablicy ramki {{Code|frame}} tablicy transportu, następne wywołania dla następnych kluczy też zrzucą pewne wartości, * lub jest ona zwykłą nietablicową wartością mogącą być równą, nawet {{Code|nil}}. ---- * Następne wywołania uzyskanej tak funkcji w przypadku, gdy {{Code|frame}} jest nietablicowy, rzucać będzie z samej definicji funkcji wartości {{Code|nil}}, czyli {{Code|wartosc2{{=}}wartosc3{{=}}nil}}, ale za to wartość {{Code|wartosc1}} nie musi być, ale może, wartością {{Code|nil}}, jeśli tą wartością jest, gdy {{Code|frame{{=}}nil}}, * w przeciwnym wypadku za pierwszym razem tej wartości nietablicowej uzyskamy wartość nie {{Code|nil}}, a za drugim i dalszym zawsze wartość {{Code|nil}}. == {{Code|p.PobierzElementNumerowanyZFrameLubTablicy}} == Definicja skrótowa funkcji jest z parametrem charakteryzującym pewien zestaw zmiennych {{Code|frame}}, * które nie musi być tablicą ramki tablicy transportu, tylko moze być innym parametrem, który jest tablicą parametrów podanych do funkcji, * nawet gdy parametrem podanym do funkcji, w której wykorzystujemy tą funkcję, jest jedyna zmienna będąca tablicą ramki. Ale z drugiej strony, tak nie musi być, może być to rozbudowany zestaw zmiennych, np. nazwanych i nienazwanych, którego wszystkie sposoby podawania łączymy jednym sposobem podawania. Mimo że parametry funkcji są parametrami nienazwanymi, mogą być one ponumerowane, ale zmienna w tablicy może przyjmować wartość tą samą na różne sposoby, raz w sposób nazwany, a za innym sposobem jako nienazwany. Ogólnie ostateczne parametry łączymy w dane parametry za pomocą jednego sposobu, tzn. za pomocą tej funkcji, i dla tak uzyskanej tablicy tworzymy funkcję zwracaną przez funkcję w nagłówku, która przyjmuje parametr, który jest kluczem tej uzyskanej tablicy. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobierzElementNumerowanyZFrameLubTablicy(frame)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu. }} Weźmy najprostszy sposób realizacji tej funkcji, w realizacji: {{Code|1-1, 2-2, 3-3}}, czyli ten opis jest zaraz poniżej. === Sposoby wywołania funkcji === ; Pierwszy sposób{{dk}} Weźmy funkcję, którą można wywoływać z wieloma parametrami, jak i w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, którą przykładowo piszemy jego wywołanie wewnątrz innej funkcji na pięć sposobów, czyli teraz pierwszy sposób z tylko z parametrem, więc tablicą ramki tablicy transportu wywodzącą się z ramki uruchomioną w wikikodzie w jakimś szablonie rodzicu: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"](frame); </syntaxhighlight> ; Drugi sposób{{dk}} A teraz drugi sposób, pisząc, bezpośrednio inaczej, formułując wywołanie tej funkcji, używając zmiennych tablicowych tablicy ramki, ale to nie jest tak naprawdę tablica ramka tablicy transportu, tylko parametr podany bezpośrednio do funkcji, tak jak się to robi w języku {{lpg|Lua}}, nie jak w przykładzie powyżej, więc: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"]{args={"wartość1","wartość2","wartość3",},}; </syntaxhighlight> ; Trzeci sposób{{dk}} Lub równoważnie, pisząc, nie używając zmiennej {{Code|args}}: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"]{"wartość1","wartość2","wartość3",}; </syntaxhighlight> ; Czwarty sposób{{dk}} Albo te parametry wsadzając do funkcji: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"]("wartość1","wartość2","wartość3"); </syntaxhighlight> ; Piąty spssób{{dk}} Można też wywołać to wszystko w ramce, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w wikikpdzie, wtedy wsadzając parametry do ramki: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|wartość1|wartość2|wartość3}} </syntaxhighlight> === Omówienie pobierania takich parmetrów === A jak połączyć wszystkie te pięć sposobów, posługiwać się tymi sposobami wewnątrz funkcji {{Code|Nazwa funkcji}} w sposób jednolity, jedynie wtedy należy skorzystać z funkcji z definiowaną w jakimś module w sposób: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(...) local tablica_prametrow_funkcji={...}; local parametry_modul=require("Module:Parametry"); local PobierzElementNumerowanyZFrameLubTablicy=parametry_modul.PobierzElementNumerowanyZFrameLubTablicy(tablica_prametrow_funkcji); ... end; </syntaxhighlight> Wtedy za pomocą zmiennej {{Code|PobierzElementNumerowanyZFrameLubTablicy}} dostaliśmy się do funkcji, która przyjmuje jedyny parametr, aby dostać się do elementów tablicy uzyskanej w wewnątrz tej funkcji, zdefiniowaną w tablicy {{Code|tablica_prametrow_funkcji}}, która jest nic innym jak zestawem parametrów w funkcji: {{Code|Nazwa funkcji}}. * W pierwszym i drugim sposobem zmienną tą nazwijmy to jako {{Code|args}}, jest zmienną z podtablicy innego {{Code|args}} przekazanych jako parametr tablicy do funkcji, * w trzecim sposobie tą zmienną jest cała tablica, * a czwartym jest zestaw parametrów ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. A czym się różnią się te sposoby, a więc te sposoby można powiązać jedną tylko funkcją powiedzianą w nagłówku według przykładu podaną zaraz powyżej, wtedy możemy dostawać się do tych samych zmiennych o takich samych nazwach i wartościach, ale w różnych reprezentacjach na różne sposoby, wtedy można powiedzieć, że: <syntaxhighlight lang="lua"> args[1]="wartość1"; args[2]="wartość2"; args[3]="wartość3"; </syntaxhighlight> Czyli w wyniku działania funkcji w nagłówku, otrzymamy funkcję zwracającą te wartości, która operuje na tej tablicy, której wynikiem jest zestaw zmiennych ponumerowanych, ogólnie nienazwanych, której wartości odpowiadają te podane w ramce ostatniej powyżej. Na podstawie tego wiemy, jak działa funkcja ta z nagłówka. === Nazwy alternatywne danych parametrów funkcji ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}} === Pisząc w inny sposób, można też wskazywać: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(...) local tablica_prametrow_funkcji={...}; local parametry_modul=require("Module:Parametry"); local PobierzElementNumerowanyZFrameLubTablicy=parametry_modul.PobierzElementNumerowanyZFrameLubTablicy(tablica_prametrow_funkcji); local wartosc1=PobierzElementNumerowanyZFrameLubTablicy("nazwa1") or PobierzElementNumerowanyZFrameLubTablicy(1); local wartosc2=PobierzElementNumerowanyZFrameLubTablicy("nazwa2") or PobierzElementNumerowanyZFrameLubTablicy(2); local wartosc3=PobierzElementNumerowanyZFrameLubTablicy("nazwa3") or PobierzElementNumerowanyZFrameLubTablicy(3); end; </syntaxhighlight> Zmienne w przykładzie o kluczach: {{Code|nazwa1}}, {{Code|nazwa2}} i {{Code|nazwa3}}, posiadające pewne swoje wartości, to są zmienne w tablicy {{Code|tablica_prametrow_funkcji}}, podane też jako zmienne, jako pewne argumenty tablicy, który są w tej funkcji zwracanej jako argument (parametr) funkcji, * jeżeli argumenty podano w postaci jednego parametru funkcji w postaci pewnej tablicy z np. elementami nazwanymi, * lub jako wiele argumentów w ramce, w wikikodzie, w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w pewnym szablonie, * a rozpatrując dalej elementy względem ich nazw, np. alternatywnych, to te numery mogą być kolejo do nazw ich odpowiedników nazwanych, które w przykładzie powyżej, mają pierwszeństwo, ale tak nie musi być, te parametry: {{Code|1}}, {{Code|2}} i {{Code|3}}, to jest numer parametru, jeżeli argumenty do funkcji podano w postaci wielu jego parametrów. == {{Code|p.PobierzParametr}} == Ta funkcja zwraca znów inną funkcję, która ma jedyny parametr, mówiący jakiego parametru poszukujemy, co jest wyjaśnione w definicji funkcji z nagłówka, że ona zwraca tą właśnie funkcje. Definicja skrótowa dunkcji: <syntaxhighlight lang="lua"> function p.PobierzParametr(frame,czy_frame_lub_parent,czy_frame) ... return function(nazwa) return __pobierz_parametr_table_args(nazwa); end; end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu. | 2 = {{Code|czy_frame_lub_parent}} i {{Code|czy_frame}} | _2 = Parametry logiczne dodatkowe funkcji. }} === Wartośc zwracanainumer metody === Funkcja zwraca jednocześnie dwie wartości, ta zwrócona z funkcji z nagłówka, prawdziwą wartość, i numer metody w postaci: {{Code|return wartosc, numer_metody}}. === Opis zwracanych elementów przez funkcję zwracaną - różnemetody zwracania, jak je wykorzystać === Ta funkcja zwracana ma w swojej definicji inną jeszcze funkcję z tym samym parametrem, co jego rodzic, i to jest za każdym razem inna funkcja w zależności z jakim typem danych się posługujemy {{Code|frame}} i jakie podaliśmy parametry. Gdy warunkiem, gdy zmienna {{Code|frame}} jest tablicą, czyli te zmienne druga: {{Code|czy_frame_lub_parent}} (jeżeli funkcja jest uruchomiona w ramce w szablonie, jeżeli ma wartość {{Code|true}}, to ona wybiera raz parametr z: {{Code|frame.args[nazwa or 1]}}, a za innym razem z {{Code|pf.args[nazwa or 1]}}, gdzie {{Code|pf{{=}}frame:getParent()}}, tutaj jest zwracana wartość: {{Code|return wartosc,2}}). Czy trzecia: {{Code|czy_frame}} (która mówi, jeżeli funkcję uruchomiono w ramce, ale przy wartości prawdziwej tego pierwszego podanego parametru, czyli {{Code|true}}, wybierana jest zawsze wartość {{Code|frame.args[nazwa or 1}}}, w przeciwnym wypadku uruchamiana jest funkcja {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, tutaj zwracana jest wartość {{Code|return wartosc,1}}). Jeżeli wartością {{Code|frame}} jest wartość nietablicowa, ale niebędącą wartością {{Code|nil}}, wtedy ustawiana jest funkcja, która tylko za pierwszym razem zwraca nienilową wartość {{Code|return wartosc,0}}, a później zwraca wartość {{Code|return nil,0}}. Gdy wartością {{Code|frame}} jest {{Code|nil}}, to funkcja zawsze wraca tą wartość {{Code|return nil,0}}. Powyższy sposób działa również dobrze, gdy zdefiniujemy w parametrach funkcji fałszywą funkcję {{Code|frame.getParent}}. Gdy funkcja nie jest uruchamiana w ramce lub funkcja {{Code|frame.getParent}} nie jest zdefiniowana, to wtedy funkcja wchodzi zawsze w ten jej krok, jakby {{Code|czy_frame_lub_parent}} było {{Code|false}} według tego powyżej, to wtedy brana jest zmienna {{Code|czy_frame}}, i jaką wartość ona przyjmuje. === Nazwy alternatywne parametrów === Funkcję pisze się według sposobu, którą się wywołuje według: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame); local wartosc1=PobierzParametr("nazwa1") or PobierzParametr(1); local wartosc2=PobierzParametr("nazwa2") or PobierzParametr(2); local wartosc3=PobierzParametr("nazwa3") or PobierzParametr(3); </syntaxhighlight> Na wypadek wartości nietabelowej, tą wartość zapisuje się jako pierwszą w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a dla wartości tabelowych, jaka jest kolejność to jest obojętne, byle by to było sensowne. === Wywołania funkcji === Tę funkcję podobnie się wywołuje jak funkcję: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}. Wartością {{Code|frame}} nie musi być tablica ramki tablicy transportu, równie dobrze może być to dowolna tablica lub wartość nietablicowa. Weźmy ramkę, w której uruchamiamy funkcję ramki: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}} </syntaxhighlight> === Przykłady wykorzystania funkcji === ; Przykład pierwszy{{dk}} Ona musi być wywołana z parametrem {{Parametr|wyspecjalizowana|tak}}, jako podpowiedź, że liczą się parametry ramki dziecka, a nie jego rodzica, czyli szablonu. Wtedy funkcję {{Code|Nazwa funkcji}} definiujemy: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame,true); ... end; </syntaxhighlight> Wtedy parametr {{Parametr|wyspecjalizowana|tak}} jest ignorowany, a przy wartości {{Code|false}} drugiego parametru funkcji, czyli wywołania: {{Code|local PobierzParametr{{=}}parametry_modul.PobierzParametr(frame,false);}}, już nie, ale nie zawsze. W takim przypadku według powyższego przykładu raz jest brana wartość, jeżeli istnieje, z {{Code|frame.args}}, a jak ona nie istnieje, to wtedy z: {{Code|pf.args}}. ; Przykład drugi{{dk}} Weźmy inny przypadek: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame,false,true); ... end; </syntaxhighlight> Przy tym też parametr: {{Parametr|wyspecjalizowana|tak}}, jest ignorowany, wtedy jest zawsze wybierana do rozważań tablica: {{Code|frame.args}}. ; Przykład trzeci{{dk}} Znów w innym przypadku, gdzie parametr: {{Parametr|wyspecjalizowana|tak}}, jest zawsze rozważany w naszym wypadku: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame,false,false); ... end; </syntaxhighlight> To to wywołanie, wtedy dokładnie działa jak funkcja: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, a zwrócona funkcja: {{Code|PobierzParametr}} pobiera elementy z tak uzyskanej tablicy {{Code|args}} poprzez nią. === Przypadek nietablicowego charakteru parametrów funkcji === W przypadku, gdy {{Code|frame}} nie jest tablicą, wtedy parametry: {{Code|czy_frame_lub_parent}} i {{Code|czy_frame}}, są w takim przypadku zawsze ignorowane, ale muszą być ustawione na wypadek, gdyby do funkcji {{Code|Nazwa funkcji}} wsadzono tablicę, np. z ramki, tzn. tablicę ramki funkcji tablicy transportu. === Ogólny przypadek, często stosowany === Najprostszym często ogólnym przykładem, który prawie zawsze jest stosowany: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame); ... end; </syntaxhighlight> Wtedy parametr: {{Parametr|wyspecjalizowana|tak}}, jest prawie zawsze nieignorowany, ale nie zawsze. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 87d955h16yl8wqntzzhztj1cqfb08vz 555741 555740 2026-09-11T19:40:14Z Persino 2851 /* Wywołania funkcji */ 555741 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} Są tutaj przedstawione funkcje parametrów. == {{Code|p.PobierzFrameEwentualnieParent}} == Argument tej funkcji {{Code|frame}} koniecznie musi być tablicą, w przypadku przeciwnym wywoła to błąd języka {{lpg|Lua}}, że z wartości nietabelowej chcemy wyliczyć jego nieistniejący element {{Code|getParent}}, który ma prawo nie być. Funkcja pobiera parametry ramki szablonu rodzica, a nie dziecka, a jeżeli w dziecku w ramce w wikikodzie w szablonie podamy specjalny parametr {{Parametr|wyspecjalizowana|tak}}, to wtedy ta funkcja ściąga parametry ramki. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobierzFrameEwentualnieParent(frame)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu. }} === Sterowanie funkcją === Tą funkcją można sterować ze strony ramki tym właśnie specjalnym parametrem o wartości niepustej, którą jest {{Parametr|wyspecjalizowana|tak}}. ==== Przykłady wykorzystania z parametrem sterującym ==== W ramce podajemy argumenty wraz z tym specjalnym parametrem: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}} </syntaxhighlight> To wtedy w kodzie w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} w module o nazwie {{Code|Nazwa modułu}}, piszemy: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzFrameEwentualnieParent(frame).args; .... end; </syntaxhighlight> To wtedy w kodzie ściągane parametry ramki dziecka. === Pobieranie oryginalnej tablicy === Tę funkcję można równie dobrze wykorzystać do zwykłych tabel: <syntaxhighlight lang="lua"> local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzFrameEwentualnieParent(tabela); </syntaxhighlight> === Możliwość tej samej funkcji uruchomioną w ramce lub z podaniem do niej pewnego zestawu parametrów w postaci tablicy === A w tym przypadku ta funkcja nic nie robi, tylko zmienna {{Code|args}} referencyjnie wskazuje na tablicę {{Code|tablica}}. Ale można ją wykorzystać, gdy by funkcja {{Code|Nazwa funkcji}}, była uruchomiona ze zwykłą tablicą, ale z możliwością, że to może być tablicą ramki {{Code|frame}} tablicy transportu, np.: <syntaxhighlight lang="lua"> --- Pierwsza możliwość; local wartosc1=p["Nazwa funkcji"](frame); -- Druga możliwość local wartosc2=p["Nazwa funkcji"]{["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; </syntaxhighlight> === Niedogodności stosowania z funkcji === Dla obu jest taka niedogodność, że jedynie jest taka nieprawidłowość, że w przypadku parametru tablicy ramki tablicy transportu należy podawać uzyskany element {{Code|args}}, a w przypadku zwykłej tablicy już nie, tą niedokodność rozwiązuje funkcja: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}. == {{Code|p.PobierzArgsParametry}} == Argument tej funkcji {{Code|frame}} koniecznie nie musi być tablicą, bo wtedy nie wywoła to błędu języka {{lpg|Lua}}, że z wartości nietabelowej chcemy wyliczyć jego niepusty element {{Code|getParent}}, bo przedtem sprawdzana jest w tej funkcji, czy jest to tablica. W definicji tej funkcji zmienna uzyskana z funkcji: {{Code|{{sr|#p.PobierzFrameEwentualnieParent(frame)|p=Parametry}}}}, a jeśli jej składowa {{Code|args}} jest tablicą, to jest właśnie ona zwracana, a jeśli istnieje, ale nie jest tablicą, lub ona nie istnieje, to wtedy brana jest właśnie wartość tablicowa {{Code|frame}}, jeśli jest ona taka, a gdy nie, to wtedy z tej funkcji tutaj nie korzystamy. Funkcja pobiera parametry ramki szablonu rodzica, a nie dziecka, a jeżeli w dziecku w ramce w wikikodzie w szablonie podamy specjalny parametr {{Parametr|wyspecjalizowana|tak}}, to wtedy ta funkcja ściąga parametry ramki. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobierzArgsParametry(frame, czy_nie_tablica_jako_tablica)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica transportu ramki. | 2 = {{Code|czy_nie_tablica_jako_tablica}} | _2 = Czy wartości nietablicowe umieszczać w jednoelemenowej tabeli. }} === Opis działania === Funkcja wykorzystuje wspomnianą powyżej funkcję do swojego działania, ona jest wtedy aktywowana, gdy zmienna {{Code|frame}} jest tablicą, i jest sprawdzane, czy ona posiada nazwany element o kluczu {{Code|args}}, i czy jest on tablicowy. Jeżeli wartością zmiennej {{Code|frame}} nie jest tablica, ale nie przybiera wartości {{Code|nil}}, to ona jest umieszczana w tablicy, jeżeli zmiennej {{Code|czy_nie_tablica_jako_tablica}} przydzielimy wartość {{Code|true}}, w przeciwnym wypadku zwracana jest ona w postaci niezmienionej, a jeżeli wartość tej zmiennej nie istnieje, to zwracana jest zwykła tablica pusta. Tą funkcją można sterować ze strony ramki tym właśnie specjalnym parametrem o wartości niepustej. === Przykład wywołania fubkcji z funkcją parametrów === W ramce podajemy argumenty wraz z tym specjalnym parametrem: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}} </syntaxhighlight> ==== Użycie funkcji parametrów ==== To wtedy w kodzie w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} w module o nazwie {{Code|Nazwa modułu}}, piszemy: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(frame); .... end; </syntaxhighlight> To wtedy w kodzie ściągane parametry ramki dziecka. === Wykorzystanie fukcji w różnych sytuacjach === ; Przypadek pierwszy{{dk}} Tę funkcję można równie dobrze wykorzystać do zwykłych tabel: <syntaxhighlight lang="lua"> local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(tabela); </syntaxhighlight> ; Drugi przypadek{{dk}} A w tym przypadku ta funkcja nic nie robi, tylko zmienna {{Code|args}} referencyjnie wskazuje na tablicę {{Code|tablica}}. Ale można ją wykorzystać, gdyby funkcja {{Code|Nazwa funkcji}}, była uruchomiona ze zwykłą tablicą, ale z możliwością, że to może być tablicą ramki {{Code|frame}} tablicy transportu, np.: <syntaxhighlight lang="lua"> --- Pierwsza możliwość; local wartosc1=p["Nazwa funkcji"](frame); -- Druga możliwość local wartosc2=p["Nazwa funkcji"]{["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; </syntaxhighlight> === Usunięcie niedogodności === Dla obu tych przypadków nie ma żadnej niedogodności, jak to występowała w {{Code|{{sr|#p.PobierzFrameEwentualnieParent(frame)|p=Parametry}}}}. === Parametr funkcji nietablicowy === Jeśliby do funkcji tablicy transportu dać wartość równą nie tablicy, to wtedy równoważnie możemy napisać: <syntaxhighlight lang="lua"> local wartosc="wartość"; local wynik=p["Nazwa funkcji"](wartosc); </syntaxhighlight> to wtedy definicję tej funkcji piszemy: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(frame,true); local wartosc=args[1]; end; </syntaxhighlight> lub równoważnie możemy zapisać: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); local wartosc=parametry_modul.PobierzArgsParametry(frame); end; </syntaxhighlight> === Brak parametrów funkcji === A jeżeli nie wsadziliśmy żadnej wartości do funkcji ramki tablicy transportu lub tą wartością jest {{Code|nil}}, wtedy: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"](); </syntaxhighlight> wtedy definicja tej funkcji wygląda: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); -- Zmienna: args, wskazuje na wartość, którą jest tablicą pustą, tzn. w tej tablicy nie ma wcale elementów; local args=parametry_modul.PobierzArgsParametry(frame); end; </syntaxhighlight> === Zmienna {{Code|args}} - alternatywny przypadek dla wartości tablicowych niż te bez drugiego parametru === Widzimy, że wtedy zmienna {{Code|args}} jest normalną pustą tablicą, i nie musimy wtedy wcale pisać poniżej, bo wtedy wychodzi w tym przypadku na to samo: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(frame,true); </syntaxhighlight> === Różnica drugiego parametru w przypadku wartości nietablicowych === Argument drugi w {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, który w naszym przypadku musi mieć wartość {{Code|true}}, a wtedy jest jedynie sens, gdy {{Code|frame}} nie jest tablicą, i gdy chcemy tą wartość umieścić w tablicy, a nie powtórzyć wartość, tzn. chcemy napisać: {{Code|{{(}}frame,{{)}}}}, w przeciwnym wypadku musilibyśmy napisać coś w rodzaju, zamiast tak spreparowanej tablicy: {{Code|frame}}, czyli: <syntaxhighlight lang="lua"> -- Pierwszy przypadek, gdy frame jest wartością nietablicową; local parametry_modul=require("Module:Parametry"); ... -- Zwracana wartość: args, to nic innego niż: {frame,}; local args=parametry_modul.PobierzArgsParametry(frame,true); ... -- Zwracana wartość: args, to nic innego niż: frame, a nie {frame,}, jak poprzednio; local args=parametry_modul.PobierzArgsParametry(frame); </syntaxhighlight> == {{Code|p.PobierzParametryRamki}} == Funkcja służy do ustawienia pewnych domyślnych dwóch pewnych funkcji służących do pobieranie danych z tabelki z pierwszej tej funkcji: * Jeżeli ona posiada klucz o wartości {{Code|args}}, ** to zwracana jest ta właśnie tablica jako argument pierwszej tej funkcji, jeżeli jest w ogóle tablicą, ** w przeciwnym wypadku zwracana jest ta oryginalna tablica, też jako argument tej funkcji, * w przeciwnym dalszym wypadku zwracana jest zwracana wartość ta, jako argument tej drugiej funkcji, która zwraca prawdziwą wartość z argumentu tylko za pierwszym razem, z tej funkcji, za następnym i dalszym razem {{Code|nil}}. Z tak utworzonej ogólnie większej funkcji wykorzystywana jest w budowie omawianej funkcji, która jest zwracana przez omawianą funkcję, która względem jego budowy wywołuje raz pierwszą albo drugą poprzednią wspomnianą funkcję zależną od rodzaju zmiennej {{Code|frame}}, która może być tabelką, ale nie musi być. Ta funkcja zwracana przez funkcję w nagłówku przyjmuje argument, która jest kluczem do tych wspomnianych, może że, * tabel (dokładnie, która ta może tabelka to zależy od formatu tej naszej rozważanej zmiennej), * a jeżeli to nie tabelka, co jest zwracane, to już zostało powiedziane. Definicja skrótowa tej funkcji jest: <syntaxhighlight lang="lua"> function p.PobierzParametryRamki(frame)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu. }} Weźmy ramkę sformułowaną w wikikodzie jako dziecko w szablonie rodzicu: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5}} </syntaxhighlight> === Funkcje, z funkcją parametrów, z tablicią ramki lub one z podtablicą {{Code|args}} === To wtedy tablica ramki tablicy transportu posiada właśnie {{Code|frame}}, która jest tablicą, i na pewno posiada tablicę o nazwie {{Code|args}}, to wtedy tę funkcję wywołaną w ramce, która wywołuje funkcję w nagłówku, formułujemy: <syntaxhighlight lang="lua"> local p={}; local p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametryRamki=parametry_modul.PobierzParametryRamki(frame); ... end; </syntaxhighlight> ==== Przykład wywołania funkcji z funkcją parametrów z tablicą {{Code|args}} ==== Równie dobrze funkcję z ramki można wywołać w sposób, co wtedy ta funkcja też zostanie wywołana pozytywnie: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"]{args={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}}; </syntaxhighlight> W tej funkcji nie trzeba definiować funkcji fałszywej {{Code|getParent}}, w postaci: {{Code|getParent{{=}}function()end}}. Widzimi, że ta tablica posiada nazwę zmiennej tablicowej o nazwie {{Code|args}}, ale ona nie jest tablicą ramki tablicy transportu, ale tą tablicę możemy bezposrednio wsadzić w tą główną tablicę w samym argumencie funkcji. ==== Przykład wywołania z tablicą bez podtablicy {{Code|args}} ==== Równie dobrze możemy wywołać tę funkcję zdefiniowaną naszą w jakimś module w sposób: <syntaxhighlight lang="lua"> local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; local wynik=p["Nazwa funkcji"]{tabela); </syntaxhighlight> też ta funkcja prawidłowo się wywoła. W tym przypadku, jak i w przypadkach powyżej, wyniki uzyskuje się w następującym wywołaniach: <syntaxhighlight lang="lua"> --- Zmienna: wartosc1, przyjmuje wartość: "wartość1"; local wartosc1=PobierzParametryRamki("nazwa1"); --- Zmienna: wartosc2, przyjmuje wartość: "wartość2"; local wartosc2=PobierzParametryRamki("nazwa2"); --- Zmienna: wartosc3, przyjmuje wartość: "wartość3"; local wartosc3=PobierzParametryRamki(1); </syntaxhighlight> ==== Przykłąd wywołania funkcji z wartością nietablicową ==== W innym przypadku wywołań funkcji ramki jest wsadzenie do niej zwykłego nietablicowego elementu, może być też to wartość: {{Code|nil}}. A to wywołanie jest: <syntaxhighlight lang="lua"> local wartosc="wartość"; --Zmienna: wartosc, nie jest w tym przypadku tablicą; local wynik=p["Nazwa funkcji"](wartosc); </syntaxhighlight> === Wywołania funkcji parametrów bez argumentów - wiele kolejnych wywołań jednocześnie === Wtedy w tej ramce w celu uzyskania, jakikolwiek wartości jest przykład wywołania tej funkcji zwracanej przez funkcję w ramce z argumentem pustym. <syntaxhighlight lang="lua"> -- Zmienna: wartość1, przyjmuje wartość: "wartość"; Jeżeli ona, przyjmuje wartość: nil, to wywołanie rzuci: nil, i za każdym następny razem; local wartosc1=PobierzParametryRamki(); -- Zmienna: wartość2, przyjmuje wartość: nil; local wartosc2=PobierzParametryRamki(); </syntaxhighlight> W wywołaniach powinno dbać się o właściwą kolejność wywołań, bo argumentem funkcji z tablicy transportu może być zwykła tablicowa wartość. Najpierw uzyskujemy wartości nietablicowe, a później tablicowe, na wypadek niewiadomej {{Code|frame}} jakiego typu ma być wartość. === Dwa przypadki, parametr w tablicy, lub wartość nietablicowa funkcji === Też ta zmienna może istnieć pod kilkoma możliwymi kluczami, lub tą zmienną może być jedyny argument funkcji, która jest nietablicową wartością, wtedy ją się wywołuje jako dla przypadku, gdy parametr jest nietablicowy lub jest pod kluczem {{Code|tekst}}: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local tekst=parametry_modul.PobierzParametryRamki(frame)("tekst"); </syntaxhighlight> === Przypadek, gdy parametr funkcji nie jest tablicą === Lub chcemy tę funkcję wywołać bezparametrowo, gdy chcemy, by {{Code|frame}} nie była tablicą: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local tekst=parametry_modul.PobierzParametryRamki(frame)(); </syntaxhighlight> ==== Omówienie przypadku istnienia tego samego wariantu zmiennej raz podtablicą, a raz jako zmienna nietablicowa === * Wtedy ta zmienna w przedostatnim przykładzie jest pod wartością {{Code|tekst}}, gdy wartość {{Code|frame}} jest tablicą, * lub może być jedyną wartością, którą jest {{Code|frame}}, jako zmienna nietablicowa, wtedy ta zmienna też jest pod {{Code|tekst}}, ** ta funkcja uzyskana z: {{Code|{{sr|#p.PobierzParametryRamki(frame)|p=Parametry}}}}, wtedy może być wywołana tylko raz z nienilową wartością zwracaną, następnym razem zwraca wartość {{Code|nil}}, wtedy to dotyczy przedostatniego i ostatniego przykładu. === Jakma liczyć element funkcji w przypadku różnych jej parametrów === Jeżeli {{Code|frame}} jest nietablicowa, to wtedy wartość {{Code|tekst}} jest taka sama, co {{Code|frame}}. A jeżeli jest tablicą, to ta wartością jest {{Code|frame.args["tekst"]}}, lub gdy {{Code|args}} nie istnieje, lub istnieje, ale jest nietablicowa, to wtedy ta wartość jest {{Code|frame["tekst"]}}. === Parametry alternatywne funkcji - przykład wykorzystania funkcji parametrów === A gdy zmienne istnieją pod wieloma kluczami, lub gdy funkcję wywołano ze zmienną nietablicową, wtedy ogólnie możemy dla przykładu powiedzieć: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local PobierzParametryRamki=parametry_modul.PobierzParametryRamki(frame); local wartosc1=PobierzParametryRamki("nazwa1") or PobierzParametryRamki(1); local wartosc2=PobierzParametryRamki("nazwa2") or PobierzParametryRamki(2); local wartosc3=PobierzParametryRamki("nazwa3") or PobierzParametryRamki(3); </syntaxhighlight> * Wtedy ta zmienna jest pod kluczem, np.: {{Code|nazwa1}} lub {{Code|1}}, tablicy ramki {{Code|frame}} tablicy transportu, następne wywołania dla następnych kluczy też zrzucą pewne wartości, * lub jest ona zwykłą nietablicową wartością mogącą być równą, nawet {{Code|nil}}. ---- * Następne wywołania uzyskanej tak funkcji w przypadku, gdy {{Code|frame}} jest nietablicowy, rzucać będzie z samej definicji funkcji wartości {{Code|nil}}, czyli {{Code|wartosc2{{=}}wartosc3{{=}}nil}}, ale za to wartość {{Code|wartosc1}} nie musi być, ale może, wartością {{Code|nil}}, jeśli tą wartością jest, gdy {{Code|frame{{=}}nil}}, * w przeciwnym wypadku za pierwszym razem tej wartości nietablicowej uzyskamy wartość nie {{Code|nil}}, a za drugim i dalszym zawsze wartość {{Code|nil}}. == {{Code|p.PobierzElementNumerowanyZFrameLubTablicy}} == Definicja skrótowa funkcji jest z parametrem charakteryzującym pewien zestaw zmiennych {{Code|frame}}, * które nie musi być tablicą ramki tablicy transportu, tylko moze być innym parametrem, który jest tablicą parametrów podanych do funkcji, * nawet gdy parametrem podanym do funkcji, w której wykorzystujemy tą funkcję, jest jedyna zmienna będąca tablicą ramki. Ale z drugiej strony, tak nie musi być, może być to rozbudowany zestaw zmiennych, np. nazwanych i nienazwanych, którego wszystkie sposoby podawania łączymy jednym sposobem podawania. Mimo że parametry funkcji są parametrami nienazwanymi, mogą być one ponumerowane, ale zmienna w tablicy może przyjmować wartość tą samą na różne sposoby, raz w sposób nazwany, a za innym sposobem jako nienazwany. Ogólnie ostateczne parametry łączymy w dane parametry za pomocą jednego sposobu, tzn. za pomocą tej funkcji, i dla tak uzyskanej tablicy tworzymy funkcję zwracaną przez funkcję w nagłówku, która przyjmuje parametr, który jest kluczem tej uzyskanej tablicy. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobierzElementNumerowanyZFrameLubTablicy(frame)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu. }} Weźmy najprostszy sposób realizacji tej funkcji, w realizacji: {{Code|1-1, 2-2, 3-3}}, czyli ten opis jest zaraz poniżej. === Sposoby wywołania funkcji === ; Pierwszy sposób{{dk}} Weźmy funkcję, którą można wywoływać z wieloma parametrami, jak i w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, którą przykładowo piszemy jego wywołanie wewnątrz innej funkcji na pięć sposobów, czyli teraz pierwszy sposób z tylko z parametrem, więc tablicą ramki tablicy transportu wywodzącą się z ramki uruchomioną w wikikodzie w jakimś szablonie rodzicu: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"](frame); </syntaxhighlight> ; Drugi sposób{{dk}} A teraz drugi sposób, pisząc, bezpośrednio inaczej, formułując wywołanie tej funkcji, używając zmiennych tablicowych tablicy ramki, ale to nie jest tak naprawdę tablica ramka tablicy transportu, tylko parametr podany bezpośrednio do funkcji, tak jak się to robi w języku {{lpg|Lua}}, nie jak w przykładzie powyżej, więc: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"]{args={"wartość1","wartość2","wartość3",},}; </syntaxhighlight> ; Trzeci sposób{{dk}} Lub równoważnie, pisząc, nie używając zmiennej {{Code|args}}: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"]{"wartość1","wartość2","wartość3",}; </syntaxhighlight> ; Czwarty sposób{{dk}} Albo te parametry wsadzając do funkcji: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"]("wartość1","wartość2","wartość3"); </syntaxhighlight> ; Piąty spssób{{dk}} Można też wywołać to wszystko w ramce, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w wikikpdzie, wtedy wsadzając parametry do ramki: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|wartość1|wartość2|wartość3}} </syntaxhighlight> === Omówienie pobierania takich parmetrów === A jak połączyć wszystkie te pięć sposobów, posługiwać się tymi sposobami wewnątrz funkcji {{Code|Nazwa funkcji}} w sposób jednolity, jedynie wtedy należy skorzystać z funkcji z definiowaną w jakimś module w sposób: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(...) local tablica_prametrow_funkcji={...}; local parametry_modul=require("Module:Parametry"); local PobierzElementNumerowanyZFrameLubTablicy=parametry_modul.PobierzElementNumerowanyZFrameLubTablicy(tablica_prametrow_funkcji); ... end; </syntaxhighlight> Wtedy za pomocą zmiennej {{Code|PobierzElementNumerowanyZFrameLubTablicy}} dostaliśmy się do funkcji, która przyjmuje jedyny parametr, aby dostać się do elementów tablicy uzyskanej w wewnątrz tej funkcji, zdefiniowaną w tablicy {{Code|tablica_prametrow_funkcji}}, która jest nic innym jak zestawem parametrów w funkcji: {{Code|Nazwa funkcji}}. * W pierwszym i drugim sposobem zmienną tą nazwijmy to jako {{Code|args}}, jest zmienną z podtablicy innego {{Code|args}} przekazanych jako parametr tablicy do funkcji, * w trzecim sposobie tą zmienną jest cała tablica, * a czwartym jest zestaw parametrów ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. A czym się różnią się te sposoby, a więc te sposoby można powiązać jedną tylko funkcją powiedzianą w nagłówku według przykładu podaną zaraz powyżej, wtedy możemy dostawać się do tych samych zmiennych o takich samych nazwach i wartościach, ale w różnych reprezentacjach na różne sposoby, wtedy można powiedzieć, że: <syntaxhighlight lang="lua"> args[1]="wartość1"; args[2]="wartość2"; args[3]="wartość3"; </syntaxhighlight> Czyli w wyniku działania funkcji w nagłówku, otrzymamy funkcję zwracającą te wartości, która operuje na tej tablicy, której wynikiem jest zestaw zmiennych ponumerowanych, ogólnie nienazwanych, której wartości odpowiadają te podane w ramce ostatniej powyżej. Na podstawie tego wiemy, jak działa funkcja ta z nagłówka. === Nazwy alternatywne danych parametrów funkcji ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}} === Pisząc w inny sposób, można też wskazywać: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(...) local tablica_prametrow_funkcji={...}; local parametry_modul=require("Module:Parametry"); local PobierzElementNumerowanyZFrameLubTablicy=parametry_modul.PobierzElementNumerowanyZFrameLubTablicy(tablica_prametrow_funkcji); local wartosc1=PobierzElementNumerowanyZFrameLubTablicy("nazwa1") or PobierzElementNumerowanyZFrameLubTablicy(1); local wartosc2=PobierzElementNumerowanyZFrameLubTablicy("nazwa2") or PobierzElementNumerowanyZFrameLubTablicy(2); local wartosc3=PobierzElementNumerowanyZFrameLubTablicy("nazwa3") or PobierzElementNumerowanyZFrameLubTablicy(3); end; </syntaxhighlight> Zmienne w przykładzie o kluczach: {{Code|nazwa1}}, {{Code|nazwa2}} i {{Code|nazwa3}}, posiadające pewne swoje wartości, to są zmienne w tablicy {{Code|tablica_prametrow_funkcji}}, podane też jako zmienne, jako pewne argumenty tablicy, który są w tej funkcji zwracanej jako argument (parametr) funkcji, * jeżeli argumenty podano w postaci jednego parametru funkcji w postaci pewnej tablicy z np. elementami nazwanymi, * lub jako wiele argumentów w ramce, w wikikodzie, w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w pewnym szablonie, * a rozpatrując dalej elementy względem ich nazw, np. alternatywnych, to te numery mogą być kolejo do nazw ich odpowiedników nazwanych, które w przykładzie powyżej, mają pierwszeństwo, ale tak nie musi być, te parametry: {{Code|1}}, {{Code|2}} i {{Code|3}}, to jest numer parametru, jeżeli argumenty do funkcji podano w postaci wielu jego parametrów. == {{Code|p.PobierzParametr}} == Ta funkcja zwraca znów inną funkcję, która ma jedyny parametr, mówiący jakiego parametru poszukujemy, co jest wyjaśnione w definicji funkcji z nagłówka, że ona zwraca tą właśnie funkcje. Definicja skrótowa dunkcji: <syntaxhighlight lang="lua"> function p.PobierzParametr(frame,czy_frame_lub_parent,czy_frame) ... return function(nazwa) return __pobierz_parametr_table_args(nazwa); end; end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu. | 2 = {{Code|czy_frame_lub_parent}} i {{Code|czy_frame}} | _2 = Parametry logiczne dodatkowe funkcji. }} === Wartośc zwracanainumer metody === Funkcja zwraca jednocześnie dwie wartości, ta zwrócona z funkcji z nagłówka, prawdziwą wartość, i numer metody w postaci: {{Code|return wartosc, numer_metody}}. === Opis zwracanych elementów przez funkcję zwracaną - różnemetody zwracania, jak je wykorzystać === Ta funkcja zwracana ma w swojej definicji inną jeszcze funkcję z tym samym parametrem, co jego rodzic, i to jest za każdym razem inna funkcja w zależności z jakim typem danych się posługujemy {{Code|frame}} i jakie podaliśmy parametry. Gdy warunkiem, gdy zmienna {{Code|frame}} jest tablicą, czyli te zmienne druga: {{Code|czy_frame_lub_parent}} (jeżeli funkcja jest uruchomiona w ramce w szablonie, jeżeli ma wartość {{Code|true}}, to ona wybiera raz parametr z: {{Code|frame.args[nazwa or 1]}}, a za innym razem z {{Code|pf.args[nazwa or 1]}}, gdzie {{Code|pf{{=}}frame:getParent()}}, tutaj jest zwracana wartość: {{Code|return wartosc,2}}). Czy trzecia: {{Code|czy_frame}} (która mówi, jeżeli funkcję uruchomiono w ramce, ale przy wartości prawdziwej tego pierwszego podanego parametru, czyli {{Code|true}}, wybierana jest zawsze wartość {{Code|frame.args[nazwa or 1}}}, w przeciwnym wypadku uruchamiana jest funkcja {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, tutaj zwracana jest wartość {{Code|return wartosc,1}}). Jeżeli wartością {{Code|frame}} jest wartość nietablicowa, ale niebędącą wartością {{Code|nil}}, wtedy ustawiana jest funkcja, która tylko za pierwszym razem zwraca nienilową wartość {{Code|return wartosc,0}}, a później zwraca wartość {{Code|return nil,0}}. Gdy wartością {{Code|frame}} jest {{Code|nil}}, to funkcja zawsze wraca tą wartość {{Code|return nil,0}}. Powyższy sposób działa również dobrze, gdy zdefiniujemy w parametrach funkcji fałszywą funkcję {{Code|frame.getParent}}. Gdy funkcja nie jest uruchamiana w ramce lub funkcja {{Code|frame.getParent}} nie jest zdefiniowana, to wtedy funkcja wchodzi zawsze w ten jej krok, jakby {{Code|czy_frame_lub_parent}} było {{Code|false}} według tego powyżej, to wtedy brana jest zmienna {{Code|czy_frame}}, i jaką wartość ona przyjmuje. === Nazwy alternatywne parametrów === Funkcję pisze się według sposobu, którą się wywołuje według: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame); local wartosc1=PobierzParametr("nazwa1") or PobierzParametr(1); local wartosc2=PobierzParametr("nazwa2") or PobierzParametr(2); local wartosc3=PobierzParametr("nazwa3") or PobierzParametr(3); </syntaxhighlight> Na wypadek wartości nietabelowej, tą wartość zapisuje się jako pierwszą w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a dla wartości tabelowych, jaka jest kolejność to jest obojętne, byle by to było sensowne. === Wywołania funkcji w ramce, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, z funkcją parametrów === Tę funkcję podobnie się wywołuje jak funkcję: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}. Wartością {{Code|frame}} nie musi być tablica ramki tablicy transportu, równie dobrze może być to dowolna tablica lub wartość nietablicowa. Weźmy ramkę, w której uruchamiamy funkcję ramki: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}} </syntaxhighlight> === Przykłady wykorzystania funkcji === ; Przykład pierwszy{{dk}} Ona musi być wywołana z parametrem {{Parametr|wyspecjalizowana|tak}}, jako podpowiedź, że liczą się parametry ramki dziecka, a nie jego rodzica, czyli szablonu. Wtedy funkcję {{Code|Nazwa funkcji}} definiujemy: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame,true); ... end; </syntaxhighlight> Wtedy parametr {{Parametr|wyspecjalizowana|tak}} jest ignorowany, a przy wartości {{Code|false}} drugiego parametru funkcji, czyli wywołania: {{Code|local PobierzParametr{{=}}parametry_modul.PobierzParametr(frame,false);}}, już nie, ale nie zawsze. W takim przypadku według powyższego przykładu raz jest brana wartość, jeżeli istnieje, z {{Code|frame.args}}, a jak ona nie istnieje, to wtedy z: {{Code|pf.args}}. ; Przykład drugi{{dk}} Weźmy inny przypadek: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame,false,true); ... end; </syntaxhighlight> Przy tym też parametr: {{Parametr|wyspecjalizowana|tak}}, jest ignorowany, wtedy jest zawsze wybierana do rozważań tablica: {{Code|frame.args}}. ; Przykład trzeci{{dk}} Znów w innym przypadku, gdzie parametr: {{Parametr|wyspecjalizowana|tak}}, jest zawsze rozważany w naszym wypadku: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame,false,false); ... end; </syntaxhighlight> To to wywołanie, wtedy dokładnie działa jak funkcja: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, a zwrócona funkcja: {{Code|PobierzParametr}} pobiera elementy z tak uzyskanej tablicy {{Code|args}} poprzez nią. === Przypadek nietablicowego charakteru parametrów funkcji === W przypadku, gdy {{Code|frame}} nie jest tablicą, wtedy parametry: {{Code|czy_frame_lub_parent}} i {{Code|czy_frame}}, są w takim przypadku zawsze ignorowane, ale muszą być ustawione na wypadek, gdyby do funkcji {{Code|Nazwa funkcji}} wsadzono tablicę, np. z ramki, tzn. tablicę ramki funkcji tablicy transportu. === Ogólny przypadek, często stosowany === Najprostszym często ogólnym przykładem, który prawie zawsze jest stosowany: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame); ... end; </syntaxhighlight> Wtedy parametr: {{Parametr|wyspecjalizowana|tak}}, jest prawie zawsze nieignorowany, ale nie zawsze. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 4dw2b4ucmtngwxkw9t3y3j99rouln1c 555742 555741 2026-09-11T19:41:02Z Persino 2851 /* Przykład wywołania fubkcji z funkcją parametrów */ 555742 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} Są tutaj przedstawione funkcje parametrów. == {{Code|p.PobierzFrameEwentualnieParent}} == Argument tej funkcji {{Code|frame}} koniecznie musi być tablicą, w przypadku przeciwnym wywoła to błąd języka {{lpg|Lua}}, że z wartości nietabelowej chcemy wyliczyć jego nieistniejący element {{Code|getParent}}, który ma prawo nie być. Funkcja pobiera parametry ramki szablonu rodzica, a nie dziecka, a jeżeli w dziecku w ramce w wikikodzie w szablonie podamy specjalny parametr {{Parametr|wyspecjalizowana|tak}}, to wtedy ta funkcja ściąga parametry ramki. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobierzFrameEwentualnieParent(frame)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu. }} === Sterowanie funkcją === Tą funkcją można sterować ze strony ramki tym właśnie specjalnym parametrem o wartości niepustej, którą jest {{Parametr|wyspecjalizowana|tak}}. ==== Przykłady wykorzystania z parametrem sterującym ==== W ramce podajemy argumenty wraz z tym specjalnym parametrem: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}} </syntaxhighlight> To wtedy w kodzie w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} w module o nazwie {{Code|Nazwa modułu}}, piszemy: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzFrameEwentualnieParent(frame).args; .... end; </syntaxhighlight> To wtedy w kodzie ściągane parametry ramki dziecka. === Pobieranie oryginalnej tablicy === Tę funkcję można równie dobrze wykorzystać do zwykłych tabel: <syntaxhighlight lang="lua"> local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzFrameEwentualnieParent(tabela); </syntaxhighlight> === Możliwość tej samej funkcji uruchomioną w ramce lub z podaniem do niej pewnego zestawu parametrów w postaci tablicy === A w tym przypadku ta funkcja nic nie robi, tylko zmienna {{Code|args}} referencyjnie wskazuje na tablicę {{Code|tablica}}. Ale można ją wykorzystać, gdy by funkcja {{Code|Nazwa funkcji}}, była uruchomiona ze zwykłą tablicą, ale z możliwością, że to może być tablicą ramki {{Code|frame}} tablicy transportu, np.: <syntaxhighlight lang="lua"> --- Pierwsza możliwość; local wartosc1=p["Nazwa funkcji"](frame); -- Druga możliwość local wartosc2=p["Nazwa funkcji"]{["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; </syntaxhighlight> === Niedogodności stosowania z funkcji === Dla obu jest taka niedogodność, że jedynie jest taka nieprawidłowość, że w przypadku parametru tablicy ramki tablicy transportu należy podawać uzyskany element {{Code|args}}, a w przypadku zwykłej tablicy już nie, tą niedokodność rozwiązuje funkcja: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}. == {{Code|p.PobierzArgsParametry}} == Argument tej funkcji {{Code|frame}} koniecznie nie musi być tablicą, bo wtedy nie wywoła to błędu języka {{lpg|Lua}}, że z wartości nietabelowej chcemy wyliczyć jego niepusty element {{Code|getParent}}, bo przedtem sprawdzana jest w tej funkcji, czy jest to tablica. W definicji tej funkcji zmienna uzyskana z funkcji: {{Code|{{sr|#p.PobierzFrameEwentualnieParent(frame)|p=Parametry}}}}, a jeśli jej składowa {{Code|args}} jest tablicą, to jest właśnie ona zwracana, a jeśli istnieje, ale nie jest tablicą, lub ona nie istnieje, to wtedy brana jest właśnie wartość tablicowa {{Code|frame}}, jeśli jest ona taka, a gdy nie, to wtedy z tej funkcji tutaj nie korzystamy. Funkcja pobiera parametry ramki szablonu rodzica, a nie dziecka, a jeżeli w dziecku w ramce w wikikodzie w szablonie podamy specjalny parametr {{Parametr|wyspecjalizowana|tak}}, to wtedy ta funkcja ściąga parametry ramki. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobierzArgsParametry(frame, czy_nie_tablica_jako_tablica)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica transportu ramki. | 2 = {{Code|czy_nie_tablica_jako_tablica}} | _2 = Czy wartości nietablicowe umieszczać w jednoelemenowej tabeli. }} === Opis działania === Funkcja wykorzystuje wspomnianą powyżej funkcję do swojego działania, ona jest wtedy aktywowana, gdy zmienna {{Code|frame}} jest tablicą, i jest sprawdzane, czy ona posiada nazwany element o kluczu {{Code|args}}, i czy jest on tablicowy. Jeżeli wartością zmiennej {{Code|frame}} nie jest tablica, ale nie przybiera wartości {{Code|nil}}, to ona jest umieszczana w tablicy, jeżeli zmiennej {{Code|czy_nie_tablica_jako_tablica}} przydzielimy wartość {{Code|true}}, w przeciwnym wypadku zwracana jest ona w postaci niezmienionej, a jeżeli wartość tej zmiennej nie istnieje, to zwracana jest zwykła tablica pusta. Tą funkcją można sterować ze strony ramki tym właśnie specjalnym parametrem o wartości niepustej. === Przykład wywołania funkcji z funkcją parametrów === W ramce podajemy argumenty wraz z tym specjalnym parametrem: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}} </syntaxhighlight> ==== Użycie funkcji parametrów ==== To wtedy w kodzie w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} w module o nazwie {{Code|Nazwa modułu}}, piszemy: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(frame); .... end; </syntaxhighlight> To wtedy w kodzie ściągane parametry ramki dziecka. === Wykorzystanie fukcji w różnych sytuacjach === ; Przypadek pierwszy{{dk}} Tę funkcję można równie dobrze wykorzystać do zwykłych tabel: <syntaxhighlight lang="lua"> local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(tabela); </syntaxhighlight> ; Drugi przypadek{{dk}} A w tym przypadku ta funkcja nic nie robi, tylko zmienna {{Code|args}} referencyjnie wskazuje na tablicę {{Code|tablica}}. Ale można ją wykorzystać, gdyby funkcja {{Code|Nazwa funkcji}}, była uruchomiona ze zwykłą tablicą, ale z możliwością, że to może być tablicą ramki {{Code|frame}} tablicy transportu, np.: <syntaxhighlight lang="lua"> --- Pierwsza możliwość; local wartosc1=p["Nazwa funkcji"](frame); -- Druga możliwość local wartosc2=p["Nazwa funkcji"]{["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; </syntaxhighlight> === Usunięcie niedogodności === Dla obu tych przypadków nie ma żadnej niedogodności, jak to występowała w {{Code|{{sr|#p.PobierzFrameEwentualnieParent(frame)|p=Parametry}}}}. === Parametr funkcji nietablicowy === Jeśliby do funkcji tablicy transportu dać wartość równą nie tablicy, to wtedy równoważnie możemy napisać: <syntaxhighlight lang="lua"> local wartosc="wartość"; local wynik=p["Nazwa funkcji"](wartosc); </syntaxhighlight> to wtedy definicję tej funkcji piszemy: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(frame,true); local wartosc=args[1]; end; </syntaxhighlight> lub równoważnie możemy zapisać: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); local wartosc=parametry_modul.PobierzArgsParametry(frame); end; </syntaxhighlight> === Brak parametrów funkcji === A jeżeli nie wsadziliśmy żadnej wartości do funkcji ramki tablicy transportu lub tą wartością jest {{Code|nil}}, wtedy: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"](); </syntaxhighlight> wtedy definicja tej funkcji wygląda: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); -- Zmienna: args, wskazuje na wartość, którą jest tablicą pustą, tzn. w tej tablicy nie ma wcale elementów; local args=parametry_modul.PobierzArgsParametry(frame); end; </syntaxhighlight> === Zmienna {{Code|args}} - alternatywny przypadek dla wartości tablicowych niż te bez drugiego parametru === Widzimy, że wtedy zmienna {{Code|args}} jest normalną pustą tablicą, i nie musimy wtedy wcale pisać poniżej, bo wtedy wychodzi w tym przypadku na to samo: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(frame,true); </syntaxhighlight> === Różnica drugiego parametru w przypadku wartości nietablicowych === Argument drugi w {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, który w naszym przypadku musi mieć wartość {{Code|true}}, a wtedy jest jedynie sens, gdy {{Code|frame}} nie jest tablicą, i gdy chcemy tą wartość umieścić w tablicy, a nie powtórzyć wartość, tzn. chcemy napisać: {{Code|{{(}}frame,{{)}}}}, w przeciwnym wypadku musilibyśmy napisać coś w rodzaju, zamiast tak spreparowanej tablicy: {{Code|frame}}, czyli: <syntaxhighlight lang="lua"> -- Pierwszy przypadek, gdy frame jest wartością nietablicową; local parametry_modul=require("Module:Parametry"); ... -- Zwracana wartość: args, to nic innego niż: {frame,}; local args=parametry_modul.PobierzArgsParametry(frame,true); ... -- Zwracana wartość: args, to nic innego niż: frame, a nie {frame,}, jak poprzednio; local args=parametry_modul.PobierzArgsParametry(frame); </syntaxhighlight> == {{Code|p.PobierzParametryRamki}} == Funkcja służy do ustawienia pewnych domyślnych dwóch pewnych funkcji służących do pobieranie danych z tabelki z pierwszej tej funkcji: * Jeżeli ona posiada klucz o wartości {{Code|args}}, ** to zwracana jest ta właśnie tablica jako argument pierwszej tej funkcji, jeżeli jest w ogóle tablicą, ** w przeciwnym wypadku zwracana jest ta oryginalna tablica, też jako argument tej funkcji, * w przeciwnym dalszym wypadku zwracana jest zwracana wartość ta, jako argument tej drugiej funkcji, która zwraca prawdziwą wartość z argumentu tylko za pierwszym razem, z tej funkcji, za następnym i dalszym razem {{Code|nil}}. Z tak utworzonej ogólnie większej funkcji wykorzystywana jest w budowie omawianej funkcji, która jest zwracana przez omawianą funkcję, która względem jego budowy wywołuje raz pierwszą albo drugą poprzednią wspomnianą funkcję zależną od rodzaju zmiennej {{Code|frame}}, która może być tabelką, ale nie musi być. Ta funkcja zwracana przez funkcję w nagłówku przyjmuje argument, która jest kluczem do tych wspomnianych, może że, * tabel (dokładnie, która ta może tabelka to zależy od formatu tej naszej rozważanej zmiennej), * a jeżeli to nie tabelka, co jest zwracane, to już zostało powiedziane. Definicja skrótowa tej funkcji jest: <syntaxhighlight lang="lua"> function p.PobierzParametryRamki(frame)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu. }} Weźmy ramkę sformułowaną w wikikodzie jako dziecko w szablonie rodzicu: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5}} </syntaxhighlight> === Funkcje, z funkcją parametrów, z tablicią ramki lub one z podtablicą {{Code|args}} === To wtedy tablica ramki tablicy transportu posiada właśnie {{Code|frame}}, która jest tablicą, i na pewno posiada tablicę o nazwie {{Code|args}}, to wtedy tę funkcję wywołaną w ramce, która wywołuje funkcję w nagłówku, formułujemy: <syntaxhighlight lang="lua"> local p={}; local p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametryRamki=parametry_modul.PobierzParametryRamki(frame); ... end; </syntaxhighlight> ==== Przykład wywołania funkcji z funkcją parametrów z tablicą {{Code|args}} ==== Równie dobrze funkcję z ramki można wywołać w sposób, co wtedy ta funkcja też zostanie wywołana pozytywnie: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"]{args={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}}; </syntaxhighlight> W tej funkcji nie trzeba definiować funkcji fałszywej {{Code|getParent}}, w postaci: {{Code|getParent{{=}}function()end}}. Widzimi, że ta tablica posiada nazwę zmiennej tablicowej o nazwie {{Code|args}}, ale ona nie jest tablicą ramki tablicy transportu, ale tą tablicę możemy bezposrednio wsadzić w tą główną tablicę w samym argumencie funkcji. ==== Przykład wywołania z tablicą bez podtablicy {{Code|args}} ==== Równie dobrze możemy wywołać tę funkcję zdefiniowaną naszą w jakimś module w sposób: <syntaxhighlight lang="lua"> local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; local wynik=p["Nazwa funkcji"]{tabela); </syntaxhighlight> też ta funkcja prawidłowo się wywoła. W tym przypadku, jak i w przypadkach powyżej, wyniki uzyskuje się w następującym wywołaniach: <syntaxhighlight lang="lua"> --- Zmienna: wartosc1, przyjmuje wartość: "wartość1"; local wartosc1=PobierzParametryRamki("nazwa1"); --- Zmienna: wartosc2, przyjmuje wartość: "wartość2"; local wartosc2=PobierzParametryRamki("nazwa2"); --- Zmienna: wartosc3, przyjmuje wartość: "wartość3"; local wartosc3=PobierzParametryRamki(1); </syntaxhighlight> ==== Przykłąd wywołania funkcji z wartością nietablicową ==== W innym przypadku wywołań funkcji ramki jest wsadzenie do niej zwykłego nietablicowego elementu, może być też to wartość: {{Code|nil}}. A to wywołanie jest: <syntaxhighlight lang="lua"> local wartosc="wartość"; --Zmienna: wartosc, nie jest w tym przypadku tablicą; local wynik=p["Nazwa funkcji"](wartosc); </syntaxhighlight> === Wywołania funkcji parametrów bez argumentów - wiele kolejnych wywołań jednocześnie === Wtedy w tej ramce w celu uzyskania, jakikolwiek wartości jest przykład wywołania tej funkcji zwracanej przez funkcję w ramce z argumentem pustym. <syntaxhighlight lang="lua"> -- Zmienna: wartość1, przyjmuje wartość: "wartość"; Jeżeli ona, przyjmuje wartość: nil, to wywołanie rzuci: nil, i za każdym następny razem; local wartosc1=PobierzParametryRamki(); -- Zmienna: wartość2, przyjmuje wartość: nil; local wartosc2=PobierzParametryRamki(); </syntaxhighlight> W wywołaniach powinno dbać się o właściwą kolejność wywołań, bo argumentem funkcji z tablicy transportu może być zwykła tablicowa wartość. Najpierw uzyskujemy wartości nietablicowe, a później tablicowe, na wypadek niewiadomej {{Code|frame}} jakiego typu ma być wartość. === Dwa przypadki, parametr w tablicy, lub wartość nietablicowa funkcji === Też ta zmienna może istnieć pod kilkoma możliwymi kluczami, lub tą zmienną może być jedyny argument funkcji, która jest nietablicową wartością, wtedy ją się wywołuje jako dla przypadku, gdy parametr jest nietablicowy lub jest pod kluczem {{Code|tekst}}: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local tekst=parametry_modul.PobierzParametryRamki(frame)("tekst"); </syntaxhighlight> === Przypadek, gdy parametr funkcji nie jest tablicą === Lub chcemy tę funkcję wywołać bezparametrowo, gdy chcemy, by {{Code|frame}} nie była tablicą: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local tekst=parametry_modul.PobierzParametryRamki(frame)(); </syntaxhighlight> ==== Omówienie przypadku istnienia tego samego wariantu zmiennej raz podtablicą, a raz jako zmienna nietablicowa === * Wtedy ta zmienna w przedostatnim przykładzie jest pod wartością {{Code|tekst}}, gdy wartość {{Code|frame}} jest tablicą, * lub może być jedyną wartością, którą jest {{Code|frame}}, jako zmienna nietablicowa, wtedy ta zmienna też jest pod {{Code|tekst}}, ** ta funkcja uzyskana z: {{Code|{{sr|#p.PobierzParametryRamki(frame)|p=Parametry}}}}, wtedy może być wywołana tylko raz z nienilową wartością zwracaną, następnym razem zwraca wartość {{Code|nil}}, wtedy to dotyczy przedostatniego i ostatniego przykładu. === Jakma liczyć element funkcji w przypadku różnych jej parametrów === Jeżeli {{Code|frame}} jest nietablicowa, to wtedy wartość {{Code|tekst}} jest taka sama, co {{Code|frame}}. A jeżeli jest tablicą, to ta wartością jest {{Code|frame.args["tekst"]}}, lub gdy {{Code|args}} nie istnieje, lub istnieje, ale jest nietablicowa, to wtedy ta wartość jest {{Code|frame["tekst"]}}. === Parametry alternatywne funkcji - przykład wykorzystania funkcji parametrów === A gdy zmienne istnieją pod wieloma kluczami, lub gdy funkcję wywołano ze zmienną nietablicową, wtedy ogólnie możemy dla przykładu powiedzieć: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local PobierzParametryRamki=parametry_modul.PobierzParametryRamki(frame); local wartosc1=PobierzParametryRamki("nazwa1") or PobierzParametryRamki(1); local wartosc2=PobierzParametryRamki("nazwa2") or PobierzParametryRamki(2); local wartosc3=PobierzParametryRamki("nazwa3") or PobierzParametryRamki(3); </syntaxhighlight> * Wtedy ta zmienna jest pod kluczem, np.: {{Code|nazwa1}} lub {{Code|1}}, tablicy ramki {{Code|frame}} tablicy transportu, następne wywołania dla następnych kluczy też zrzucą pewne wartości, * lub jest ona zwykłą nietablicową wartością mogącą być równą, nawet {{Code|nil}}. ---- * Następne wywołania uzyskanej tak funkcji w przypadku, gdy {{Code|frame}} jest nietablicowy, rzucać będzie z samej definicji funkcji wartości {{Code|nil}}, czyli {{Code|wartosc2{{=}}wartosc3{{=}}nil}}, ale za to wartość {{Code|wartosc1}} nie musi być, ale może, wartością {{Code|nil}}, jeśli tą wartością jest, gdy {{Code|frame{{=}}nil}}, * w przeciwnym wypadku za pierwszym razem tej wartości nietablicowej uzyskamy wartość nie {{Code|nil}}, a za drugim i dalszym zawsze wartość {{Code|nil}}. == {{Code|p.PobierzElementNumerowanyZFrameLubTablicy}} == Definicja skrótowa funkcji jest z parametrem charakteryzującym pewien zestaw zmiennych {{Code|frame}}, * które nie musi być tablicą ramki tablicy transportu, tylko moze być innym parametrem, który jest tablicą parametrów podanych do funkcji, * nawet gdy parametrem podanym do funkcji, w której wykorzystujemy tą funkcję, jest jedyna zmienna będąca tablicą ramki. Ale z drugiej strony, tak nie musi być, może być to rozbudowany zestaw zmiennych, np. nazwanych i nienazwanych, którego wszystkie sposoby podawania łączymy jednym sposobem podawania. Mimo że parametry funkcji są parametrami nienazwanymi, mogą być one ponumerowane, ale zmienna w tablicy może przyjmować wartość tą samą na różne sposoby, raz w sposób nazwany, a za innym sposobem jako nienazwany. Ogólnie ostateczne parametry łączymy w dane parametry za pomocą jednego sposobu, tzn. za pomocą tej funkcji, i dla tak uzyskanej tablicy tworzymy funkcję zwracaną przez funkcję w nagłówku, która przyjmuje parametr, który jest kluczem tej uzyskanej tablicy. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobierzElementNumerowanyZFrameLubTablicy(frame)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu. }} Weźmy najprostszy sposób realizacji tej funkcji, w realizacji: {{Code|1-1, 2-2, 3-3}}, czyli ten opis jest zaraz poniżej. === Sposoby wywołania funkcji === ; Pierwszy sposób{{dk}} Weźmy funkcję, którą można wywoływać z wieloma parametrami, jak i w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, którą przykładowo piszemy jego wywołanie wewnątrz innej funkcji na pięć sposobów, czyli teraz pierwszy sposób z tylko z parametrem, więc tablicą ramki tablicy transportu wywodzącą się z ramki uruchomioną w wikikodzie w jakimś szablonie rodzicu: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"](frame); </syntaxhighlight> ; Drugi sposób{{dk}} A teraz drugi sposób, pisząc, bezpośrednio inaczej, formułując wywołanie tej funkcji, używając zmiennych tablicowych tablicy ramki, ale to nie jest tak naprawdę tablica ramka tablicy transportu, tylko parametr podany bezpośrednio do funkcji, tak jak się to robi w języku {{lpg|Lua}}, nie jak w przykładzie powyżej, więc: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"]{args={"wartość1","wartość2","wartość3",},}; </syntaxhighlight> ; Trzeci sposób{{dk}} Lub równoważnie, pisząc, nie używając zmiennej {{Code|args}}: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"]{"wartość1","wartość2","wartość3",}; </syntaxhighlight> ; Czwarty sposób{{dk}} Albo te parametry wsadzając do funkcji: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"]("wartość1","wartość2","wartość3"); </syntaxhighlight> ; Piąty spssób{{dk}} Można też wywołać to wszystko w ramce, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w wikikpdzie, wtedy wsadzając parametry do ramki: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|wartość1|wartość2|wartość3}} </syntaxhighlight> === Omówienie pobierania takich parmetrów === A jak połączyć wszystkie te pięć sposobów, posługiwać się tymi sposobami wewnątrz funkcji {{Code|Nazwa funkcji}} w sposób jednolity, jedynie wtedy należy skorzystać z funkcji z definiowaną w jakimś module w sposób: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(...) local tablica_prametrow_funkcji={...}; local parametry_modul=require("Module:Parametry"); local PobierzElementNumerowanyZFrameLubTablicy=parametry_modul.PobierzElementNumerowanyZFrameLubTablicy(tablica_prametrow_funkcji); ... end; </syntaxhighlight> Wtedy za pomocą zmiennej {{Code|PobierzElementNumerowanyZFrameLubTablicy}} dostaliśmy się do funkcji, która przyjmuje jedyny parametr, aby dostać się do elementów tablicy uzyskanej w wewnątrz tej funkcji, zdefiniowaną w tablicy {{Code|tablica_prametrow_funkcji}}, która jest nic innym jak zestawem parametrów w funkcji: {{Code|Nazwa funkcji}}. * W pierwszym i drugim sposobem zmienną tą nazwijmy to jako {{Code|args}}, jest zmienną z podtablicy innego {{Code|args}} przekazanych jako parametr tablicy do funkcji, * w trzecim sposobie tą zmienną jest cała tablica, * a czwartym jest zestaw parametrów ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. A czym się różnią się te sposoby, a więc te sposoby można powiązać jedną tylko funkcją powiedzianą w nagłówku według przykładu podaną zaraz powyżej, wtedy możemy dostawać się do tych samych zmiennych o takich samych nazwach i wartościach, ale w różnych reprezentacjach na różne sposoby, wtedy można powiedzieć, że: <syntaxhighlight lang="lua"> args[1]="wartość1"; args[2]="wartość2"; args[3]="wartość3"; </syntaxhighlight> Czyli w wyniku działania funkcji w nagłówku, otrzymamy funkcję zwracającą te wartości, która operuje na tej tablicy, której wynikiem jest zestaw zmiennych ponumerowanych, ogólnie nienazwanych, której wartości odpowiadają te podane w ramce ostatniej powyżej. Na podstawie tego wiemy, jak działa funkcja ta z nagłówka. === Nazwy alternatywne danych parametrów funkcji ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}} === Pisząc w inny sposób, można też wskazywać: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(...) local tablica_prametrow_funkcji={...}; local parametry_modul=require("Module:Parametry"); local PobierzElementNumerowanyZFrameLubTablicy=parametry_modul.PobierzElementNumerowanyZFrameLubTablicy(tablica_prametrow_funkcji); local wartosc1=PobierzElementNumerowanyZFrameLubTablicy("nazwa1") or PobierzElementNumerowanyZFrameLubTablicy(1); local wartosc2=PobierzElementNumerowanyZFrameLubTablicy("nazwa2") or PobierzElementNumerowanyZFrameLubTablicy(2); local wartosc3=PobierzElementNumerowanyZFrameLubTablicy("nazwa3") or PobierzElementNumerowanyZFrameLubTablicy(3); end; </syntaxhighlight> Zmienne w przykładzie o kluczach: {{Code|nazwa1}}, {{Code|nazwa2}} i {{Code|nazwa3}}, posiadające pewne swoje wartości, to są zmienne w tablicy {{Code|tablica_prametrow_funkcji}}, podane też jako zmienne, jako pewne argumenty tablicy, który są w tej funkcji zwracanej jako argument (parametr) funkcji, * jeżeli argumenty podano w postaci jednego parametru funkcji w postaci pewnej tablicy z np. elementami nazwanymi, * lub jako wiele argumentów w ramce, w wikikodzie, w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w pewnym szablonie, * a rozpatrując dalej elementy względem ich nazw, np. alternatywnych, to te numery mogą być kolejo do nazw ich odpowiedników nazwanych, które w przykładzie powyżej, mają pierwszeństwo, ale tak nie musi być, te parametry: {{Code|1}}, {{Code|2}} i {{Code|3}}, to jest numer parametru, jeżeli argumenty do funkcji podano w postaci wielu jego parametrów. == {{Code|p.PobierzParametr}} == Ta funkcja zwraca znów inną funkcję, która ma jedyny parametr, mówiący jakiego parametru poszukujemy, co jest wyjaśnione w definicji funkcji z nagłówka, że ona zwraca tą właśnie funkcje. Definicja skrótowa dunkcji: <syntaxhighlight lang="lua"> function p.PobierzParametr(frame,czy_frame_lub_parent,czy_frame) ... return function(nazwa) return __pobierz_parametr_table_args(nazwa); end; end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu. | 2 = {{Code|czy_frame_lub_parent}} i {{Code|czy_frame}} | _2 = Parametry logiczne dodatkowe funkcji. }} === Wartośc zwracanainumer metody === Funkcja zwraca jednocześnie dwie wartości, ta zwrócona z funkcji z nagłówka, prawdziwą wartość, i numer metody w postaci: {{Code|return wartosc, numer_metody}}. === Opis zwracanych elementów przez funkcję zwracaną - różnemetody zwracania, jak je wykorzystać === Ta funkcja zwracana ma w swojej definicji inną jeszcze funkcję z tym samym parametrem, co jego rodzic, i to jest za każdym razem inna funkcja w zależności z jakim typem danych się posługujemy {{Code|frame}} i jakie podaliśmy parametry. Gdy warunkiem, gdy zmienna {{Code|frame}} jest tablicą, czyli te zmienne druga: {{Code|czy_frame_lub_parent}} (jeżeli funkcja jest uruchomiona w ramce w szablonie, jeżeli ma wartość {{Code|true}}, to ona wybiera raz parametr z: {{Code|frame.args[nazwa or 1]}}, a za innym razem z {{Code|pf.args[nazwa or 1]}}, gdzie {{Code|pf{{=}}frame:getParent()}}, tutaj jest zwracana wartość: {{Code|return wartosc,2}}). Czy trzecia: {{Code|czy_frame}} (która mówi, jeżeli funkcję uruchomiono w ramce, ale przy wartości prawdziwej tego pierwszego podanego parametru, czyli {{Code|true}}, wybierana jest zawsze wartość {{Code|frame.args[nazwa or 1}}}, w przeciwnym wypadku uruchamiana jest funkcja {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, tutaj zwracana jest wartość {{Code|return wartosc,1}}). Jeżeli wartością {{Code|frame}} jest wartość nietablicowa, ale niebędącą wartością {{Code|nil}}, wtedy ustawiana jest funkcja, która tylko za pierwszym razem zwraca nienilową wartość {{Code|return wartosc,0}}, a później zwraca wartość {{Code|return nil,0}}. Gdy wartością {{Code|frame}} jest {{Code|nil}}, to funkcja zawsze wraca tą wartość {{Code|return nil,0}}. Powyższy sposób działa również dobrze, gdy zdefiniujemy w parametrach funkcji fałszywą funkcję {{Code|frame.getParent}}. Gdy funkcja nie jest uruchamiana w ramce lub funkcja {{Code|frame.getParent}} nie jest zdefiniowana, to wtedy funkcja wchodzi zawsze w ten jej krok, jakby {{Code|czy_frame_lub_parent}} było {{Code|false}} według tego powyżej, to wtedy brana jest zmienna {{Code|czy_frame}}, i jaką wartość ona przyjmuje. === Nazwy alternatywne parametrów === Funkcję pisze się według sposobu, którą się wywołuje według: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame); local wartosc1=PobierzParametr("nazwa1") or PobierzParametr(1); local wartosc2=PobierzParametr("nazwa2") or PobierzParametr(2); local wartosc3=PobierzParametr("nazwa3") or PobierzParametr(3); </syntaxhighlight> Na wypadek wartości nietabelowej, tą wartość zapisuje się jako pierwszą w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a dla wartości tabelowych, jaka jest kolejność to jest obojętne, byle by to było sensowne. === Wywołania funkcji w ramce, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, z funkcją parametrów === Tę funkcję podobnie się wywołuje jak funkcję: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}. Wartością {{Code|frame}} nie musi być tablica ramki tablicy transportu, równie dobrze może być to dowolna tablica lub wartość nietablicowa. Weźmy ramkę, w której uruchamiamy funkcję ramki: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}} </syntaxhighlight> === Przykłady wykorzystania funkcji === ; Przykład pierwszy{{dk}} Ona musi być wywołana z parametrem {{Parametr|wyspecjalizowana|tak}}, jako podpowiedź, że liczą się parametry ramki dziecka, a nie jego rodzica, czyli szablonu. Wtedy funkcję {{Code|Nazwa funkcji}} definiujemy: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame,true); ... end; </syntaxhighlight> Wtedy parametr {{Parametr|wyspecjalizowana|tak}} jest ignorowany, a przy wartości {{Code|false}} drugiego parametru funkcji, czyli wywołania: {{Code|local PobierzParametr{{=}}parametry_modul.PobierzParametr(frame,false);}}, już nie, ale nie zawsze. W takim przypadku według powyższego przykładu raz jest brana wartość, jeżeli istnieje, z {{Code|frame.args}}, a jak ona nie istnieje, to wtedy z: {{Code|pf.args}}. ; Przykład drugi{{dk}} Weźmy inny przypadek: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame,false,true); ... end; </syntaxhighlight> Przy tym też parametr: {{Parametr|wyspecjalizowana|tak}}, jest ignorowany, wtedy jest zawsze wybierana do rozważań tablica: {{Code|frame.args}}. ; Przykład trzeci{{dk}} Znów w innym przypadku, gdzie parametr: {{Parametr|wyspecjalizowana|tak}}, jest zawsze rozważany w naszym wypadku: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame,false,false); ... end; </syntaxhighlight> To to wywołanie, wtedy dokładnie działa jak funkcja: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, a zwrócona funkcja: {{Code|PobierzParametr}} pobiera elementy z tak uzyskanej tablicy {{Code|args}} poprzez nią. === Przypadek nietablicowego charakteru parametrów funkcji === W przypadku, gdy {{Code|frame}} nie jest tablicą, wtedy parametry: {{Code|czy_frame_lub_parent}} i {{Code|czy_frame}}, są w takim przypadku zawsze ignorowane, ale muszą być ustawione na wypadek, gdyby do funkcji {{Code|Nazwa funkcji}} wsadzono tablicę, np. z ramki, tzn. tablicę ramki funkcji tablicy transportu. === Ogólny przypadek, często stosowany === Najprostszym często ogólnym przykładem, który prawie zawsze jest stosowany: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame); ... end; </syntaxhighlight> Wtedy parametr: {{Parametr|wyspecjalizowana|tak}}, jest prawie zawsze nieignorowany, ale nie zawsze. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 8uhhrrxe20zwcydrm4yka7sn6c183ct 555743 555742 2026-09-11T19:42:36Z Persino 2851 /* Funkcje, z funkcją parametrów, z tablicią ramki lub one z podtablicą {{Code|args}} */ 555743 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} Są tutaj przedstawione funkcje parametrów. == {{Code|p.PobierzFrameEwentualnieParent}} == Argument tej funkcji {{Code|frame}} koniecznie musi być tablicą, w przypadku przeciwnym wywoła to błąd języka {{lpg|Lua}}, że z wartości nietabelowej chcemy wyliczyć jego nieistniejący element {{Code|getParent}}, który ma prawo nie być. Funkcja pobiera parametry ramki szablonu rodzica, a nie dziecka, a jeżeli w dziecku w ramce w wikikodzie w szablonie podamy specjalny parametr {{Parametr|wyspecjalizowana|tak}}, to wtedy ta funkcja ściąga parametry ramki. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobierzFrameEwentualnieParent(frame)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu. }} === Sterowanie funkcją === Tą funkcją można sterować ze strony ramki tym właśnie specjalnym parametrem o wartości niepustej, którą jest {{Parametr|wyspecjalizowana|tak}}. ==== Przykłady wykorzystania z parametrem sterującym ==== W ramce podajemy argumenty wraz z tym specjalnym parametrem: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}} </syntaxhighlight> To wtedy w kodzie w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} w module o nazwie {{Code|Nazwa modułu}}, piszemy: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzFrameEwentualnieParent(frame).args; .... end; </syntaxhighlight> To wtedy w kodzie ściągane parametry ramki dziecka. === Pobieranie oryginalnej tablicy === Tę funkcję można równie dobrze wykorzystać do zwykłych tabel: <syntaxhighlight lang="lua"> local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzFrameEwentualnieParent(tabela); </syntaxhighlight> === Możliwość tej samej funkcji uruchomioną w ramce lub z podaniem do niej pewnego zestawu parametrów w postaci tablicy === A w tym przypadku ta funkcja nic nie robi, tylko zmienna {{Code|args}} referencyjnie wskazuje na tablicę {{Code|tablica}}. Ale można ją wykorzystać, gdy by funkcja {{Code|Nazwa funkcji}}, była uruchomiona ze zwykłą tablicą, ale z możliwością, że to może być tablicą ramki {{Code|frame}} tablicy transportu, np.: <syntaxhighlight lang="lua"> --- Pierwsza możliwość; local wartosc1=p["Nazwa funkcji"](frame); -- Druga możliwość local wartosc2=p["Nazwa funkcji"]{["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; </syntaxhighlight> === Niedogodności stosowania z funkcji === Dla obu jest taka niedogodność, że jedynie jest taka nieprawidłowość, że w przypadku parametru tablicy ramki tablicy transportu należy podawać uzyskany element {{Code|args}}, a w przypadku zwykłej tablicy już nie, tą niedokodność rozwiązuje funkcja: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}. == {{Code|p.PobierzArgsParametry}} == Argument tej funkcji {{Code|frame}} koniecznie nie musi być tablicą, bo wtedy nie wywoła to błędu języka {{lpg|Lua}}, że z wartości nietabelowej chcemy wyliczyć jego niepusty element {{Code|getParent}}, bo przedtem sprawdzana jest w tej funkcji, czy jest to tablica. W definicji tej funkcji zmienna uzyskana z funkcji: {{Code|{{sr|#p.PobierzFrameEwentualnieParent(frame)|p=Parametry}}}}, a jeśli jej składowa {{Code|args}} jest tablicą, to jest właśnie ona zwracana, a jeśli istnieje, ale nie jest tablicą, lub ona nie istnieje, to wtedy brana jest właśnie wartość tablicowa {{Code|frame}}, jeśli jest ona taka, a gdy nie, to wtedy z tej funkcji tutaj nie korzystamy. Funkcja pobiera parametry ramki szablonu rodzica, a nie dziecka, a jeżeli w dziecku w ramce w wikikodzie w szablonie podamy specjalny parametr {{Parametr|wyspecjalizowana|tak}}, to wtedy ta funkcja ściąga parametry ramki. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobierzArgsParametry(frame, czy_nie_tablica_jako_tablica)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica transportu ramki. | 2 = {{Code|czy_nie_tablica_jako_tablica}} | _2 = Czy wartości nietablicowe umieszczać w jednoelemenowej tabeli. }} === Opis działania === Funkcja wykorzystuje wspomnianą powyżej funkcję do swojego działania, ona jest wtedy aktywowana, gdy zmienna {{Code|frame}} jest tablicą, i jest sprawdzane, czy ona posiada nazwany element o kluczu {{Code|args}}, i czy jest on tablicowy. Jeżeli wartością zmiennej {{Code|frame}} nie jest tablica, ale nie przybiera wartości {{Code|nil}}, to ona jest umieszczana w tablicy, jeżeli zmiennej {{Code|czy_nie_tablica_jako_tablica}} przydzielimy wartość {{Code|true}}, w przeciwnym wypadku zwracana jest ona w postaci niezmienionej, a jeżeli wartość tej zmiennej nie istnieje, to zwracana jest zwykła tablica pusta. Tą funkcją można sterować ze strony ramki tym właśnie specjalnym parametrem o wartości niepustej. === Przykład wywołania funkcji z funkcją parametrów === W ramce podajemy argumenty wraz z tym specjalnym parametrem: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}} </syntaxhighlight> ==== Użycie funkcji parametrów ==== To wtedy w kodzie w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} w module o nazwie {{Code|Nazwa modułu}}, piszemy: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(frame); .... end; </syntaxhighlight> To wtedy w kodzie ściągane parametry ramki dziecka. === Wykorzystanie fukcji w różnych sytuacjach === ; Przypadek pierwszy{{dk}} Tę funkcję można równie dobrze wykorzystać do zwykłych tabel: <syntaxhighlight lang="lua"> local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(tabela); </syntaxhighlight> ; Drugi przypadek{{dk}} A w tym przypadku ta funkcja nic nie robi, tylko zmienna {{Code|args}} referencyjnie wskazuje na tablicę {{Code|tablica}}. Ale można ją wykorzystać, gdyby funkcja {{Code|Nazwa funkcji}}, była uruchomiona ze zwykłą tablicą, ale z możliwością, że to może być tablicą ramki {{Code|frame}} tablicy transportu, np.: <syntaxhighlight lang="lua"> --- Pierwsza możliwość; local wartosc1=p["Nazwa funkcji"](frame); -- Druga możliwość local wartosc2=p["Nazwa funkcji"]{["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; </syntaxhighlight> === Usunięcie niedogodności === Dla obu tych przypadków nie ma żadnej niedogodności, jak to występowała w {{Code|{{sr|#p.PobierzFrameEwentualnieParent(frame)|p=Parametry}}}}. === Parametr funkcji nietablicowy === Jeśliby do funkcji tablicy transportu dać wartość równą nie tablicy, to wtedy równoważnie możemy napisać: <syntaxhighlight lang="lua"> local wartosc="wartość"; local wynik=p["Nazwa funkcji"](wartosc); </syntaxhighlight> to wtedy definicję tej funkcji piszemy: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(frame,true); local wartosc=args[1]; end; </syntaxhighlight> lub równoważnie możemy zapisać: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); local wartosc=parametry_modul.PobierzArgsParametry(frame); end; </syntaxhighlight> === Brak parametrów funkcji === A jeżeli nie wsadziliśmy żadnej wartości do funkcji ramki tablicy transportu lub tą wartością jest {{Code|nil}}, wtedy: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"](); </syntaxhighlight> wtedy definicja tej funkcji wygląda: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); -- Zmienna: args, wskazuje na wartość, którą jest tablicą pustą, tzn. w tej tablicy nie ma wcale elementów; local args=parametry_modul.PobierzArgsParametry(frame); end; </syntaxhighlight> === Zmienna {{Code|args}} - alternatywny przypadek dla wartości tablicowych niż te bez drugiego parametru === Widzimy, że wtedy zmienna {{Code|args}} jest normalną pustą tablicą, i nie musimy wtedy wcale pisać poniżej, bo wtedy wychodzi w tym przypadku na to samo: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(frame,true); </syntaxhighlight> === Różnica drugiego parametru w przypadku wartości nietablicowych === Argument drugi w {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, który w naszym przypadku musi mieć wartość {{Code|true}}, a wtedy jest jedynie sens, gdy {{Code|frame}} nie jest tablicą, i gdy chcemy tą wartość umieścić w tablicy, a nie powtórzyć wartość, tzn. chcemy napisać: {{Code|{{(}}frame,{{)}}}}, w przeciwnym wypadku musilibyśmy napisać coś w rodzaju, zamiast tak spreparowanej tablicy: {{Code|frame}}, czyli: <syntaxhighlight lang="lua"> -- Pierwszy przypadek, gdy frame jest wartością nietablicową; local parametry_modul=require("Module:Parametry"); ... -- Zwracana wartość: args, to nic innego niż: {frame,}; local args=parametry_modul.PobierzArgsParametry(frame,true); ... -- Zwracana wartość: args, to nic innego niż: frame, a nie {frame,}, jak poprzednio; local args=parametry_modul.PobierzArgsParametry(frame); </syntaxhighlight> == {{Code|p.PobierzParametryRamki}} == Funkcja służy do ustawienia pewnych domyślnych dwóch pewnych funkcji służących do pobieranie danych z tabelki z pierwszej tej funkcji: * Jeżeli ona posiada klucz o wartości {{Code|args}}, ** to zwracana jest ta właśnie tablica jako argument pierwszej tej funkcji, jeżeli jest w ogóle tablicą, ** w przeciwnym wypadku zwracana jest ta oryginalna tablica, też jako argument tej funkcji, * w przeciwnym dalszym wypadku zwracana jest zwracana wartość ta, jako argument tej drugiej funkcji, która zwraca prawdziwą wartość z argumentu tylko za pierwszym razem, z tej funkcji, za następnym i dalszym razem {{Code|nil}}. Z tak utworzonej ogólnie większej funkcji wykorzystywana jest w budowie omawianej funkcji, która jest zwracana przez omawianą funkcję, która względem jego budowy wywołuje raz pierwszą albo drugą poprzednią wspomnianą funkcję zależną od rodzaju zmiennej {{Code|frame}}, która może być tabelką, ale nie musi być. Ta funkcja zwracana przez funkcję w nagłówku przyjmuje argument, która jest kluczem do tych wspomnianych, może że, * tabel (dokładnie, która ta może tabelka to zależy od formatu tej naszej rozważanej zmiennej), * a jeżeli to nie tabelka, co jest zwracane, to już zostało powiedziane. Definicja skrótowa tej funkcji jest: <syntaxhighlight lang="lua"> function p.PobierzParametryRamki(frame)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu. }} Weźmy ramkę sformułowaną w wikikodzie jako dziecko w szablonie rodzicu: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5}} </syntaxhighlight> === Funkcje, z funkcją parametrów, z tablicą ramki lub one z podtablicą {{Code|args}} === To wtedy tablica ramki tablicy transportu posiada właśnie {{Code|frame}}, która jest tablicą, i na pewno posiada tablicę o nazwie {{Code|args}}, to wtedy tę funkcję wywołaną w ramce, która wywołuje funkcję w nagłówku, formułujemy: <syntaxhighlight lang="lua"> local p={}; local p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametryRamki=parametry_modul.PobierzParametryRamki(frame); ... end; </syntaxhighlight> ==== Przykład wywołania funkcji z funkcją parametrów z tablicą {{Code|args}} ==== Równie dobrze funkcję z ramki można wywołać w sposób, co wtedy ta funkcja też zostanie wywołana pozytywnie: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"]{args={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}}; </syntaxhighlight> W tej funkcji nie trzeba definiować funkcji fałszywej {{Code|getParent}}, w postaci: {{Code|getParent{{=}}function()end}}. Widzimi, że ta tablica posiada nazwę zmiennej tablicowej o nazwie {{Code|args}}, ale ona nie jest tablicą ramki tablicy transportu, ale tą tablicę możemy bezposrednio wsadzić w tą główną tablicę w samym argumencie funkcji. ==== Przykład wywołania z tablicą bez podtablicy {{Code|args}} ==== Równie dobrze możemy wywołać tę funkcję zdefiniowaną naszą w jakimś module w sposób: <syntaxhighlight lang="lua"> local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; local wynik=p["Nazwa funkcji"]{tabela); </syntaxhighlight> też ta funkcja prawidłowo się wywoła. W tym przypadku, jak i w przypadkach powyżej, wyniki uzyskuje się w następującym wywołaniach: <syntaxhighlight lang="lua"> --- Zmienna: wartosc1, przyjmuje wartość: "wartość1"; local wartosc1=PobierzParametryRamki("nazwa1"); --- Zmienna: wartosc2, przyjmuje wartość: "wartość2"; local wartosc2=PobierzParametryRamki("nazwa2"); --- Zmienna: wartosc3, przyjmuje wartość: "wartość3"; local wartosc3=PobierzParametryRamki(1); </syntaxhighlight> ==== Przykłąd wywołania funkcji z wartością nietablicową ==== W innym przypadku wywołań funkcji ramki jest wsadzenie do niej zwykłego nietablicowego elementu, może być też to wartość: {{Code|nil}}. A to wywołanie jest: <syntaxhighlight lang="lua"> local wartosc="wartość"; --Zmienna: wartosc, nie jest w tym przypadku tablicą; local wynik=p["Nazwa funkcji"](wartosc); </syntaxhighlight> === Wywołania funkcji parametrów bez argumentów - wiele kolejnych wywołań jednocześnie === Wtedy w tej ramce w celu uzyskania, jakikolwiek wartości jest przykład wywołania tej funkcji zwracanej przez funkcję w ramce z argumentem pustym. <syntaxhighlight lang="lua"> -- Zmienna: wartość1, przyjmuje wartość: "wartość"; Jeżeli ona, przyjmuje wartość: nil, to wywołanie rzuci: nil, i za każdym następny razem; local wartosc1=PobierzParametryRamki(); -- Zmienna: wartość2, przyjmuje wartość: nil; local wartosc2=PobierzParametryRamki(); </syntaxhighlight> W wywołaniach powinno dbać się o właściwą kolejność wywołań, bo argumentem funkcji z tablicy transportu może być zwykła tablicowa wartość. Najpierw uzyskujemy wartości nietablicowe, a później tablicowe, na wypadek niewiadomej {{Code|frame}} jakiego typu ma być wartość. === Dwa przypadki, parametr w tablicy, lub wartość nietablicowa funkcji === Też ta zmienna może istnieć pod kilkoma możliwymi kluczami, lub tą zmienną może być jedyny argument funkcji, która jest nietablicową wartością, wtedy ją się wywołuje jako dla przypadku, gdy parametr jest nietablicowy lub jest pod kluczem {{Code|tekst}}: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local tekst=parametry_modul.PobierzParametryRamki(frame)("tekst"); </syntaxhighlight> === Przypadek, gdy parametr funkcji nie jest tablicą === Lub chcemy tę funkcję wywołać bezparametrowo, gdy chcemy, by {{Code|frame}} nie była tablicą: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local tekst=parametry_modul.PobierzParametryRamki(frame)(); </syntaxhighlight> ==== Omówienie przypadku istnienia tego samego wariantu zmiennej raz podtablicą, a raz jako zmienna nietablicowa === * Wtedy ta zmienna w przedostatnim przykładzie jest pod wartością {{Code|tekst}}, gdy wartość {{Code|frame}} jest tablicą, * lub może być jedyną wartością, którą jest {{Code|frame}}, jako zmienna nietablicowa, wtedy ta zmienna też jest pod {{Code|tekst}}, ** ta funkcja uzyskana z: {{Code|{{sr|#p.PobierzParametryRamki(frame)|p=Parametry}}}}, wtedy może być wywołana tylko raz z nienilową wartością zwracaną, następnym razem zwraca wartość {{Code|nil}}, wtedy to dotyczy przedostatniego i ostatniego przykładu. === Jakma liczyć element funkcji w przypadku różnych jej parametrów === Jeżeli {{Code|frame}} jest nietablicowa, to wtedy wartość {{Code|tekst}} jest taka sama, co {{Code|frame}}. A jeżeli jest tablicą, to ta wartością jest {{Code|frame.args["tekst"]}}, lub gdy {{Code|args}} nie istnieje, lub istnieje, ale jest nietablicowa, to wtedy ta wartość jest {{Code|frame["tekst"]}}. === Parametry alternatywne funkcji - przykład wykorzystania funkcji parametrów === A gdy zmienne istnieją pod wieloma kluczami, lub gdy funkcję wywołano ze zmienną nietablicową, wtedy ogólnie możemy dla przykładu powiedzieć: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local PobierzParametryRamki=parametry_modul.PobierzParametryRamki(frame); local wartosc1=PobierzParametryRamki("nazwa1") or PobierzParametryRamki(1); local wartosc2=PobierzParametryRamki("nazwa2") or PobierzParametryRamki(2); local wartosc3=PobierzParametryRamki("nazwa3") or PobierzParametryRamki(3); </syntaxhighlight> * Wtedy ta zmienna jest pod kluczem, np.: {{Code|nazwa1}} lub {{Code|1}}, tablicy ramki {{Code|frame}} tablicy transportu, następne wywołania dla następnych kluczy też zrzucą pewne wartości, * lub jest ona zwykłą nietablicową wartością mogącą być równą, nawet {{Code|nil}}. ---- * Następne wywołania uzyskanej tak funkcji w przypadku, gdy {{Code|frame}} jest nietablicowy, rzucać będzie z samej definicji funkcji wartości {{Code|nil}}, czyli {{Code|wartosc2{{=}}wartosc3{{=}}nil}}, ale za to wartość {{Code|wartosc1}} nie musi być, ale może, wartością {{Code|nil}}, jeśli tą wartością jest, gdy {{Code|frame{{=}}nil}}, * w przeciwnym wypadku za pierwszym razem tej wartości nietablicowej uzyskamy wartość nie {{Code|nil}}, a za drugim i dalszym zawsze wartość {{Code|nil}}. == {{Code|p.PobierzElementNumerowanyZFrameLubTablicy}} == Definicja skrótowa funkcji jest z parametrem charakteryzującym pewien zestaw zmiennych {{Code|frame}}, * które nie musi być tablicą ramki tablicy transportu, tylko moze być innym parametrem, który jest tablicą parametrów podanych do funkcji, * nawet gdy parametrem podanym do funkcji, w której wykorzystujemy tą funkcję, jest jedyna zmienna będąca tablicą ramki. Ale z drugiej strony, tak nie musi być, może być to rozbudowany zestaw zmiennych, np. nazwanych i nienazwanych, którego wszystkie sposoby podawania łączymy jednym sposobem podawania. Mimo że parametry funkcji są parametrami nienazwanymi, mogą być one ponumerowane, ale zmienna w tablicy może przyjmować wartość tą samą na różne sposoby, raz w sposób nazwany, a za innym sposobem jako nienazwany. Ogólnie ostateczne parametry łączymy w dane parametry za pomocą jednego sposobu, tzn. za pomocą tej funkcji, i dla tak uzyskanej tablicy tworzymy funkcję zwracaną przez funkcję w nagłówku, która przyjmuje parametr, który jest kluczem tej uzyskanej tablicy. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobierzElementNumerowanyZFrameLubTablicy(frame)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu. }} Weźmy najprostszy sposób realizacji tej funkcji, w realizacji: {{Code|1-1, 2-2, 3-3}}, czyli ten opis jest zaraz poniżej. === Sposoby wywołania funkcji === ; Pierwszy sposób{{dk}} Weźmy funkcję, którą można wywoływać z wieloma parametrami, jak i w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, którą przykładowo piszemy jego wywołanie wewnątrz innej funkcji na pięć sposobów, czyli teraz pierwszy sposób z tylko z parametrem, więc tablicą ramki tablicy transportu wywodzącą się z ramki uruchomioną w wikikodzie w jakimś szablonie rodzicu: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"](frame); </syntaxhighlight> ; Drugi sposób{{dk}} A teraz drugi sposób, pisząc, bezpośrednio inaczej, formułując wywołanie tej funkcji, używając zmiennych tablicowych tablicy ramki, ale to nie jest tak naprawdę tablica ramka tablicy transportu, tylko parametr podany bezpośrednio do funkcji, tak jak się to robi w języku {{lpg|Lua}}, nie jak w przykładzie powyżej, więc: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"]{args={"wartość1","wartość2","wartość3",},}; </syntaxhighlight> ; Trzeci sposób{{dk}} Lub równoważnie, pisząc, nie używając zmiennej {{Code|args}}: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"]{"wartość1","wartość2","wartość3",}; </syntaxhighlight> ; Czwarty sposób{{dk}} Albo te parametry wsadzając do funkcji: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"]("wartość1","wartość2","wartość3"); </syntaxhighlight> ; Piąty spssób{{dk}} Można też wywołać to wszystko w ramce, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w wikikpdzie, wtedy wsadzając parametry do ramki: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|wartość1|wartość2|wartość3}} </syntaxhighlight> === Omówienie pobierania takich parmetrów === A jak połączyć wszystkie te pięć sposobów, posługiwać się tymi sposobami wewnątrz funkcji {{Code|Nazwa funkcji}} w sposób jednolity, jedynie wtedy należy skorzystać z funkcji z definiowaną w jakimś module w sposób: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(...) local tablica_prametrow_funkcji={...}; local parametry_modul=require("Module:Parametry"); local PobierzElementNumerowanyZFrameLubTablicy=parametry_modul.PobierzElementNumerowanyZFrameLubTablicy(tablica_prametrow_funkcji); ... end; </syntaxhighlight> Wtedy za pomocą zmiennej {{Code|PobierzElementNumerowanyZFrameLubTablicy}} dostaliśmy się do funkcji, która przyjmuje jedyny parametr, aby dostać się do elementów tablicy uzyskanej w wewnątrz tej funkcji, zdefiniowaną w tablicy {{Code|tablica_prametrow_funkcji}}, która jest nic innym jak zestawem parametrów w funkcji: {{Code|Nazwa funkcji}}. * W pierwszym i drugim sposobem zmienną tą nazwijmy to jako {{Code|args}}, jest zmienną z podtablicy innego {{Code|args}} przekazanych jako parametr tablicy do funkcji, * w trzecim sposobie tą zmienną jest cała tablica, * a czwartym jest zestaw parametrów ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. A czym się różnią się te sposoby, a więc te sposoby można powiązać jedną tylko funkcją powiedzianą w nagłówku według przykładu podaną zaraz powyżej, wtedy możemy dostawać się do tych samych zmiennych o takich samych nazwach i wartościach, ale w różnych reprezentacjach na różne sposoby, wtedy można powiedzieć, że: <syntaxhighlight lang="lua"> args[1]="wartość1"; args[2]="wartość2"; args[3]="wartość3"; </syntaxhighlight> Czyli w wyniku działania funkcji w nagłówku, otrzymamy funkcję zwracającą te wartości, która operuje na tej tablicy, której wynikiem jest zestaw zmiennych ponumerowanych, ogólnie nienazwanych, której wartości odpowiadają te podane w ramce ostatniej powyżej. Na podstawie tego wiemy, jak działa funkcja ta z nagłówka. === Nazwy alternatywne danych parametrów funkcji ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}} === Pisząc w inny sposób, można też wskazywać: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(...) local tablica_prametrow_funkcji={...}; local parametry_modul=require("Module:Parametry"); local PobierzElementNumerowanyZFrameLubTablicy=parametry_modul.PobierzElementNumerowanyZFrameLubTablicy(tablica_prametrow_funkcji); local wartosc1=PobierzElementNumerowanyZFrameLubTablicy("nazwa1") or PobierzElementNumerowanyZFrameLubTablicy(1); local wartosc2=PobierzElementNumerowanyZFrameLubTablicy("nazwa2") or PobierzElementNumerowanyZFrameLubTablicy(2); local wartosc3=PobierzElementNumerowanyZFrameLubTablicy("nazwa3") or PobierzElementNumerowanyZFrameLubTablicy(3); end; </syntaxhighlight> Zmienne w przykładzie o kluczach: {{Code|nazwa1}}, {{Code|nazwa2}} i {{Code|nazwa3}}, posiadające pewne swoje wartości, to są zmienne w tablicy {{Code|tablica_prametrow_funkcji}}, podane też jako zmienne, jako pewne argumenty tablicy, który są w tej funkcji zwracanej jako argument (parametr) funkcji, * jeżeli argumenty podano w postaci jednego parametru funkcji w postaci pewnej tablicy z np. elementami nazwanymi, * lub jako wiele argumentów w ramce, w wikikodzie, w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w pewnym szablonie, * a rozpatrując dalej elementy względem ich nazw, np. alternatywnych, to te numery mogą być kolejo do nazw ich odpowiedników nazwanych, które w przykładzie powyżej, mają pierwszeństwo, ale tak nie musi być, te parametry: {{Code|1}}, {{Code|2}} i {{Code|3}}, to jest numer parametru, jeżeli argumenty do funkcji podano w postaci wielu jego parametrów. == {{Code|p.PobierzParametr}} == Ta funkcja zwraca znów inną funkcję, która ma jedyny parametr, mówiący jakiego parametru poszukujemy, co jest wyjaśnione w definicji funkcji z nagłówka, że ona zwraca tą właśnie funkcje. Definicja skrótowa dunkcji: <syntaxhighlight lang="lua"> function p.PobierzParametr(frame,czy_frame_lub_parent,czy_frame) ... return function(nazwa) return __pobierz_parametr_table_args(nazwa); end; end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu. | 2 = {{Code|czy_frame_lub_parent}} i {{Code|czy_frame}} | _2 = Parametry logiczne dodatkowe funkcji. }} === Wartośc zwracanainumer metody === Funkcja zwraca jednocześnie dwie wartości, ta zwrócona z funkcji z nagłówka, prawdziwą wartość, i numer metody w postaci: {{Code|return wartosc, numer_metody}}. === Opis zwracanych elementów przez funkcję zwracaną - różnemetody zwracania, jak je wykorzystać === Ta funkcja zwracana ma w swojej definicji inną jeszcze funkcję z tym samym parametrem, co jego rodzic, i to jest za każdym razem inna funkcja w zależności z jakim typem danych się posługujemy {{Code|frame}} i jakie podaliśmy parametry. Gdy warunkiem, gdy zmienna {{Code|frame}} jest tablicą, czyli te zmienne druga: {{Code|czy_frame_lub_parent}} (jeżeli funkcja jest uruchomiona w ramce w szablonie, jeżeli ma wartość {{Code|true}}, to ona wybiera raz parametr z: {{Code|frame.args[nazwa or 1]}}, a za innym razem z {{Code|pf.args[nazwa or 1]}}, gdzie {{Code|pf{{=}}frame:getParent()}}, tutaj jest zwracana wartość: {{Code|return wartosc,2}}). Czy trzecia: {{Code|czy_frame}} (która mówi, jeżeli funkcję uruchomiono w ramce, ale przy wartości prawdziwej tego pierwszego podanego parametru, czyli {{Code|true}}, wybierana jest zawsze wartość {{Code|frame.args[nazwa or 1}}}, w przeciwnym wypadku uruchamiana jest funkcja {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, tutaj zwracana jest wartość {{Code|return wartosc,1}}). Jeżeli wartością {{Code|frame}} jest wartość nietablicowa, ale niebędącą wartością {{Code|nil}}, wtedy ustawiana jest funkcja, która tylko za pierwszym razem zwraca nienilową wartość {{Code|return wartosc,0}}, a później zwraca wartość {{Code|return nil,0}}. Gdy wartością {{Code|frame}} jest {{Code|nil}}, to funkcja zawsze wraca tą wartość {{Code|return nil,0}}. Powyższy sposób działa również dobrze, gdy zdefiniujemy w parametrach funkcji fałszywą funkcję {{Code|frame.getParent}}. Gdy funkcja nie jest uruchamiana w ramce lub funkcja {{Code|frame.getParent}} nie jest zdefiniowana, to wtedy funkcja wchodzi zawsze w ten jej krok, jakby {{Code|czy_frame_lub_parent}} było {{Code|false}} według tego powyżej, to wtedy brana jest zmienna {{Code|czy_frame}}, i jaką wartość ona przyjmuje. === Nazwy alternatywne parametrów === Funkcję pisze się według sposobu, którą się wywołuje według: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame); local wartosc1=PobierzParametr("nazwa1") or PobierzParametr(1); local wartosc2=PobierzParametr("nazwa2") or PobierzParametr(2); local wartosc3=PobierzParametr("nazwa3") or PobierzParametr(3); </syntaxhighlight> Na wypadek wartości nietabelowej, tą wartość zapisuje się jako pierwszą w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a dla wartości tabelowych, jaka jest kolejność to jest obojętne, byle by to było sensowne. === Wywołania funkcji w ramce, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, z funkcją parametrów === Tę funkcję podobnie się wywołuje jak funkcję: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}. Wartością {{Code|frame}} nie musi być tablica ramki tablicy transportu, równie dobrze może być to dowolna tablica lub wartość nietablicowa. Weźmy ramkę, w której uruchamiamy funkcję ramki: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}} </syntaxhighlight> === Przykłady wykorzystania funkcji === ; Przykład pierwszy{{dk}} Ona musi być wywołana z parametrem {{Parametr|wyspecjalizowana|tak}}, jako podpowiedź, że liczą się parametry ramki dziecka, a nie jego rodzica, czyli szablonu. Wtedy funkcję {{Code|Nazwa funkcji}} definiujemy: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame,true); ... end; </syntaxhighlight> Wtedy parametr {{Parametr|wyspecjalizowana|tak}} jest ignorowany, a przy wartości {{Code|false}} drugiego parametru funkcji, czyli wywołania: {{Code|local PobierzParametr{{=}}parametry_modul.PobierzParametr(frame,false);}}, już nie, ale nie zawsze. W takim przypadku według powyższego przykładu raz jest brana wartość, jeżeli istnieje, z {{Code|frame.args}}, a jak ona nie istnieje, to wtedy z: {{Code|pf.args}}. ; Przykład drugi{{dk}} Weźmy inny przypadek: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame,false,true); ... end; </syntaxhighlight> Przy tym też parametr: {{Parametr|wyspecjalizowana|tak}}, jest ignorowany, wtedy jest zawsze wybierana do rozważań tablica: {{Code|frame.args}}. ; Przykład trzeci{{dk}} Znów w innym przypadku, gdzie parametr: {{Parametr|wyspecjalizowana|tak}}, jest zawsze rozważany w naszym wypadku: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame,false,false); ... end; </syntaxhighlight> To to wywołanie, wtedy dokładnie działa jak funkcja: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, a zwrócona funkcja: {{Code|PobierzParametr}} pobiera elementy z tak uzyskanej tablicy {{Code|args}} poprzez nią. === Przypadek nietablicowego charakteru parametrów funkcji === W przypadku, gdy {{Code|frame}} nie jest tablicą, wtedy parametry: {{Code|czy_frame_lub_parent}} i {{Code|czy_frame}}, są w takim przypadku zawsze ignorowane, ale muszą być ustawione na wypadek, gdyby do funkcji {{Code|Nazwa funkcji}} wsadzono tablicę, np. z ramki, tzn. tablicę ramki funkcji tablicy transportu. === Ogólny przypadek, często stosowany === Najprostszym często ogólnym przykładem, który prawie zawsze jest stosowany: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame); ... end; </syntaxhighlight> Wtedy parametr: {{Parametr|wyspecjalizowana|tak}}, jest prawie zawsze nieignorowany, ale nie zawsze. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> p7na5dwd30jokcjbhslyb3cxir8exgq 555744 555743 2026-09-11T19:43:12Z Persino 2851 /* Przykłąd wywołania funkcji z wartością nietablicową */ 555744 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} Są tutaj przedstawione funkcje parametrów. == {{Code|p.PobierzFrameEwentualnieParent}} == Argument tej funkcji {{Code|frame}} koniecznie musi być tablicą, w przypadku przeciwnym wywoła to błąd języka {{lpg|Lua}}, że z wartości nietabelowej chcemy wyliczyć jego nieistniejący element {{Code|getParent}}, który ma prawo nie być. Funkcja pobiera parametry ramki szablonu rodzica, a nie dziecka, a jeżeli w dziecku w ramce w wikikodzie w szablonie podamy specjalny parametr {{Parametr|wyspecjalizowana|tak}}, to wtedy ta funkcja ściąga parametry ramki. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobierzFrameEwentualnieParent(frame)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu. }} === Sterowanie funkcją === Tą funkcją można sterować ze strony ramki tym właśnie specjalnym parametrem o wartości niepustej, którą jest {{Parametr|wyspecjalizowana|tak}}. ==== Przykłady wykorzystania z parametrem sterującym ==== W ramce podajemy argumenty wraz z tym specjalnym parametrem: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}} </syntaxhighlight> To wtedy w kodzie w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} w module o nazwie {{Code|Nazwa modułu}}, piszemy: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzFrameEwentualnieParent(frame).args; .... end; </syntaxhighlight> To wtedy w kodzie ściągane parametry ramki dziecka. === Pobieranie oryginalnej tablicy === Tę funkcję można równie dobrze wykorzystać do zwykłych tabel: <syntaxhighlight lang="lua"> local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzFrameEwentualnieParent(tabela); </syntaxhighlight> === Możliwość tej samej funkcji uruchomioną w ramce lub z podaniem do niej pewnego zestawu parametrów w postaci tablicy === A w tym przypadku ta funkcja nic nie robi, tylko zmienna {{Code|args}} referencyjnie wskazuje na tablicę {{Code|tablica}}. Ale można ją wykorzystać, gdy by funkcja {{Code|Nazwa funkcji}}, była uruchomiona ze zwykłą tablicą, ale z możliwością, że to może być tablicą ramki {{Code|frame}} tablicy transportu, np.: <syntaxhighlight lang="lua"> --- Pierwsza możliwość; local wartosc1=p["Nazwa funkcji"](frame); -- Druga możliwość local wartosc2=p["Nazwa funkcji"]{["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; </syntaxhighlight> === Niedogodności stosowania z funkcji === Dla obu jest taka niedogodność, że jedynie jest taka nieprawidłowość, że w przypadku parametru tablicy ramki tablicy transportu należy podawać uzyskany element {{Code|args}}, a w przypadku zwykłej tablicy już nie, tą niedokodność rozwiązuje funkcja: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}. == {{Code|p.PobierzArgsParametry}} == Argument tej funkcji {{Code|frame}} koniecznie nie musi być tablicą, bo wtedy nie wywoła to błędu języka {{lpg|Lua}}, że z wartości nietabelowej chcemy wyliczyć jego niepusty element {{Code|getParent}}, bo przedtem sprawdzana jest w tej funkcji, czy jest to tablica. W definicji tej funkcji zmienna uzyskana z funkcji: {{Code|{{sr|#p.PobierzFrameEwentualnieParent(frame)|p=Parametry}}}}, a jeśli jej składowa {{Code|args}} jest tablicą, to jest właśnie ona zwracana, a jeśli istnieje, ale nie jest tablicą, lub ona nie istnieje, to wtedy brana jest właśnie wartość tablicowa {{Code|frame}}, jeśli jest ona taka, a gdy nie, to wtedy z tej funkcji tutaj nie korzystamy. Funkcja pobiera parametry ramki szablonu rodzica, a nie dziecka, a jeżeli w dziecku w ramce w wikikodzie w szablonie podamy specjalny parametr {{Parametr|wyspecjalizowana|tak}}, to wtedy ta funkcja ściąga parametry ramki. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobierzArgsParametry(frame, czy_nie_tablica_jako_tablica)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica transportu ramki. | 2 = {{Code|czy_nie_tablica_jako_tablica}} | _2 = Czy wartości nietablicowe umieszczać w jednoelemenowej tabeli. }} === Opis działania === Funkcja wykorzystuje wspomnianą powyżej funkcję do swojego działania, ona jest wtedy aktywowana, gdy zmienna {{Code|frame}} jest tablicą, i jest sprawdzane, czy ona posiada nazwany element o kluczu {{Code|args}}, i czy jest on tablicowy. Jeżeli wartością zmiennej {{Code|frame}} nie jest tablica, ale nie przybiera wartości {{Code|nil}}, to ona jest umieszczana w tablicy, jeżeli zmiennej {{Code|czy_nie_tablica_jako_tablica}} przydzielimy wartość {{Code|true}}, w przeciwnym wypadku zwracana jest ona w postaci niezmienionej, a jeżeli wartość tej zmiennej nie istnieje, to zwracana jest zwykła tablica pusta. Tą funkcją można sterować ze strony ramki tym właśnie specjalnym parametrem o wartości niepustej. === Przykład wywołania funkcji z funkcją parametrów === W ramce podajemy argumenty wraz z tym specjalnym parametrem: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}} </syntaxhighlight> ==== Użycie funkcji parametrów ==== To wtedy w kodzie w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} w module o nazwie {{Code|Nazwa modułu}}, piszemy: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(frame); .... end; </syntaxhighlight> To wtedy w kodzie ściągane parametry ramki dziecka. === Wykorzystanie fukcji w różnych sytuacjach === ; Przypadek pierwszy{{dk}} Tę funkcję można równie dobrze wykorzystać do zwykłych tabel: <syntaxhighlight lang="lua"> local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(tabela); </syntaxhighlight> ; Drugi przypadek{{dk}} A w tym przypadku ta funkcja nic nie robi, tylko zmienna {{Code|args}} referencyjnie wskazuje na tablicę {{Code|tablica}}. Ale można ją wykorzystać, gdyby funkcja {{Code|Nazwa funkcji}}, była uruchomiona ze zwykłą tablicą, ale z możliwością, że to może być tablicą ramki {{Code|frame}} tablicy transportu, np.: <syntaxhighlight lang="lua"> --- Pierwsza możliwość; local wartosc1=p["Nazwa funkcji"](frame); -- Druga możliwość local wartosc2=p["Nazwa funkcji"]{["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; </syntaxhighlight> === Usunięcie niedogodności === Dla obu tych przypadków nie ma żadnej niedogodności, jak to występowała w {{Code|{{sr|#p.PobierzFrameEwentualnieParent(frame)|p=Parametry}}}}. === Parametr funkcji nietablicowy === Jeśliby do funkcji tablicy transportu dać wartość równą nie tablicy, to wtedy równoważnie możemy napisać: <syntaxhighlight lang="lua"> local wartosc="wartość"; local wynik=p["Nazwa funkcji"](wartosc); </syntaxhighlight> to wtedy definicję tej funkcji piszemy: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(frame,true); local wartosc=args[1]; end; </syntaxhighlight> lub równoważnie możemy zapisać: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); local wartosc=parametry_modul.PobierzArgsParametry(frame); end; </syntaxhighlight> === Brak parametrów funkcji === A jeżeli nie wsadziliśmy żadnej wartości do funkcji ramki tablicy transportu lub tą wartością jest {{Code|nil}}, wtedy: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"](); </syntaxhighlight> wtedy definicja tej funkcji wygląda: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); -- Zmienna: args, wskazuje na wartość, którą jest tablicą pustą, tzn. w tej tablicy nie ma wcale elementów; local args=parametry_modul.PobierzArgsParametry(frame); end; </syntaxhighlight> === Zmienna {{Code|args}} - alternatywny przypadek dla wartości tablicowych niż te bez drugiego parametru === Widzimy, że wtedy zmienna {{Code|args}} jest normalną pustą tablicą, i nie musimy wtedy wcale pisać poniżej, bo wtedy wychodzi w tym przypadku na to samo: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(frame,true); </syntaxhighlight> === Różnica drugiego parametru w przypadku wartości nietablicowych === Argument drugi w {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, który w naszym przypadku musi mieć wartość {{Code|true}}, a wtedy jest jedynie sens, gdy {{Code|frame}} nie jest tablicą, i gdy chcemy tą wartość umieścić w tablicy, a nie powtórzyć wartość, tzn. chcemy napisać: {{Code|{{(}}frame,{{)}}}}, w przeciwnym wypadku musilibyśmy napisać coś w rodzaju, zamiast tak spreparowanej tablicy: {{Code|frame}}, czyli: <syntaxhighlight lang="lua"> -- Pierwszy przypadek, gdy frame jest wartością nietablicową; local parametry_modul=require("Module:Parametry"); ... -- Zwracana wartość: args, to nic innego niż: {frame,}; local args=parametry_modul.PobierzArgsParametry(frame,true); ... -- Zwracana wartość: args, to nic innego niż: frame, a nie {frame,}, jak poprzednio; local args=parametry_modul.PobierzArgsParametry(frame); </syntaxhighlight> == {{Code|p.PobierzParametryRamki}} == Funkcja służy do ustawienia pewnych domyślnych dwóch pewnych funkcji służących do pobieranie danych z tabelki z pierwszej tej funkcji: * Jeżeli ona posiada klucz o wartości {{Code|args}}, ** to zwracana jest ta właśnie tablica jako argument pierwszej tej funkcji, jeżeli jest w ogóle tablicą, ** w przeciwnym wypadku zwracana jest ta oryginalna tablica, też jako argument tej funkcji, * w przeciwnym dalszym wypadku zwracana jest zwracana wartość ta, jako argument tej drugiej funkcji, która zwraca prawdziwą wartość z argumentu tylko za pierwszym razem, z tej funkcji, za następnym i dalszym razem {{Code|nil}}. Z tak utworzonej ogólnie większej funkcji wykorzystywana jest w budowie omawianej funkcji, która jest zwracana przez omawianą funkcję, która względem jego budowy wywołuje raz pierwszą albo drugą poprzednią wspomnianą funkcję zależną od rodzaju zmiennej {{Code|frame}}, która może być tabelką, ale nie musi być. Ta funkcja zwracana przez funkcję w nagłówku przyjmuje argument, która jest kluczem do tych wspomnianych, może że, * tabel (dokładnie, która ta może tabelka to zależy od formatu tej naszej rozważanej zmiennej), * a jeżeli to nie tabelka, co jest zwracane, to już zostało powiedziane. Definicja skrótowa tej funkcji jest: <syntaxhighlight lang="lua"> function p.PobierzParametryRamki(frame)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu. }} Weźmy ramkę sformułowaną w wikikodzie jako dziecko w szablonie rodzicu: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5}} </syntaxhighlight> === Funkcje, z funkcją parametrów, z tablicą ramki lub one z podtablicą {{Code|args}} === To wtedy tablica ramki tablicy transportu posiada właśnie {{Code|frame}}, która jest tablicą, i na pewno posiada tablicę o nazwie {{Code|args}}, to wtedy tę funkcję wywołaną w ramce, która wywołuje funkcję w nagłówku, formułujemy: <syntaxhighlight lang="lua"> local p={}; local p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametryRamki=parametry_modul.PobierzParametryRamki(frame); ... end; </syntaxhighlight> ==== Przykład wywołania funkcji z funkcją parametrów z tablicą {{Code|args}} ==== Równie dobrze funkcję z ramki można wywołać w sposób, co wtedy ta funkcja też zostanie wywołana pozytywnie: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"]{args={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}}; </syntaxhighlight> W tej funkcji nie trzeba definiować funkcji fałszywej {{Code|getParent}}, w postaci: {{Code|getParent{{=}}function()end}}. Widzimi, że ta tablica posiada nazwę zmiennej tablicowej o nazwie {{Code|args}}, ale ona nie jest tablicą ramki tablicy transportu, ale tą tablicę możemy bezposrednio wsadzić w tą główną tablicę w samym argumencie funkcji. ==== Przykład wywołania z tablicą bez podtablicy {{Code|args}} ==== Równie dobrze możemy wywołać tę funkcję zdefiniowaną naszą w jakimś module w sposób: <syntaxhighlight lang="lua"> local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; local wynik=p["Nazwa funkcji"]{tabela); </syntaxhighlight> też ta funkcja prawidłowo się wywoła. W tym przypadku, jak i w przypadkach powyżej, wyniki uzyskuje się w następującym wywołaniach: <syntaxhighlight lang="lua"> --- Zmienna: wartosc1, przyjmuje wartość: "wartość1"; local wartosc1=PobierzParametryRamki("nazwa1"); --- Zmienna: wartosc2, przyjmuje wartość: "wartość2"; local wartosc2=PobierzParametryRamki("nazwa2"); --- Zmienna: wartosc3, przyjmuje wartość: "wartość3"; local wartosc3=PobierzParametryRamki(1); </syntaxhighlight> ==== Przykład wywołania funkcji z wartością nietablicową ==== W innym przypadku wywołań funkcji ramki jest wsadzenie do niej zwykłego nietablicowego elementu, może być też to wartość: {{Code|nil}}. A to wywołanie jest: <syntaxhighlight lang="lua"> local wartosc="wartość"; --Zmienna: wartosc, nie jest w tym przypadku tablicą; local wynik=p["Nazwa funkcji"](wartosc); </syntaxhighlight> === Wywołania funkcji parametrów bez argumentów - wiele kolejnych wywołań jednocześnie === Wtedy w tej ramce w celu uzyskania, jakikolwiek wartości jest przykład wywołania tej funkcji zwracanej przez funkcję w ramce z argumentem pustym. <syntaxhighlight lang="lua"> -- Zmienna: wartość1, przyjmuje wartość: "wartość"; Jeżeli ona, przyjmuje wartość: nil, to wywołanie rzuci: nil, i za każdym następny razem; local wartosc1=PobierzParametryRamki(); -- Zmienna: wartość2, przyjmuje wartość: nil; local wartosc2=PobierzParametryRamki(); </syntaxhighlight> W wywołaniach powinno dbać się o właściwą kolejność wywołań, bo argumentem funkcji z tablicy transportu może być zwykła tablicowa wartość. Najpierw uzyskujemy wartości nietablicowe, a później tablicowe, na wypadek niewiadomej {{Code|frame}} jakiego typu ma być wartość. === Dwa przypadki, parametr w tablicy, lub wartość nietablicowa funkcji === Też ta zmienna może istnieć pod kilkoma możliwymi kluczami, lub tą zmienną może być jedyny argument funkcji, która jest nietablicową wartością, wtedy ją się wywołuje jako dla przypadku, gdy parametr jest nietablicowy lub jest pod kluczem {{Code|tekst}}: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local tekst=parametry_modul.PobierzParametryRamki(frame)("tekst"); </syntaxhighlight> === Przypadek, gdy parametr funkcji nie jest tablicą === Lub chcemy tę funkcję wywołać bezparametrowo, gdy chcemy, by {{Code|frame}} nie była tablicą: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local tekst=parametry_modul.PobierzParametryRamki(frame)(); </syntaxhighlight> ==== Omówienie przypadku istnienia tego samego wariantu zmiennej raz podtablicą, a raz jako zmienna nietablicowa === * Wtedy ta zmienna w przedostatnim przykładzie jest pod wartością {{Code|tekst}}, gdy wartość {{Code|frame}} jest tablicą, * lub może być jedyną wartością, którą jest {{Code|frame}}, jako zmienna nietablicowa, wtedy ta zmienna też jest pod {{Code|tekst}}, ** ta funkcja uzyskana z: {{Code|{{sr|#p.PobierzParametryRamki(frame)|p=Parametry}}}}, wtedy może być wywołana tylko raz z nienilową wartością zwracaną, następnym razem zwraca wartość {{Code|nil}}, wtedy to dotyczy przedostatniego i ostatniego przykładu. === Jakma liczyć element funkcji w przypadku różnych jej parametrów === Jeżeli {{Code|frame}} jest nietablicowa, to wtedy wartość {{Code|tekst}} jest taka sama, co {{Code|frame}}. A jeżeli jest tablicą, to ta wartością jest {{Code|frame.args["tekst"]}}, lub gdy {{Code|args}} nie istnieje, lub istnieje, ale jest nietablicowa, to wtedy ta wartość jest {{Code|frame["tekst"]}}. === Parametry alternatywne funkcji - przykład wykorzystania funkcji parametrów === A gdy zmienne istnieją pod wieloma kluczami, lub gdy funkcję wywołano ze zmienną nietablicową, wtedy ogólnie możemy dla przykładu powiedzieć: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local PobierzParametryRamki=parametry_modul.PobierzParametryRamki(frame); local wartosc1=PobierzParametryRamki("nazwa1") or PobierzParametryRamki(1); local wartosc2=PobierzParametryRamki("nazwa2") or PobierzParametryRamki(2); local wartosc3=PobierzParametryRamki("nazwa3") or PobierzParametryRamki(3); </syntaxhighlight> * Wtedy ta zmienna jest pod kluczem, np.: {{Code|nazwa1}} lub {{Code|1}}, tablicy ramki {{Code|frame}} tablicy transportu, następne wywołania dla następnych kluczy też zrzucą pewne wartości, * lub jest ona zwykłą nietablicową wartością mogącą być równą, nawet {{Code|nil}}. ---- * Następne wywołania uzyskanej tak funkcji w przypadku, gdy {{Code|frame}} jest nietablicowy, rzucać będzie z samej definicji funkcji wartości {{Code|nil}}, czyli {{Code|wartosc2{{=}}wartosc3{{=}}nil}}, ale za to wartość {{Code|wartosc1}} nie musi być, ale może, wartością {{Code|nil}}, jeśli tą wartością jest, gdy {{Code|frame{{=}}nil}}, * w przeciwnym wypadku za pierwszym razem tej wartości nietablicowej uzyskamy wartość nie {{Code|nil}}, a za drugim i dalszym zawsze wartość {{Code|nil}}. == {{Code|p.PobierzElementNumerowanyZFrameLubTablicy}} == Definicja skrótowa funkcji jest z parametrem charakteryzującym pewien zestaw zmiennych {{Code|frame}}, * które nie musi być tablicą ramki tablicy transportu, tylko moze być innym parametrem, który jest tablicą parametrów podanych do funkcji, * nawet gdy parametrem podanym do funkcji, w której wykorzystujemy tą funkcję, jest jedyna zmienna będąca tablicą ramki. Ale z drugiej strony, tak nie musi być, może być to rozbudowany zestaw zmiennych, np. nazwanych i nienazwanych, którego wszystkie sposoby podawania łączymy jednym sposobem podawania. Mimo że parametry funkcji są parametrami nienazwanymi, mogą być one ponumerowane, ale zmienna w tablicy może przyjmować wartość tą samą na różne sposoby, raz w sposób nazwany, a za innym sposobem jako nienazwany. Ogólnie ostateczne parametry łączymy w dane parametry za pomocą jednego sposobu, tzn. za pomocą tej funkcji, i dla tak uzyskanej tablicy tworzymy funkcję zwracaną przez funkcję w nagłówku, która przyjmuje parametr, który jest kluczem tej uzyskanej tablicy. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobierzElementNumerowanyZFrameLubTablicy(frame)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu. }} Weźmy najprostszy sposób realizacji tej funkcji, w realizacji: {{Code|1-1, 2-2, 3-3}}, czyli ten opis jest zaraz poniżej. === Sposoby wywołania funkcji === ; Pierwszy sposób{{dk}} Weźmy funkcję, którą można wywoływać z wieloma parametrami, jak i w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, którą przykładowo piszemy jego wywołanie wewnątrz innej funkcji na pięć sposobów, czyli teraz pierwszy sposób z tylko z parametrem, więc tablicą ramki tablicy transportu wywodzącą się z ramki uruchomioną w wikikodzie w jakimś szablonie rodzicu: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"](frame); </syntaxhighlight> ; Drugi sposób{{dk}} A teraz drugi sposób, pisząc, bezpośrednio inaczej, formułując wywołanie tej funkcji, używając zmiennych tablicowych tablicy ramki, ale to nie jest tak naprawdę tablica ramka tablicy transportu, tylko parametr podany bezpośrednio do funkcji, tak jak się to robi w języku {{lpg|Lua}}, nie jak w przykładzie powyżej, więc: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"]{args={"wartość1","wartość2","wartość3",},}; </syntaxhighlight> ; Trzeci sposób{{dk}} Lub równoważnie, pisząc, nie używając zmiennej {{Code|args}}: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"]{"wartość1","wartość2","wartość3",}; </syntaxhighlight> ; Czwarty sposób{{dk}} Albo te parametry wsadzając do funkcji: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"]("wartość1","wartość2","wartość3"); </syntaxhighlight> ; Piąty spssób{{dk}} Można też wywołać to wszystko w ramce, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w wikikpdzie, wtedy wsadzając parametry do ramki: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|wartość1|wartość2|wartość3}} </syntaxhighlight> === Omówienie pobierania takich parmetrów === A jak połączyć wszystkie te pięć sposobów, posługiwać się tymi sposobami wewnątrz funkcji {{Code|Nazwa funkcji}} w sposób jednolity, jedynie wtedy należy skorzystać z funkcji z definiowaną w jakimś module w sposób: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(...) local tablica_prametrow_funkcji={...}; local parametry_modul=require("Module:Parametry"); local PobierzElementNumerowanyZFrameLubTablicy=parametry_modul.PobierzElementNumerowanyZFrameLubTablicy(tablica_prametrow_funkcji); ... end; </syntaxhighlight> Wtedy za pomocą zmiennej {{Code|PobierzElementNumerowanyZFrameLubTablicy}} dostaliśmy się do funkcji, która przyjmuje jedyny parametr, aby dostać się do elementów tablicy uzyskanej w wewnątrz tej funkcji, zdefiniowaną w tablicy {{Code|tablica_prametrow_funkcji}}, która jest nic innym jak zestawem parametrów w funkcji: {{Code|Nazwa funkcji}}. * W pierwszym i drugim sposobem zmienną tą nazwijmy to jako {{Code|args}}, jest zmienną z podtablicy innego {{Code|args}} przekazanych jako parametr tablicy do funkcji, * w trzecim sposobie tą zmienną jest cała tablica, * a czwartym jest zestaw parametrów ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. A czym się różnią się te sposoby, a więc te sposoby można powiązać jedną tylko funkcją powiedzianą w nagłówku według przykładu podaną zaraz powyżej, wtedy możemy dostawać się do tych samych zmiennych o takich samych nazwach i wartościach, ale w różnych reprezentacjach na różne sposoby, wtedy można powiedzieć, że: <syntaxhighlight lang="lua"> args[1]="wartość1"; args[2]="wartość2"; args[3]="wartość3"; </syntaxhighlight> Czyli w wyniku działania funkcji w nagłówku, otrzymamy funkcję zwracającą te wartości, która operuje na tej tablicy, której wynikiem jest zestaw zmiennych ponumerowanych, ogólnie nienazwanych, której wartości odpowiadają te podane w ramce ostatniej powyżej. Na podstawie tego wiemy, jak działa funkcja ta z nagłówka. === Nazwy alternatywne danych parametrów funkcji ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}} === Pisząc w inny sposób, można też wskazywać: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(...) local tablica_prametrow_funkcji={...}; local parametry_modul=require("Module:Parametry"); local PobierzElementNumerowanyZFrameLubTablicy=parametry_modul.PobierzElementNumerowanyZFrameLubTablicy(tablica_prametrow_funkcji); local wartosc1=PobierzElementNumerowanyZFrameLubTablicy("nazwa1") or PobierzElementNumerowanyZFrameLubTablicy(1); local wartosc2=PobierzElementNumerowanyZFrameLubTablicy("nazwa2") or PobierzElementNumerowanyZFrameLubTablicy(2); local wartosc3=PobierzElementNumerowanyZFrameLubTablicy("nazwa3") or PobierzElementNumerowanyZFrameLubTablicy(3); end; </syntaxhighlight> Zmienne w przykładzie o kluczach: {{Code|nazwa1}}, {{Code|nazwa2}} i {{Code|nazwa3}}, posiadające pewne swoje wartości, to są zmienne w tablicy {{Code|tablica_prametrow_funkcji}}, podane też jako zmienne, jako pewne argumenty tablicy, który są w tej funkcji zwracanej jako argument (parametr) funkcji, * jeżeli argumenty podano w postaci jednego parametru funkcji w postaci pewnej tablicy z np. elementami nazwanymi, * lub jako wiele argumentów w ramce, w wikikodzie, w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w pewnym szablonie, * a rozpatrując dalej elementy względem ich nazw, np. alternatywnych, to te numery mogą być kolejo do nazw ich odpowiedników nazwanych, które w przykładzie powyżej, mają pierwszeństwo, ale tak nie musi być, te parametry: {{Code|1}}, {{Code|2}} i {{Code|3}}, to jest numer parametru, jeżeli argumenty do funkcji podano w postaci wielu jego parametrów. == {{Code|p.PobierzParametr}} == Ta funkcja zwraca znów inną funkcję, która ma jedyny parametr, mówiący jakiego parametru poszukujemy, co jest wyjaśnione w definicji funkcji z nagłówka, że ona zwraca tą właśnie funkcje. Definicja skrótowa dunkcji: <syntaxhighlight lang="lua"> function p.PobierzParametr(frame,czy_frame_lub_parent,czy_frame) ... return function(nazwa) return __pobierz_parametr_table_args(nazwa); end; end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu. | 2 = {{Code|czy_frame_lub_parent}} i {{Code|czy_frame}} | _2 = Parametry logiczne dodatkowe funkcji. }} === Wartośc zwracanainumer metody === Funkcja zwraca jednocześnie dwie wartości, ta zwrócona z funkcji z nagłówka, prawdziwą wartość, i numer metody w postaci: {{Code|return wartosc, numer_metody}}. === Opis zwracanych elementów przez funkcję zwracaną - różnemetody zwracania, jak je wykorzystać === Ta funkcja zwracana ma w swojej definicji inną jeszcze funkcję z tym samym parametrem, co jego rodzic, i to jest za każdym razem inna funkcja w zależności z jakim typem danych się posługujemy {{Code|frame}} i jakie podaliśmy parametry. Gdy warunkiem, gdy zmienna {{Code|frame}} jest tablicą, czyli te zmienne druga: {{Code|czy_frame_lub_parent}} (jeżeli funkcja jest uruchomiona w ramce w szablonie, jeżeli ma wartość {{Code|true}}, to ona wybiera raz parametr z: {{Code|frame.args[nazwa or 1]}}, a za innym razem z {{Code|pf.args[nazwa or 1]}}, gdzie {{Code|pf{{=}}frame:getParent()}}, tutaj jest zwracana wartość: {{Code|return wartosc,2}}). Czy trzecia: {{Code|czy_frame}} (która mówi, jeżeli funkcję uruchomiono w ramce, ale przy wartości prawdziwej tego pierwszego podanego parametru, czyli {{Code|true}}, wybierana jest zawsze wartość {{Code|frame.args[nazwa or 1}}}, w przeciwnym wypadku uruchamiana jest funkcja {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, tutaj zwracana jest wartość {{Code|return wartosc,1}}). Jeżeli wartością {{Code|frame}} jest wartość nietablicowa, ale niebędącą wartością {{Code|nil}}, wtedy ustawiana jest funkcja, która tylko za pierwszym razem zwraca nienilową wartość {{Code|return wartosc,0}}, a później zwraca wartość {{Code|return nil,0}}. Gdy wartością {{Code|frame}} jest {{Code|nil}}, to funkcja zawsze wraca tą wartość {{Code|return nil,0}}. Powyższy sposób działa również dobrze, gdy zdefiniujemy w parametrach funkcji fałszywą funkcję {{Code|frame.getParent}}. Gdy funkcja nie jest uruchamiana w ramce lub funkcja {{Code|frame.getParent}} nie jest zdefiniowana, to wtedy funkcja wchodzi zawsze w ten jej krok, jakby {{Code|czy_frame_lub_parent}} było {{Code|false}} według tego powyżej, to wtedy brana jest zmienna {{Code|czy_frame}}, i jaką wartość ona przyjmuje. === Nazwy alternatywne parametrów === Funkcję pisze się według sposobu, którą się wywołuje według: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame); local wartosc1=PobierzParametr("nazwa1") or PobierzParametr(1); local wartosc2=PobierzParametr("nazwa2") or PobierzParametr(2); local wartosc3=PobierzParametr("nazwa3") or PobierzParametr(3); </syntaxhighlight> Na wypadek wartości nietabelowej, tą wartość zapisuje się jako pierwszą w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a dla wartości tabelowych, jaka jest kolejność to jest obojętne, byle by to było sensowne. === Wywołania funkcji w ramce, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, z funkcją parametrów === Tę funkcję podobnie się wywołuje jak funkcję: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}. Wartością {{Code|frame}} nie musi być tablica ramki tablicy transportu, równie dobrze może być to dowolna tablica lub wartość nietablicowa. Weźmy ramkę, w której uruchamiamy funkcję ramki: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}} </syntaxhighlight> === Przykłady wykorzystania funkcji === ; Przykład pierwszy{{dk}} Ona musi być wywołana z parametrem {{Parametr|wyspecjalizowana|tak}}, jako podpowiedź, że liczą się parametry ramki dziecka, a nie jego rodzica, czyli szablonu. Wtedy funkcję {{Code|Nazwa funkcji}} definiujemy: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame,true); ... end; </syntaxhighlight> Wtedy parametr {{Parametr|wyspecjalizowana|tak}} jest ignorowany, a przy wartości {{Code|false}} drugiego parametru funkcji, czyli wywołania: {{Code|local PobierzParametr{{=}}parametry_modul.PobierzParametr(frame,false);}}, już nie, ale nie zawsze. W takim przypadku według powyższego przykładu raz jest brana wartość, jeżeli istnieje, z {{Code|frame.args}}, a jak ona nie istnieje, to wtedy z: {{Code|pf.args}}. ; Przykład drugi{{dk}} Weźmy inny przypadek: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame,false,true); ... end; </syntaxhighlight> Przy tym też parametr: {{Parametr|wyspecjalizowana|tak}}, jest ignorowany, wtedy jest zawsze wybierana do rozważań tablica: {{Code|frame.args}}. ; Przykład trzeci{{dk}} Znów w innym przypadku, gdzie parametr: {{Parametr|wyspecjalizowana|tak}}, jest zawsze rozważany w naszym wypadku: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame,false,false); ... end; </syntaxhighlight> To to wywołanie, wtedy dokładnie działa jak funkcja: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, a zwrócona funkcja: {{Code|PobierzParametr}} pobiera elementy z tak uzyskanej tablicy {{Code|args}} poprzez nią. === Przypadek nietablicowego charakteru parametrów funkcji === W przypadku, gdy {{Code|frame}} nie jest tablicą, wtedy parametry: {{Code|czy_frame_lub_parent}} i {{Code|czy_frame}}, są w takim przypadku zawsze ignorowane, ale muszą być ustawione na wypadek, gdyby do funkcji {{Code|Nazwa funkcji}} wsadzono tablicę, np. z ramki, tzn. tablicę ramki funkcji tablicy transportu. === Ogólny przypadek, często stosowany === Najprostszym często ogólnym przykładem, który prawie zawsze jest stosowany: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame); ... end; </syntaxhighlight> Wtedy parametr: {{Parametr|wyspecjalizowana|tak}}, jest prawie zawsze nieignorowany, ale nie zawsze. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 9rpl6vw0s3fau2m6xi9w70vrrzbhohx 555745 555744 2026-09-11T19:44:53Z Persino 2851 /* = Omówienie przypadku istnienia tego samego wariantu zmiennej raz podtablicą, a raz jako zmienna nietablicowa */ 555745 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} Są tutaj przedstawione funkcje parametrów. == {{Code|p.PobierzFrameEwentualnieParent}} == Argument tej funkcji {{Code|frame}} koniecznie musi być tablicą, w przypadku przeciwnym wywoła to błąd języka {{lpg|Lua}}, że z wartości nietabelowej chcemy wyliczyć jego nieistniejący element {{Code|getParent}}, który ma prawo nie być. Funkcja pobiera parametry ramki szablonu rodzica, a nie dziecka, a jeżeli w dziecku w ramce w wikikodzie w szablonie podamy specjalny parametr {{Parametr|wyspecjalizowana|tak}}, to wtedy ta funkcja ściąga parametry ramki. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobierzFrameEwentualnieParent(frame)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu. }} === Sterowanie funkcją === Tą funkcją można sterować ze strony ramki tym właśnie specjalnym parametrem o wartości niepustej, którą jest {{Parametr|wyspecjalizowana|tak}}. ==== Przykłady wykorzystania z parametrem sterującym ==== W ramce podajemy argumenty wraz z tym specjalnym parametrem: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}} </syntaxhighlight> To wtedy w kodzie w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} w module o nazwie {{Code|Nazwa modułu}}, piszemy: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzFrameEwentualnieParent(frame).args; .... end; </syntaxhighlight> To wtedy w kodzie ściągane parametry ramki dziecka. === Pobieranie oryginalnej tablicy === Tę funkcję można równie dobrze wykorzystać do zwykłych tabel: <syntaxhighlight lang="lua"> local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzFrameEwentualnieParent(tabela); </syntaxhighlight> === Możliwość tej samej funkcji uruchomioną w ramce lub z podaniem do niej pewnego zestawu parametrów w postaci tablicy === A w tym przypadku ta funkcja nic nie robi, tylko zmienna {{Code|args}} referencyjnie wskazuje na tablicę {{Code|tablica}}. Ale można ją wykorzystać, gdy by funkcja {{Code|Nazwa funkcji}}, była uruchomiona ze zwykłą tablicą, ale z możliwością, że to może być tablicą ramki {{Code|frame}} tablicy transportu, np.: <syntaxhighlight lang="lua"> --- Pierwsza możliwość; local wartosc1=p["Nazwa funkcji"](frame); -- Druga możliwość local wartosc2=p["Nazwa funkcji"]{["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; </syntaxhighlight> === Niedogodności stosowania z funkcji === Dla obu jest taka niedogodność, że jedynie jest taka nieprawidłowość, że w przypadku parametru tablicy ramki tablicy transportu należy podawać uzyskany element {{Code|args}}, a w przypadku zwykłej tablicy już nie, tą niedokodność rozwiązuje funkcja: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}. == {{Code|p.PobierzArgsParametry}} == Argument tej funkcji {{Code|frame}} koniecznie nie musi być tablicą, bo wtedy nie wywoła to błędu języka {{lpg|Lua}}, że z wartości nietabelowej chcemy wyliczyć jego niepusty element {{Code|getParent}}, bo przedtem sprawdzana jest w tej funkcji, czy jest to tablica. W definicji tej funkcji zmienna uzyskana z funkcji: {{Code|{{sr|#p.PobierzFrameEwentualnieParent(frame)|p=Parametry}}}}, a jeśli jej składowa {{Code|args}} jest tablicą, to jest właśnie ona zwracana, a jeśli istnieje, ale nie jest tablicą, lub ona nie istnieje, to wtedy brana jest właśnie wartość tablicowa {{Code|frame}}, jeśli jest ona taka, a gdy nie, to wtedy z tej funkcji tutaj nie korzystamy. Funkcja pobiera parametry ramki szablonu rodzica, a nie dziecka, a jeżeli w dziecku w ramce w wikikodzie w szablonie podamy specjalny parametr {{Parametr|wyspecjalizowana|tak}}, to wtedy ta funkcja ściąga parametry ramki. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobierzArgsParametry(frame, czy_nie_tablica_jako_tablica)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica transportu ramki. | 2 = {{Code|czy_nie_tablica_jako_tablica}} | _2 = Czy wartości nietablicowe umieszczać w jednoelemenowej tabeli. }} === Opis działania === Funkcja wykorzystuje wspomnianą powyżej funkcję do swojego działania, ona jest wtedy aktywowana, gdy zmienna {{Code|frame}} jest tablicą, i jest sprawdzane, czy ona posiada nazwany element o kluczu {{Code|args}}, i czy jest on tablicowy. Jeżeli wartością zmiennej {{Code|frame}} nie jest tablica, ale nie przybiera wartości {{Code|nil}}, to ona jest umieszczana w tablicy, jeżeli zmiennej {{Code|czy_nie_tablica_jako_tablica}} przydzielimy wartość {{Code|true}}, w przeciwnym wypadku zwracana jest ona w postaci niezmienionej, a jeżeli wartość tej zmiennej nie istnieje, to zwracana jest zwykła tablica pusta. Tą funkcją można sterować ze strony ramki tym właśnie specjalnym parametrem o wartości niepustej. === Przykład wywołania funkcji z funkcją parametrów === W ramce podajemy argumenty wraz z tym specjalnym parametrem: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}} </syntaxhighlight> ==== Użycie funkcji parametrów ==== To wtedy w kodzie w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} w module o nazwie {{Code|Nazwa modułu}}, piszemy: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(frame); .... end; </syntaxhighlight> To wtedy w kodzie ściągane parametry ramki dziecka. === Wykorzystanie fukcji w różnych sytuacjach === ; Przypadek pierwszy{{dk}} Tę funkcję można równie dobrze wykorzystać do zwykłych tabel: <syntaxhighlight lang="lua"> local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(tabela); </syntaxhighlight> ; Drugi przypadek{{dk}} A w tym przypadku ta funkcja nic nie robi, tylko zmienna {{Code|args}} referencyjnie wskazuje na tablicę {{Code|tablica}}. Ale można ją wykorzystać, gdyby funkcja {{Code|Nazwa funkcji}}, była uruchomiona ze zwykłą tablicą, ale z możliwością, że to może być tablicą ramki {{Code|frame}} tablicy transportu, np.: <syntaxhighlight lang="lua"> --- Pierwsza możliwość; local wartosc1=p["Nazwa funkcji"](frame); -- Druga możliwość local wartosc2=p["Nazwa funkcji"]{["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; </syntaxhighlight> === Usunięcie niedogodności === Dla obu tych przypadków nie ma żadnej niedogodności, jak to występowała w {{Code|{{sr|#p.PobierzFrameEwentualnieParent(frame)|p=Parametry}}}}. === Parametr funkcji nietablicowy === Jeśliby do funkcji tablicy transportu dać wartość równą nie tablicy, to wtedy równoważnie możemy napisać: <syntaxhighlight lang="lua"> local wartosc="wartość"; local wynik=p["Nazwa funkcji"](wartosc); </syntaxhighlight> to wtedy definicję tej funkcji piszemy: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(frame,true); local wartosc=args[1]; end; </syntaxhighlight> lub równoważnie możemy zapisać: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); local wartosc=parametry_modul.PobierzArgsParametry(frame); end; </syntaxhighlight> === Brak parametrów funkcji === A jeżeli nie wsadziliśmy żadnej wartości do funkcji ramki tablicy transportu lub tą wartością jest {{Code|nil}}, wtedy: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"](); </syntaxhighlight> wtedy definicja tej funkcji wygląda: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); -- Zmienna: args, wskazuje na wartość, którą jest tablicą pustą, tzn. w tej tablicy nie ma wcale elementów; local args=parametry_modul.PobierzArgsParametry(frame); end; </syntaxhighlight> === Zmienna {{Code|args}} - alternatywny przypadek dla wartości tablicowych niż te bez drugiego parametru === Widzimy, że wtedy zmienna {{Code|args}} jest normalną pustą tablicą, i nie musimy wtedy wcale pisać poniżej, bo wtedy wychodzi w tym przypadku na to samo: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(frame,true); </syntaxhighlight> === Różnica drugiego parametru w przypadku wartości nietablicowych === Argument drugi w {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, który w naszym przypadku musi mieć wartość {{Code|true}}, a wtedy jest jedynie sens, gdy {{Code|frame}} nie jest tablicą, i gdy chcemy tą wartość umieścić w tablicy, a nie powtórzyć wartość, tzn. chcemy napisać: {{Code|{{(}}frame,{{)}}}}, w przeciwnym wypadku musilibyśmy napisać coś w rodzaju, zamiast tak spreparowanej tablicy: {{Code|frame}}, czyli: <syntaxhighlight lang="lua"> -- Pierwszy przypadek, gdy frame jest wartością nietablicową; local parametry_modul=require("Module:Parametry"); ... -- Zwracana wartość: args, to nic innego niż: {frame,}; local args=parametry_modul.PobierzArgsParametry(frame,true); ... -- Zwracana wartość: args, to nic innego niż: frame, a nie {frame,}, jak poprzednio; local args=parametry_modul.PobierzArgsParametry(frame); </syntaxhighlight> == {{Code|p.PobierzParametryRamki}} == Funkcja służy do ustawienia pewnych domyślnych dwóch pewnych funkcji służących do pobieranie danych z tabelki z pierwszej tej funkcji: * Jeżeli ona posiada klucz o wartości {{Code|args}}, ** to zwracana jest ta właśnie tablica jako argument pierwszej tej funkcji, jeżeli jest w ogóle tablicą, ** w przeciwnym wypadku zwracana jest ta oryginalna tablica, też jako argument tej funkcji, * w przeciwnym dalszym wypadku zwracana jest zwracana wartość ta, jako argument tej drugiej funkcji, która zwraca prawdziwą wartość z argumentu tylko za pierwszym razem, z tej funkcji, za następnym i dalszym razem {{Code|nil}}. Z tak utworzonej ogólnie większej funkcji wykorzystywana jest w budowie omawianej funkcji, która jest zwracana przez omawianą funkcję, która względem jego budowy wywołuje raz pierwszą albo drugą poprzednią wspomnianą funkcję zależną od rodzaju zmiennej {{Code|frame}}, która może być tabelką, ale nie musi być. Ta funkcja zwracana przez funkcję w nagłówku przyjmuje argument, która jest kluczem do tych wspomnianych, może że, * tabel (dokładnie, która ta może tabelka to zależy od formatu tej naszej rozważanej zmiennej), * a jeżeli to nie tabelka, co jest zwracane, to już zostało powiedziane. Definicja skrótowa tej funkcji jest: <syntaxhighlight lang="lua"> function p.PobierzParametryRamki(frame)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu. }} Weźmy ramkę sformułowaną w wikikodzie jako dziecko w szablonie rodzicu: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5}} </syntaxhighlight> === Funkcje, z funkcją parametrów, z tablicą ramki lub one z podtablicą {{Code|args}} === To wtedy tablica ramki tablicy transportu posiada właśnie {{Code|frame}}, która jest tablicą, i na pewno posiada tablicę o nazwie {{Code|args}}, to wtedy tę funkcję wywołaną w ramce, która wywołuje funkcję w nagłówku, formułujemy: <syntaxhighlight lang="lua"> local p={}; local p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametryRamki=parametry_modul.PobierzParametryRamki(frame); ... end; </syntaxhighlight> ==== Przykład wywołania funkcji z funkcją parametrów z tablicą {{Code|args}} ==== Równie dobrze funkcję z ramki można wywołać w sposób, co wtedy ta funkcja też zostanie wywołana pozytywnie: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"]{args={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}}; </syntaxhighlight> W tej funkcji nie trzeba definiować funkcji fałszywej {{Code|getParent}}, w postaci: {{Code|getParent{{=}}function()end}}. Widzimi, że ta tablica posiada nazwę zmiennej tablicowej o nazwie {{Code|args}}, ale ona nie jest tablicą ramki tablicy transportu, ale tą tablicę możemy bezposrednio wsadzić w tą główną tablicę w samym argumencie funkcji. ==== Przykład wywołania z tablicą bez podtablicy {{Code|args}} ==== Równie dobrze możemy wywołać tę funkcję zdefiniowaną naszą w jakimś module w sposób: <syntaxhighlight lang="lua"> local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; local wynik=p["Nazwa funkcji"]{tabela); </syntaxhighlight> też ta funkcja prawidłowo się wywoła. W tym przypadku, jak i w przypadkach powyżej, wyniki uzyskuje się w następującym wywołaniach: <syntaxhighlight lang="lua"> --- Zmienna: wartosc1, przyjmuje wartość: "wartość1"; local wartosc1=PobierzParametryRamki("nazwa1"); --- Zmienna: wartosc2, przyjmuje wartość: "wartość2"; local wartosc2=PobierzParametryRamki("nazwa2"); --- Zmienna: wartosc3, przyjmuje wartość: "wartość3"; local wartosc3=PobierzParametryRamki(1); </syntaxhighlight> ==== Przykład wywołania funkcji z wartością nietablicową ==== W innym przypadku wywołań funkcji ramki jest wsadzenie do niej zwykłego nietablicowego elementu, może być też to wartość: {{Code|nil}}. A to wywołanie jest: <syntaxhighlight lang="lua"> local wartosc="wartość"; --Zmienna: wartosc, nie jest w tym przypadku tablicą; local wynik=p["Nazwa funkcji"](wartosc); </syntaxhighlight> === Wywołania funkcji parametrów bez argumentów - wiele kolejnych wywołań jednocześnie === Wtedy w tej ramce w celu uzyskania, jakikolwiek wartości jest przykład wywołania tej funkcji zwracanej przez funkcję w ramce z argumentem pustym. <syntaxhighlight lang="lua"> -- Zmienna: wartość1, przyjmuje wartość: "wartość"; Jeżeli ona, przyjmuje wartość: nil, to wywołanie rzuci: nil, i za każdym następny razem; local wartosc1=PobierzParametryRamki(); -- Zmienna: wartość2, przyjmuje wartość: nil; local wartosc2=PobierzParametryRamki(); </syntaxhighlight> W wywołaniach powinno dbać się o właściwą kolejność wywołań, bo argumentem funkcji z tablicy transportu może być zwykła tablicowa wartość. Najpierw uzyskujemy wartości nietablicowe, a później tablicowe, na wypadek niewiadomej {{Code|frame}} jakiego typu ma być wartość. === Dwa przypadki, parametr w tablicy, lub wartość nietablicowa funkcji === Też ta zmienna może istnieć pod kilkoma możliwymi kluczami, lub tą zmienną może być jedyny argument funkcji, która jest nietablicową wartością, wtedy ją się wywołuje jako dla przypadku, gdy parametr jest nietablicowy lub jest pod kluczem {{Code|tekst}}: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local tekst=parametry_modul.PobierzParametryRamki(frame)("tekst"); </syntaxhighlight> === Przypadek, gdy parametr funkcji nie jest tablicą === Lub chcemy tę funkcję wywołać bezparametrowo, gdy chcemy, by {{Code|frame}} nie była tablicą: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local tekst=parametry_modul.PobierzParametryRamki(frame)(); </syntaxhighlight> === Omówienie przypadku istnienia tego samego wariantu zmiennej raz podtablicą, a raz jako zmienna nietablicowa === * Wtedy ta zmienna w przedostatnim przykładzie jest pod wartością {{Code|tekst}}, gdy wartość {{Code|frame}} jest tablicą, * lub może być jedyną wartością, którą jest {{Code|frame}}, jako zmienna nietablicowa, wtedy ta zmienna też jest pod {{Code|tekst}}, ** ta funkcja uzyskana z: {{Code|{{sr|#p.PobierzParametryRamki(frame)|p=Parametry}}}}, wtedy może być wywołana tylko raz z nienilową wartością zwracaną, następnym razem zwraca wartość {{Code|nil}}, wtedy to dotyczy przedostatniego i ostatniego przykładu. === Jakma liczyć element funkcji w przypadku różnych jej parametrów === Jeżeli {{Code|frame}} jest nietablicowa, to wtedy wartość {{Code|tekst}} jest taka sama, co {{Code|frame}}. A jeżeli jest tablicą, to ta wartością jest {{Code|frame.args["tekst"]}}, lub gdy {{Code|args}} nie istnieje, lub istnieje, ale jest nietablicowa, to wtedy ta wartość jest {{Code|frame["tekst"]}}. === Parametry alternatywne funkcji - przykład wykorzystania funkcji parametrów === A gdy zmienne istnieją pod wieloma kluczami, lub gdy funkcję wywołano ze zmienną nietablicową, wtedy ogólnie możemy dla przykładu powiedzieć: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local PobierzParametryRamki=parametry_modul.PobierzParametryRamki(frame); local wartosc1=PobierzParametryRamki("nazwa1") or PobierzParametryRamki(1); local wartosc2=PobierzParametryRamki("nazwa2") or PobierzParametryRamki(2); local wartosc3=PobierzParametryRamki("nazwa3") or PobierzParametryRamki(3); </syntaxhighlight> * Wtedy ta zmienna jest pod kluczem, np.: {{Code|nazwa1}} lub {{Code|1}}, tablicy ramki {{Code|frame}} tablicy transportu, następne wywołania dla następnych kluczy też zrzucą pewne wartości, * lub jest ona zwykłą nietablicową wartością mogącą być równą, nawet {{Code|nil}}. ---- * Następne wywołania uzyskanej tak funkcji w przypadku, gdy {{Code|frame}} jest nietablicowy, rzucać będzie z samej definicji funkcji wartości {{Code|nil}}, czyli {{Code|wartosc2{{=}}wartosc3{{=}}nil}}, ale za to wartość {{Code|wartosc1}} nie musi być, ale może, wartością {{Code|nil}}, jeśli tą wartością jest, gdy {{Code|frame{{=}}nil}}, * w przeciwnym wypadku za pierwszym razem tej wartości nietablicowej uzyskamy wartość nie {{Code|nil}}, a za drugim i dalszym zawsze wartość {{Code|nil}}. == {{Code|p.PobierzElementNumerowanyZFrameLubTablicy}} == Definicja skrótowa funkcji jest z parametrem charakteryzującym pewien zestaw zmiennych {{Code|frame}}, * które nie musi być tablicą ramki tablicy transportu, tylko moze być innym parametrem, który jest tablicą parametrów podanych do funkcji, * nawet gdy parametrem podanym do funkcji, w której wykorzystujemy tą funkcję, jest jedyna zmienna będąca tablicą ramki. Ale z drugiej strony, tak nie musi być, może być to rozbudowany zestaw zmiennych, np. nazwanych i nienazwanych, którego wszystkie sposoby podawania łączymy jednym sposobem podawania. Mimo że parametry funkcji są parametrami nienazwanymi, mogą być one ponumerowane, ale zmienna w tablicy może przyjmować wartość tą samą na różne sposoby, raz w sposób nazwany, a za innym sposobem jako nienazwany. Ogólnie ostateczne parametry łączymy w dane parametry za pomocą jednego sposobu, tzn. za pomocą tej funkcji, i dla tak uzyskanej tablicy tworzymy funkcję zwracaną przez funkcję w nagłówku, która przyjmuje parametr, który jest kluczem tej uzyskanej tablicy. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobierzElementNumerowanyZFrameLubTablicy(frame)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu. }} Weźmy najprostszy sposób realizacji tej funkcji, w realizacji: {{Code|1-1, 2-2, 3-3}}, czyli ten opis jest zaraz poniżej. === Sposoby wywołania funkcji === ; Pierwszy sposób{{dk}} Weźmy funkcję, którą można wywoływać z wieloma parametrami, jak i w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, którą przykładowo piszemy jego wywołanie wewnątrz innej funkcji na pięć sposobów, czyli teraz pierwszy sposób z tylko z parametrem, więc tablicą ramki tablicy transportu wywodzącą się z ramki uruchomioną w wikikodzie w jakimś szablonie rodzicu: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"](frame); </syntaxhighlight> ; Drugi sposób{{dk}} A teraz drugi sposób, pisząc, bezpośrednio inaczej, formułując wywołanie tej funkcji, używając zmiennych tablicowych tablicy ramki, ale to nie jest tak naprawdę tablica ramka tablicy transportu, tylko parametr podany bezpośrednio do funkcji, tak jak się to robi w języku {{lpg|Lua}}, nie jak w przykładzie powyżej, więc: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"]{args={"wartość1","wartość2","wartość3",},}; </syntaxhighlight> ; Trzeci sposób{{dk}} Lub równoważnie, pisząc, nie używając zmiennej {{Code|args}}: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"]{"wartość1","wartość2","wartość3",}; </syntaxhighlight> ; Czwarty sposób{{dk}} Albo te parametry wsadzając do funkcji: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"]("wartość1","wartość2","wartość3"); </syntaxhighlight> ; Piąty spssób{{dk}} Można też wywołać to wszystko w ramce, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w wikikpdzie, wtedy wsadzając parametry do ramki: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|wartość1|wartość2|wartość3}} </syntaxhighlight> === Omówienie pobierania takich parmetrów === A jak połączyć wszystkie te pięć sposobów, posługiwać się tymi sposobami wewnątrz funkcji {{Code|Nazwa funkcji}} w sposób jednolity, jedynie wtedy należy skorzystać z funkcji z definiowaną w jakimś module w sposób: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(...) local tablica_prametrow_funkcji={...}; local parametry_modul=require("Module:Parametry"); local PobierzElementNumerowanyZFrameLubTablicy=parametry_modul.PobierzElementNumerowanyZFrameLubTablicy(tablica_prametrow_funkcji); ... end; </syntaxhighlight> Wtedy za pomocą zmiennej {{Code|PobierzElementNumerowanyZFrameLubTablicy}} dostaliśmy się do funkcji, która przyjmuje jedyny parametr, aby dostać się do elementów tablicy uzyskanej w wewnątrz tej funkcji, zdefiniowaną w tablicy {{Code|tablica_prametrow_funkcji}}, która jest nic innym jak zestawem parametrów w funkcji: {{Code|Nazwa funkcji}}. * W pierwszym i drugim sposobem zmienną tą nazwijmy to jako {{Code|args}}, jest zmienną z podtablicy innego {{Code|args}} przekazanych jako parametr tablicy do funkcji, * w trzecim sposobie tą zmienną jest cała tablica, * a czwartym jest zestaw parametrów ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. A czym się różnią się te sposoby, a więc te sposoby można powiązać jedną tylko funkcją powiedzianą w nagłówku według przykładu podaną zaraz powyżej, wtedy możemy dostawać się do tych samych zmiennych o takich samych nazwach i wartościach, ale w różnych reprezentacjach na różne sposoby, wtedy można powiedzieć, że: <syntaxhighlight lang="lua"> args[1]="wartość1"; args[2]="wartość2"; args[3]="wartość3"; </syntaxhighlight> Czyli w wyniku działania funkcji w nagłówku, otrzymamy funkcję zwracającą te wartości, która operuje na tej tablicy, której wynikiem jest zestaw zmiennych ponumerowanych, ogólnie nienazwanych, której wartości odpowiadają te podane w ramce ostatniej powyżej. Na podstawie tego wiemy, jak działa funkcja ta z nagłówka. === Nazwy alternatywne danych parametrów funkcji ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}} === Pisząc w inny sposób, można też wskazywać: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(...) local tablica_prametrow_funkcji={...}; local parametry_modul=require("Module:Parametry"); local PobierzElementNumerowanyZFrameLubTablicy=parametry_modul.PobierzElementNumerowanyZFrameLubTablicy(tablica_prametrow_funkcji); local wartosc1=PobierzElementNumerowanyZFrameLubTablicy("nazwa1") or PobierzElementNumerowanyZFrameLubTablicy(1); local wartosc2=PobierzElementNumerowanyZFrameLubTablicy("nazwa2") or PobierzElementNumerowanyZFrameLubTablicy(2); local wartosc3=PobierzElementNumerowanyZFrameLubTablicy("nazwa3") or PobierzElementNumerowanyZFrameLubTablicy(3); end; </syntaxhighlight> Zmienne w przykładzie o kluczach: {{Code|nazwa1}}, {{Code|nazwa2}} i {{Code|nazwa3}}, posiadające pewne swoje wartości, to są zmienne w tablicy {{Code|tablica_prametrow_funkcji}}, podane też jako zmienne, jako pewne argumenty tablicy, który są w tej funkcji zwracanej jako argument (parametr) funkcji, * jeżeli argumenty podano w postaci jednego parametru funkcji w postaci pewnej tablicy z np. elementami nazwanymi, * lub jako wiele argumentów w ramce, w wikikodzie, w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w pewnym szablonie, * a rozpatrując dalej elementy względem ich nazw, np. alternatywnych, to te numery mogą być kolejo do nazw ich odpowiedników nazwanych, które w przykładzie powyżej, mają pierwszeństwo, ale tak nie musi być, te parametry: {{Code|1}}, {{Code|2}} i {{Code|3}}, to jest numer parametru, jeżeli argumenty do funkcji podano w postaci wielu jego parametrów. == {{Code|p.PobierzParametr}} == Ta funkcja zwraca znów inną funkcję, która ma jedyny parametr, mówiący jakiego parametru poszukujemy, co jest wyjaśnione w definicji funkcji z nagłówka, że ona zwraca tą właśnie funkcje. Definicja skrótowa dunkcji: <syntaxhighlight lang="lua"> function p.PobierzParametr(frame,czy_frame_lub_parent,czy_frame) ... return function(nazwa) return __pobierz_parametr_table_args(nazwa); end; end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu. | 2 = {{Code|czy_frame_lub_parent}} i {{Code|czy_frame}} | _2 = Parametry logiczne dodatkowe funkcji. }} === Wartośc zwracanainumer metody === Funkcja zwraca jednocześnie dwie wartości, ta zwrócona z funkcji z nagłówka, prawdziwą wartość, i numer metody w postaci: {{Code|return wartosc, numer_metody}}. === Opis zwracanych elementów przez funkcję zwracaną - różnemetody zwracania, jak je wykorzystać === Ta funkcja zwracana ma w swojej definicji inną jeszcze funkcję z tym samym parametrem, co jego rodzic, i to jest za każdym razem inna funkcja w zależności z jakim typem danych się posługujemy {{Code|frame}} i jakie podaliśmy parametry. Gdy warunkiem, gdy zmienna {{Code|frame}} jest tablicą, czyli te zmienne druga: {{Code|czy_frame_lub_parent}} (jeżeli funkcja jest uruchomiona w ramce w szablonie, jeżeli ma wartość {{Code|true}}, to ona wybiera raz parametr z: {{Code|frame.args[nazwa or 1]}}, a za innym razem z {{Code|pf.args[nazwa or 1]}}, gdzie {{Code|pf{{=}}frame:getParent()}}, tutaj jest zwracana wartość: {{Code|return wartosc,2}}). Czy trzecia: {{Code|czy_frame}} (która mówi, jeżeli funkcję uruchomiono w ramce, ale przy wartości prawdziwej tego pierwszego podanego parametru, czyli {{Code|true}}, wybierana jest zawsze wartość {{Code|frame.args[nazwa or 1}}}, w przeciwnym wypadku uruchamiana jest funkcja {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, tutaj zwracana jest wartość {{Code|return wartosc,1}}). Jeżeli wartością {{Code|frame}} jest wartość nietablicowa, ale niebędącą wartością {{Code|nil}}, wtedy ustawiana jest funkcja, która tylko za pierwszym razem zwraca nienilową wartość {{Code|return wartosc,0}}, a później zwraca wartość {{Code|return nil,0}}. Gdy wartością {{Code|frame}} jest {{Code|nil}}, to funkcja zawsze wraca tą wartość {{Code|return nil,0}}. Powyższy sposób działa również dobrze, gdy zdefiniujemy w parametrach funkcji fałszywą funkcję {{Code|frame.getParent}}. Gdy funkcja nie jest uruchamiana w ramce lub funkcja {{Code|frame.getParent}} nie jest zdefiniowana, to wtedy funkcja wchodzi zawsze w ten jej krok, jakby {{Code|czy_frame_lub_parent}} było {{Code|false}} według tego powyżej, to wtedy brana jest zmienna {{Code|czy_frame}}, i jaką wartość ona przyjmuje. === Nazwy alternatywne parametrów === Funkcję pisze się według sposobu, którą się wywołuje według: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame); local wartosc1=PobierzParametr("nazwa1") or PobierzParametr(1); local wartosc2=PobierzParametr("nazwa2") or PobierzParametr(2); local wartosc3=PobierzParametr("nazwa3") or PobierzParametr(3); </syntaxhighlight> Na wypadek wartości nietabelowej, tą wartość zapisuje się jako pierwszą w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a dla wartości tabelowych, jaka jest kolejność to jest obojętne, byle by to było sensowne. === Wywołania funkcji w ramce, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, z funkcją parametrów === Tę funkcję podobnie się wywołuje jak funkcję: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}. Wartością {{Code|frame}} nie musi być tablica ramki tablicy transportu, równie dobrze może być to dowolna tablica lub wartość nietablicowa. Weźmy ramkę, w której uruchamiamy funkcję ramki: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}} </syntaxhighlight> === Przykłady wykorzystania funkcji === ; Przykład pierwszy{{dk}} Ona musi być wywołana z parametrem {{Parametr|wyspecjalizowana|tak}}, jako podpowiedź, że liczą się parametry ramki dziecka, a nie jego rodzica, czyli szablonu. Wtedy funkcję {{Code|Nazwa funkcji}} definiujemy: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame,true); ... end; </syntaxhighlight> Wtedy parametr {{Parametr|wyspecjalizowana|tak}} jest ignorowany, a przy wartości {{Code|false}} drugiego parametru funkcji, czyli wywołania: {{Code|local PobierzParametr{{=}}parametry_modul.PobierzParametr(frame,false);}}, już nie, ale nie zawsze. W takim przypadku według powyższego przykładu raz jest brana wartość, jeżeli istnieje, z {{Code|frame.args}}, a jak ona nie istnieje, to wtedy z: {{Code|pf.args}}. ; Przykład drugi{{dk}} Weźmy inny przypadek: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame,false,true); ... end; </syntaxhighlight> Przy tym też parametr: {{Parametr|wyspecjalizowana|tak}}, jest ignorowany, wtedy jest zawsze wybierana do rozważań tablica: {{Code|frame.args}}. ; Przykład trzeci{{dk}} Znów w innym przypadku, gdzie parametr: {{Parametr|wyspecjalizowana|tak}}, jest zawsze rozważany w naszym wypadku: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame,false,false); ... end; </syntaxhighlight> To to wywołanie, wtedy dokładnie działa jak funkcja: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, a zwrócona funkcja: {{Code|PobierzParametr}} pobiera elementy z tak uzyskanej tablicy {{Code|args}} poprzez nią. === Przypadek nietablicowego charakteru parametrów funkcji === W przypadku, gdy {{Code|frame}} nie jest tablicą, wtedy parametry: {{Code|czy_frame_lub_parent}} i {{Code|czy_frame}}, są w takim przypadku zawsze ignorowane, ale muszą być ustawione na wypadek, gdyby do funkcji {{Code|Nazwa funkcji}} wsadzono tablicę, np. z ramki, tzn. tablicę ramki funkcji tablicy transportu. === Ogólny przypadek, często stosowany === Najprostszym często ogólnym przykładem, który prawie zawsze jest stosowany: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame); ... end; </syntaxhighlight> Wtedy parametr: {{Parametr|wyspecjalizowana|tak}}, jest prawie zawsze nieignorowany, ale nie zawsze. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 3tg0lcb72oj9hxyx5lcy47d3ehg008f 555746 555745 2026-09-11T19:46:43Z Persino 2851 /* Wartośc zwracanainumer metody */ 555746 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} Są tutaj przedstawione funkcje parametrów. == {{Code|p.PobierzFrameEwentualnieParent}} == Argument tej funkcji {{Code|frame}} koniecznie musi być tablicą, w przypadku przeciwnym wywoła to błąd języka {{lpg|Lua}}, że z wartości nietabelowej chcemy wyliczyć jego nieistniejący element {{Code|getParent}}, który ma prawo nie być. Funkcja pobiera parametry ramki szablonu rodzica, a nie dziecka, a jeżeli w dziecku w ramce w wikikodzie w szablonie podamy specjalny parametr {{Parametr|wyspecjalizowana|tak}}, to wtedy ta funkcja ściąga parametry ramki. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobierzFrameEwentualnieParent(frame)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu. }} === Sterowanie funkcją === Tą funkcją można sterować ze strony ramki tym właśnie specjalnym parametrem o wartości niepustej, którą jest {{Parametr|wyspecjalizowana|tak}}. ==== Przykłady wykorzystania z parametrem sterującym ==== W ramce podajemy argumenty wraz z tym specjalnym parametrem: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}} </syntaxhighlight> To wtedy w kodzie w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} w module o nazwie {{Code|Nazwa modułu}}, piszemy: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzFrameEwentualnieParent(frame).args; .... end; </syntaxhighlight> To wtedy w kodzie ściągane parametry ramki dziecka. === Pobieranie oryginalnej tablicy === Tę funkcję można równie dobrze wykorzystać do zwykłych tabel: <syntaxhighlight lang="lua"> local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzFrameEwentualnieParent(tabela); </syntaxhighlight> === Możliwość tej samej funkcji uruchomioną w ramce lub z podaniem do niej pewnego zestawu parametrów w postaci tablicy === A w tym przypadku ta funkcja nic nie robi, tylko zmienna {{Code|args}} referencyjnie wskazuje na tablicę {{Code|tablica}}. Ale można ją wykorzystać, gdy by funkcja {{Code|Nazwa funkcji}}, była uruchomiona ze zwykłą tablicą, ale z możliwością, że to może być tablicą ramki {{Code|frame}} tablicy transportu, np.: <syntaxhighlight lang="lua"> --- Pierwsza możliwość; local wartosc1=p["Nazwa funkcji"](frame); -- Druga możliwość local wartosc2=p["Nazwa funkcji"]{["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; </syntaxhighlight> === Niedogodności stosowania z funkcji === Dla obu jest taka niedogodność, że jedynie jest taka nieprawidłowość, że w przypadku parametru tablicy ramki tablicy transportu należy podawać uzyskany element {{Code|args}}, a w przypadku zwykłej tablicy już nie, tą niedokodność rozwiązuje funkcja: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}. == {{Code|p.PobierzArgsParametry}} == Argument tej funkcji {{Code|frame}} koniecznie nie musi być tablicą, bo wtedy nie wywoła to błędu języka {{lpg|Lua}}, że z wartości nietabelowej chcemy wyliczyć jego niepusty element {{Code|getParent}}, bo przedtem sprawdzana jest w tej funkcji, czy jest to tablica. W definicji tej funkcji zmienna uzyskana z funkcji: {{Code|{{sr|#p.PobierzFrameEwentualnieParent(frame)|p=Parametry}}}}, a jeśli jej składowa {{Code|args}} jest tablicą, to jest właśnie ona zwracana, a jeśli istnieje, ale nie jest tablicą, lub ona nie istnieje, to wtedy brana jest właśnie wartość tablicowa {{Code|frame}}, jeśli jest ona taka, a gdy nie, to wtedy z tej funkcji tutaj nie korzystamy. Funkcja pobiera parametry ramki szablonu rodzica, a nie dziecka, a jeżeli w dziecku w ramce w wikikodzie w szablonie podamy specjalny parametr {{Parametr|wyspecjalizowana|tak}}, to wtedy ta funkcja ściąga parametry ramki. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobierzArgsParametry(frame, czy_nie_tablica_jako_tablica)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica transportu ramki. | 2 = {{Code|czy_nie_tablica_jako_tablica}} | _2 = Czy wartości nietablicowe umieszczać w jednoelemenowej tabeli. }} === Opis działania === Funkcja wykorzystuje wspomnianą powyżej funkcję do swojego działania, ona jest wtedy aktywowana, gdy zmienna {{Code|frame}} jest tablicą, i jest sprawdzane, czy ona posiada nazwany element o kluczu {{Code|args}}, i czy jest on tablicowy. Jeżeli wartością zmiennej {{Code|frame}} nie jest tablica, ale nie przybiera wartości {{Code|nil}}, to ona jest umieszczana w tablicy, jeżeli zmiennej {{Code|czy_nie_tablica_jako_tablica}} przydzielimy wartość {{Code|true}}, w przeciwnym wypadku zwracana jest ona w postaci niezmienionej, a jeżeli wartość tej zmiennej nie istnieje, to zwracana jest zwykła tablica pusta. Tą funkcją można sterować ze strony ramki tym właśnie specjalnym parametrem o wartości niepustej. === Przykład wywołania funkcji z funkcją parametrów === W ramce podajemy argumenty wraz z tym specjalnym parametrem: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}} </syntaxhighlight> ==== Użycie funkcji parametrów ==== To wtedy w kodzie w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} w module o nazwie {{Code|Nazwa modułu}}, piszemy: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(frame); .... end; </syntaxhighlight> To wtedy w kodzie ściągane parametry ramki dziecka. === Wykorzystanie fukcji w różnych sytuacjach === ; Przypadek pierwszy{{dk}} Tę funkcję można równie dobrze wykorzystać do zwykłych tabel: <syntaxhighlight lang="lua"> local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(tabela); </syntaxhighlight> ; Drugi przypadek{{dk}} A w tym przypadku ta funkcja nic nie robi, tylko zmienna {{Code|args}} referencyjnie wskazuje na tablicę {{Code|tablica}}. Ale można ją wykorzystać, gdyby funkcja {{Code|Nazwa funkcji}}, była uruchomiona ze zwykłą tablicą, ale z możliwością, że to może być tablicą ramki {{Code|frame}} tablicy transportu, np.: <syntaxhighlight lang="lua"> --- Pierwsza możliwość; local wartosc1=p["Nazwa funkcji"](frame); -- Druga możliwość local wartosc2=p["Nazwa funkcji"]{["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; </syntaxhighlight> === Usunięcie niedogodności === Dla obu tych przypadków nie ma żadnej niedogodności, jak to występowała w {{Code|{{sr|#p.PobierzFrameEwentualnieParent(frame)|p=Parametry}}}}. === Parametr funkcji nietablicowy === Jeśliby do funkcji tablicy transportu dać wartość równą nie tablicy, to wtedy równoważnie możemy napisać: <syntaxhighlight lang="lua"> local wartosc="wartość"; local wynik=p["Nazwa funkcji"](wartosc); </syntaxhighlight> to wtedy definicję tej funkcji piszemy: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(frame,true); local wartosc=args[1]; end; </syntaxhighlight> lub równoważnie możemy zapisać: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); local wartosc=parametry_modul.PobierzArgsParametry(frame); end; </syntaxhighlight> === Brak parametrów funkcji === A jeżeli nie wsadziliśmy żadnej wartości do funkcji ramki tablicy transportu lub tą wartością jest {{Code|nil}}, wtedy: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"](); </syntaxhighlight> wtedy definicja tej funkcji wygląda: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); -- Zmienna: args, wskazuje na wartość, którą jest tablicą pustą, tzn. w tej tablicy nie ma wcale elementów; local args=parametry_modul.PobierzArgsParametry(frame); end; </syntaxhighlight> === Zmienna {{Code|args}} - alternatywny przypadek dla wartości tablicowych niż te bez drugiego parametru === Widzimy, że wtedy zmienna {{Code|args}} jest normalną pustą tablicą, i nie musimy wtedy wcale pisać poniżej, bo wtedy wychodzi w tym przypadku na to samo: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(frame,true); </syntaxhighlight> === Różnica drugiego parametru w przypadku wartości nietablicowych === Argument drugi w {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, który w naszym przypadku musi mieć wartość {{Code|true}}, a wtedy jest jedynie sens, gdy {{Code|frame}} nie jest tablicą, i gdy chcemy tą wartość umieścić w tablicy, a nie powtórzyć wartość, tzn. chcemy napisać: {{Code|{{(}}frame,{{)}}}}, w przeciwnym wypadku musilibyśmy napisać coś w rodzaju, zamiast tak spreparowanej tablicy: {{Code|frame}}, czyli: <syntaxhighlight lang="lua"> -- Pierwszy przypadek, gdy frame jest wartością nietablicową; local parametry_modul=require("Module:Parametry"); ... -- Zwracana wartość: args, to nic innego niż: {frame,}; local args=parametry_modul.PobierzArgsParametry(frame,true); ... -- Zwracana wartość: args, to nic innego niż: frame, a nie {frame,}, jak poprzednio; local args=parametry_modul.PobierzArgsParametry(frame); </syntaxhighlight> == {{Code|p.PobierzParametryRamki}} == Funkcja służy do ustawienia pewnych domyślnych dwóch pewnych funkcji służących do pobieranie danych z tabelki z pierwszej tej funkcji: * Jeżeli ona posiada klucz o wartości {{Code|args}}, ** to zwracana jest ta właśnie tablica jako argument pierwszej tej funkcji, jeżeli jest w ogóle tablicą, ** w przeciwnym wypadku zwracana jest ta oryginalna tablica, też jako argument tej funkcji, * w przeciwnym dalszym wypadku zwracana jest zwracana wartość ta, jako argument tej drugiej funkcji, która zwraca prawdziwą wartość z argumentu tylko za pierwszym razem, z tej funkcji, za następnym i dalszym razem {{Code|nil}}. Z tak utworzonej ogólnie większej funkcji wykorzystywana jest w budowie omawianej funkcji, która jest zwracana przez omawianą funkcję, która względem jego budowy wywołuje raz pierwszą albo drugą poprzednią wspomnianą funkcję zależną od rodzaju zmiennej {{Code|frame}}, która może być tabelką, ale nie musi być. Ta funkcja zwracana przez funkcję w nagłówku przyjmuje argument, która jest kluczem do tych wspomnianych, może że, * tabel (dokładnie, która ta może tabelka to zależy od formatu tej naszej rozważanej zmiennej), * a jeżeli to nie tabelka, co jest zwracane, to już zostało powiedziane. Definicja skrótowa tej funkcji jest: <syntaxhighlight lang="lua"> function p.PobierzParametryRamki(frame)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu. }} Weźmy ramkę sformułowaną w wikikodzie jako dziecko w szablonie rodzicu: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5}} </syntaxhighlight> === Funkcje, z funkcją parametrów, z tablicą ramki lub one z podtablicą {{Code|args}} === To wtedy tablica ramki tablicy transportu posiada właśnie {{Code|frame}}, która jest tablicą, i na pewno posiada tablicę o nazwie {{Code|args}}, to wtedy tę funkcję wywołaną w ramce, która wywołuje funkcję w nagłówku, formułujemy: <syntaxhighlight lang="lua"> local p={}; local p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametryRamki=parametry_modul.PobierzParametryRamki(frame); ... end; </syntaxhighlight> ==== Przykład wywołania funkcji z funkcją parametrów z tablicą {{Code|args}} ==== Równie dobrze funkcję z ramki można wywołać w sposób, co wtedy ta funkcja też zostanie wywołana pozytywnie: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"]{args={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}}; </syntaxhighlight> W tej funkcji nie trzeba definiować funkcji fałszywej {{Code|getParent}}, w postaci: {{Code|getParent{{=}}function()end}}. Widzimi, że ta tablica posiada nazwę zmiennej tablicowej o nazwie {{Code|args}}, ale ona nie jest tablicą ramki tablicy transportu, ale tą tablicę możemy bezposrednio wsadzić w tą główną tablicę w samym argumencie funkcji. ==== Przykład wywołania z tablicą bez podtablicy {{Code|args}} ==== Równie dobrze możemy wywołać tę funkcję zdefiniowaną naszą w jakimś module w sposób: <syntaxhighlight lang="lua"> local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; local wynik=p["Nazwa funkcji"]{tabela); </syntaxhighlight> też ta funkcja prawidłowo się wywoła. W tym przypadku, jak i w przypadkach powyżej, wyniki uzyskuje się w następującym wywołaniach: <syntaxhighlight lang="lua"> --- Zmienna: wartosc1, przyjmuje wartość: "wartość1"; local wartosc1=PobierzParametryRamki("nazwa1"); --- Zmienna: wartosc2, przyjmuje wartość: "wartość2"; local wartosc2=PobierzParametryRamki("nazwa2"); --- Zmienna: wartosc3, przyjmuje wartość: "wartość3"; local wartosc3=PobierzParametryRamki(1); </syntaxhighlight> ==== Przykład wywołania funkcji z wartością nietablicową ==== W innym przypadku wywołań funkcji ramki jest wsadzenie do niej zwykłego nietablicowego elementu, może być też to wartość: {{Code|nil}}. A to wywołanie jest: <syntaxhighlight lang="lua"> local wartosc="wartość"; --Zmienna: wartosc, nie jest w tym przypadku tablicą; local wynik=p["Nazwa funkcji"](wartosc); </syntaxhighlight> === Wywołania funkcji parametrów bez argumentów - wiele kolejnych wywołań jednocześnie === Wtedy w tej ramce w celu uzyskania, jakikolwiek wartości jest przykład wywołania tej funkcji zwracanej przez funkcję w ramce z argumentem pustym. <syntaxhighlight lang="lua"> -- Zmienna: wartość1, przyjmuje wartość: "wartość"; Jeżeli ona, przyjmuje wartość: nil, to wywołanie rzuci: nil, i za każdym następny razem; local wartosc1=PobierzParametryRamki(); -- Zmienna: wartość2, przyjmuje wartość: nil; local wartosc2=PobierzParametryRamki(); </syntaxhighlight> W wywołaniach powinno dbać się o właściwą kolejność wywołań, bo argumentem funkcji z tablicy transportu może być zwykła tablicowa wartość. Najpierw uzyskujemy wartości nietablicowe, a później tablicowe, na wypadek niewiadomej {{Code|frame}} jakiego typu ma być wartość. === Dwa przypadki, parametr w tablicy, lub wartość nietablicowa funkcji === Też ta zmienna może istnieć pod kilkoma możliwymi kluczami, lub tą zmienną może być jedyny argument funkcji, która jest nietablicową wartością, wtedy ją się wywołuje jako dla przypadku, gdy parametr jest nietablicowy lub jest pod kluczem {{Code|tekst}}: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local tekst=parametry_modul.PobierzParametryRamki(frame)("tekst"); </syntaxhighlight> === Przypadek, gdy parametr funkcji nie jest tablicą === Lub chcemy tę funkcję wywołać bezparametrowo, gdy chcemy, by {{Code|frame}} nie była tablicą: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local tekst=parametry_modul.PobierzParametryRamki(frame)(); </syntaxhighlight> === Omówienie przypadku istnienia tego samego wariantu zmiennej raz podtablicą, a raz jako zmienna nietablicowa === * Wtedy ta zmienna w przedostatnim przykładzie jest pod wartością {{Code|tekst}}, gdy wartość {{Code|frame}} jest tablicą, * lub może być jedyną wartością, którą jest {{Code|frame}}, jako zmienna nietablicowa, wtedy ta zmienna też jest pod {{Code|tekst}}, ** ta funkcja uzyskana z: {{Code|{{sr|#p.PobierzParametryRamki(frame)|p=Parametry}}}}, wtedy może być wywołana tylko raz z nienilową wartością zwracaną, następnym razem zwraca wartość {{Code|nil}}, wtedy to dotyczy przedostatniego i ostatniego przykładu. === Jakma liczyć element funkcji w przypadku różnych jej parametrów === Jeżeli {{Code|frame}} jest nietablicowa, to wtedy wartość {{Code|tekst}} jest taka sama, co {{Code|frame}}. A jeżeli jest tablicą, to ta wartością jest {{Code|frame.args["tekst"]}}, lub gdy {{Code|args}} nie istnieje, lub istnieje, ale jest nietablicowa, to wtedy ta wartość jest {{Code|frame["tekst"]}}. === Parametry alternatywne funkcji - przykład wykorzystania funkcji parametrów === A gdy zmienne istnieją pod wieloma kluczami, lub gdy funkcję wywołano ze zmienną nietablicową, wtedy ogólnie możemy dla przykładu powiedzieć: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local PobierzParametryRamki=parametry_modul.PobierzParametryRamki(frame); local wartosc1=PobierzParametryRamki("nazwa1") or PobierzParametryRamki(1); local wartosc2=PobierzParametryRamki("nazwa2") or PobierzParametryRamki(2); local wartosc3=PobierzParametryRamki("nazwa3") or PobierzParametryRamki(3); </syntaxhighlight> * Wtedy ta zmienna jest pod kluczem, np.: {{Code|nazwa1}} lub {{Code|1}}, tablicy ramki {{Code|frame}} tablicy transportu, następne wywołania dla następnych kluczy też zrzucą pewne wartości, * lub jest ona zwykłą nietablicową wartością mogącą być równą, nawet {{Code|nil}}. ---- * Następne wywołania uzyskanej tak funkcji w przypadku, gdy {{Code|frame}} jest nietablicowy, rzucać będzie z samej definicji funkcji wartości {{Code|nil}}, czyli {{Code|wartosc2{{=}}wartosc3{{=}}nil}}, ale za to wartość {{Code|wartosc1}} nie musi być, ale może, wartością {{Code|nil}}, jeśli tą wartością jest, gdy {{Code|frame{{=}}nil}}, * w przeciwnym wypadku za pierwszym razem tej wartości nietablicowej uzyskamy wartość nie {{Code|nil}}, a za drugim i dalszym zawsze wartość {{Code|nil}}. == {{Code|p.PobierzElementNumerowanyZFrameLubTablicy}} == Definicja skrótowa funkcji jest z parametrem charakteryzującym pewien zestaw zmiennych {{Code|frame}}, * które nie musi być tablicą ramki tablicy transportu, tylko moze być innym parametrem, który jest tablicą parametrów podanych do funkcji, * nawet gdy parametrem podanym do funkcji, w której wykorzystujemy tą funkcję, jest jedyna zmienna będąca tablicą ramki. Ale z drugiej strony, tak nie musi być, może być to rozbudowany zestaw zmiennych, np. nazwanych i nienazwanych, którego wszystkie sposoby podawania łączymy jednym sposobem podawania. Mimo że parametry funkcji są parametrami nienazwanymi, mogą być one ponumerowane, ale zmienna w tablicy może przyjmować wartość tą samą na różne sposoby, raz w sposób nazwany, a za innym sposobem jako nienazwany. Ogólnie ostateczne parametry łączymy w dane parametry za pomocą jednego sposobu, tzn. za pomocą tej funkcji, i dla tak uzyskanej tablicy tworzymy funkcję zwracaną przez funkcję w nagłówku, która przyjmuje parametr, który jest kluczem tej uzyskanej tablicy. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobierzElementNumerowanyZFrameLubTablicy(frame)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu. }} Weźmy najprostszy sposób realizacji tej funkcji, w realizacji: {{Code|1-1, 2-2, 3-3}}, czyli ten opis jest zaraz poniżej. === Sposoby wywołania funkcji === ; Pierwszy sposób{{dk}} Weźmy funkcję, którą można wywoływać z wieloma parametrami, jak i w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, którą przykładowo piszemy jego wywołanie wewnątrz innej funkcji na pięć sposobów, czyli teraz pierwszy sposób z tylko z parametrem, więc tablicą ramki tablicy transportu wywodzącą się z ramki uruchomioną w wikikodzie w jakimś szablonie rodzicu: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"](frame); </syntaxhighlight> ; Drugi sposób{{dk}} A teraz drugi sposób, pisząc, bezpośrednio inaczej, formułując wywołanie tej funkcji, używając zmiennych tablicowych tablicy ramki, ale to nie jest tak naprawdę tablica ramka tablicy transportu, tylko parametr podany bezpośrednio do funkcji, tak jak się to robi w języku {{lpg|Lua}}, nie jak w przykładzie powyżej, więc: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"]{args={"wartość1","wartość2","wartość3",},}; </syntaxhighlight> ; Trzeci sposób{{dk}} Lub równoważnie, pisząc, nie używając zmiennej {{Code|args}}: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"]{"wartość1","wartość2","wartość3",}; </syntaxhighlight> ; Czwarty sposób{{dk}} Albo te parametry wsadzając do funkcji: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"]("wartość1","wartość2","wartość3"); </syntaxhighlight> ; Piąty spssób{{dk}} Można też wywołać to wszystko w ramce, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w wikikpdzie, wtedy wsadzając parametry do ramki: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|wartość1|wartość2|wartość3}} </syntaxhighlight> === Omówienie pobierania takich parmetrów === A jak połączyć wszystkie te pięć sposobów, posługiwać się tymi sposobami wewnątrz funkcji {{Code|Nazwa funkcji}} w sposób jednolity, jedynie wtedy należy skorzystać z funkcji z definiowaną w jakimś module w sposób: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(...) local tablica_prametrow_funkcji={...}; local parametry_modul=require("Module:Parametry"); local PobierzElementNumerowanyZFrameLubTablicy=parametry_modul.PobierzElementNumerowanyZFrameLubTablicy(tablica_prametrow_funkcji); ... end; </syntaxhighlight> Wtedy za pomocą zmiennej {{Code|PobierzElementNumerowanyZFrameLubTablicy}} dostaliśmy się do funkcji, która przyjmuje jedyny parametr, aby dostać się do elementów tablicy uzyskanej w wewnątrz tej funkcji, zdefiniowaną w tablicy {{Code|tablica_prametrow_funkcji}}, która jest nic innym jak zestawem parametrów w funkcji: {{Code|Nazwa funkcji}}. * W pierwszym i drugim sposobem zmienną tą nazwijmy to jako {{Code|args}}, jest zmienną z podtablicy innego {{Code|args}} przekazanych jako parametr tablicy do funkcji, * w trzecim sposobie tą zmienną jest cała tablica, * a czwartym jest zestaw parametrów ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. A czym się różnią się te sposoby, a więc te sposoby można powiązać jedną tylko funkcją powiedzianą w nagłówku według przykładu podaną zaraz powyżej, wtedy możemy dostawać się do tych samych zmiennych o takich samych nazwach i wartościach, ale w różnych reprezentacjach na różne sposoby, wtedy można powiedzieć, że: <syntaxhighlight lang="lua"> args[1]="wartość1"; args[2]="wartość2"; args[3]="wartość3"; </syntaxhighlight> Czyli w wyniku działania funkcji w nagłówku, otrzymamy funkcję zwracającą te wartości, która operuje na tej tablicy, której wynikiem jest zestaw zmiennych ponumerowanych, ogólnie nienazwanych, której wartości odpowiadają te podane w ramce ostatniej powyżej. Na podstawie tego wiemy, jak działa funkcja ta z nagłówka. === Nazwy alternatywne danych parametrów funkcji ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}} === Pisząc w inny sposób, można też wskazywać: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(...) local tablica_prametrow_funkcji={...}; local parametry_modul=require("Module:Parametry"); local PobierzElementNumerowanyZFrameLubTablicy=parametry_modul.PobierzElementNumerowanyZFrameLubTablicy(tablica_prametrow_funkcji); local wartosc1=PobierzElementNumerowanyZFrameLubTablicy("nazwa1") or PobierzElementNumerowanyZFrameLubTablicy(1); local wartosc2=PobierzElementNumerowanyZFrameLubTablicy("nazwa2") or PobierzElementNumerowanyZFrameLubTablicy(2); local wartosc3=PobierzElementNumerowanyZFrameLubTablicy("nazwa3") or PobierzElementNumerowanyZFrameLubTablicy(3); end; </syntaxhighlight> Zmienne w przykładzie o kluczach: {{Code|nazwa1}}, {{Code|nazwa2}} i {{Code|nazwa3}}, posiadające pewne swoje wartości, to są zmienne w tablicy {{Code|tablica_prametrow_funkcji}}, podane też jako zmienne, jako pewne argumenty tablicy, który są w tej funkcji zwracanej jako argument (parametr) funkcji, * jeżeli argumenty podano w postaci jednego parametru funkcji w postaci pewnej tablicy z np. elementami nazwanymi, * lub jako wiele argumentów w ramce, w wikikodzie, w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w pewnym szablonie, * a rozpatrując dalej elementy względem ich nazw, np. alternatywnych, to te numery mogą być kolejo do nazw ich odpowiedników nazwanych, które w przykładzie powyżej, mają pierwszeństwo, ale tak nie musi być, te parametry: {{Code|1}}, {{Code|2}} i {{Code|3}}, to jest numer parametru, jeżeli argumenty do funkcji podano w postaci wielu jego parametrów. == {{Code|p.PobierzParametr}} == Ta funkcja zwraca znów inną funkcję, która ma jedyny parametr, mówiący jakiego parametru poszukujemy, co jest wyjaśnione w definicji funkcji z nagłówka, że ona zwraca tą właśnie funkcje. Definicja skrótowa dunkcji: <syntaxhighlight lang="lua"> function p.PobierzParametr(frame,czy_frame_lub_parent,czy_frame) ... return function(nazwa) return __pobierz_parametr_table_args(nazwa); end; end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu. | 2 = {{Code|czy_frame_lub_parent}} i {{Code|czy_frame}} | _2 = Parametry logiczne dodatkowe funkcji. }} === Wartość zwracana i jego druga wartośc w postaci numeru metody === Funkcja zwraca jednocześnie dwie wartości, ta zwrócona z funkcji z nagłówka, prawdziwą wartość, i numer metody w postaci: {{Code|return wartosc, numer_metody}}. === Opis zwracanych elementów przez funkcję zwracaną - różnemetody zwracania, jak je wykorzystać === Ta funkcja zwracana ma w swojej definicji inną jeszcze funkcję z tym samym parametrem, co jego rodzic, i to jest za każdym razem inna funkcja w zależności z jakim typem danych się posługujemy {{Code|frame}} i jakie podaliśmy parametry. Gdy warunkiem, gdy zmienna {{Code|frame}} jest tablicą, czyli te zmienne druga: {{Code|czy_frame_lub_parent}} (jeżeli funkcja jest uruchomiona w ramce w szablonie, jeżeli ma wartość {{Code|true}}, to ona wybiera raz parametr z: {{Code|frame.args[nazwa or 1]}}, a za innym razem z {{Code|pf.args[nazwa or 1]}}, gdzie {{Code|pf{{=}}frame:getParent()}}, tutaj jest zwracana wartość: {{Code|return wartosc,2}}). Czy trzecia: {{Code|czy_frame}} (która mówi, jeżeli funkcję uruchomiono w ramce, ale przy wartości prawdziwej tego pierwszego podanego parametru, czyli {{Code|true}}, wybierana jest zawsze wartość {{Code|frame.args[nazwa or 1}}}, w przeciwnym wypadku uruchamiana jest funkcja {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, tutaj zwracana jest wartość {{Code|return wartosc,1}}). Jeżeli wartością {{Code|frame}} jest wartość nietablicowa, ale niebędącą wartością {{Code|nil}}, wtedy ustawiana jest funkcja, która tylko za pierwszym razem zwraca nienilową wartość {{Code|return wartosc,0}}, a później zwraca wartość {{Code|return nil,0}}. Gdy wartością {{Code|frame}} jest {{Code|nil}}, to funkcja zawsze wraca tą wartość {{Code|return nil,0}}. Powyższy sposób działa również dobrze, gdy zdefiniujemy w parametrach funkcji fałszywą funkcję {{Code|frame.getParent}}. Gdy funkcja nie jest uruchamiana w ramce lub funkcja {{Code|frame.getParent}} nie jest zdefiniowana, to wtedy funkcja wchodzi zawsze w ten jej krok, jakby {{Code|czy_frame_lub_parent}} było {{Code|false}} według tego powyżej, to wtedy brana jest zmienna {{Code|czy_frame}}, i jaką wartość ona przyjmuje. === Nazwy alternatywne parametrów === Funkcję pisze się według sposobu, którą się wywołuje według: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame); local wartosc1=PobierzParametr("nazwa1") or PobierzParametr(1); local wartosc2=PobierzParametr("nazwa2") or PobierzParametr(2); local wartosc3=PobierzParametr("nazwa3") or PobierzParametr(3); </syntaxhighlight> Na wypadek wartości nietabelowej, tą wartość zapisuje się jako pierwszą w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a dla wartości tabelowych, jaka jest kolejność to jest obojętne, byle by to było sensowne. === Wywołania funkcji w ramce, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, z funkcją parametrów === Tę funkcję podobnie się wywołuje jak funkcję: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}. Wartością {{Code|frame}} nie musi być tablica ramki tablicy transportu, równie dobrze może być to dowolna tablica lub wartość nietablicowa. Weźmy ramkę, w której uruchamiamy funkcję ramki: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}} </syntaxhighlight> === Przykłady wykorzystania funkcji === ; Przykład pierwszy{{dk}} Ona musi być wywołana z parametrem {{Parametr|wyspecjalizowana|tak}}, jako podpowiedź, że liczą się parametry ramki dziecka, a nie jego rodzica, czyli szablonu. Wtedy funkcję {{Code|Nazwa funkcji}} definiujemy: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame,true); ... end; </syntaxhighlight> Wtedy parametr {{Parametr|wyspecjalizowana|tak}} jest ignorowany, a przy wartości {{Code|false}} drugiego parametru funkcji, czyli wywołania: {{Code|local PobierzParametr{{=}}parametry_modul.PobierzParametr(frame,false);}}, już nie, ale nie zawsze. W takim przypadku według powyższego przykładu raz jest brana wartość, jeżeli istnieje, z {{Code|frame.args}}, a jak ona nie istnieje, to wtedy z: {{Code|pf.args}}. ; Przykład drugi{{dk}} Weźmy inny przypadek: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame,false,true); ... end; </syntaxhighlight> Przy tym też parametr: {{Parametr|wyspecjalizowana|tak}}, jest ignorowany, wtedy jest zawsze wybierana do rozważań tablica: {{Code|frame.args}}. ; Przykład trzeci{{dk}} Znów w innym przypadku, gdzie parametr: {{Parametr|wyspecjalizowana|tak}}, jest zawsze rozważany w naszym wypadku: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame,false,false); ... end; </syntaxhighlight> To to wywołanie, wtedy dokładnie działa jak funkcja: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, a zwrócona funkcja: {{Code|PobierzParametr}} pobiera elementy z tak uzyskanej tablicy {{Code|args}} poprzez nią. === Przypadek nietablicowego charakteru parametrów funkcji === W przypadku, gdy {{Code|frame}} nie jest tablicą, wtedy parametry: {{Code|czy_frame_lub_parent}} i {{Code|czy_frame}}, są w takim przypadku zawsze ignorowane, ale muszą być ustawione na wypadek, gdyby do funkcji {{Code|Nazwa funkcji}} wsadzono tablicę, np. z ramki, tzn. tablicę ramki funkcji tablicy transportu. === Ogólny przypadek, często stosowany === Najprostszym często ogólnym przykładem, który prawie zawsze jest stosowany: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame); ... end; </syntaxhighlight> Wtedy parametr: {{Parametr|wyspecjalizowana|tak}}, jest prawie zawsze nieignorowany, ale nie zawsze. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> dk9o4j0m3elrakdriidf51phdwkwqe9 555747 555746 2026-09-11T19:47:25Z Persino 2851 /* Opis zwracanych elementów przez funkcję zwracaną - różnemetody zwracania, jak je wykorzystać */ 555747 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} Są tutaj przedstawione funkcje parametrów. == {{Code|p.PobierzFrameEwentualnieParent}} == Argument tej funkcji {{Code|frame}} koniecznie musi być tablicą, w przypadku przeciwnym wywoła to błąd języka {{lpg|Lua}}, że z wartości nietabelowej chcemy wyliczyć jego nieistniejący element {{Code|getParent}}, który ma prawo nie być. Funkcja pobiera parametry ramki szablonu rodzica, a nie dziecka, a jeżeli w dziecku w ramce w wikikodzie w szablonie podamy specjalny parametr {{Parametr|wyspecjalizowana|tak}}, to wtedy ta funkcja ściąga parametry ramki. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobierzFrameEwentualnieParent(frame)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu. }} === Sterowanie funkcją === Tą funkcją można sterować ze strony ramki tym właśnie specjalnym parametrem o wartości niepustej, którą jest {{Parametr|wyspecjalizowana|tak}}. ==== Przykłady wykorzystania z parametrem sterującym ==== W ramce podajemy argumenty wraz z tym specjalnym parametrem: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}} </syntaxhighlight> To wtedy w kodzie w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} w module o nazwie {{Code|Nazwa modułu}}, piszemy: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzFrameEwentualnieParent(frame).args; .... end; </syntaxhighlight> To wtedy w kodzie ściągane parametry ramki dziecka. === Pobieranie oryginalnej tablicy === Tę funkcję można równie dobrze wykorzystać do zwykłych tabel: <syntaxhighlight lang="lua"> local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzFrameEwentualnieParent(tabela); </syntaxhighlight> === Możliwość tej samej funkcji uruchomioną w ramce lub z podaniem do niej pewnego zestawu parametrów w postaci tablicy === A w tym przypadku ta funkcja nic nie robi, tylko zmienna {{Code|args}} referencyjnie wskazuje na tablicę {{Code|tablica}}. Ale można ją wykorzystać, gdy by funkcja {{Code|Nazwa funkcji}}, była uruchomiona ze zwykłą tablicą, ale z możliwością, że to może być tablicą ramki {{Code|frame}} tablicy transportu, np.: <syntaxhighlight lang="lua"> --- Pierwsza możliwość; local wartosc1=p["Nazwa funkcji"](frame); -- Druga możliwość local wartosc2=p["Nazwa funkcji"]{["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; </syntaxhighlight> === Niedogodności stosowania z funkcji === Dla obu jest taka niedogodność, że jedynie jest taka nieprawidłowość, że w przypadku parametru tablicy ramki tablicy transportu należy podawać uzyskany element {{Code|args}}, a w przypadku zwykłej tablicy już nie, tą niedokodność rozwiązuje funkcja: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}. == {{Code|p.PobierzArgsParametry}} == Argument tej funkcji {{Code|frame}} koniecznie nie musi być tablicą, bo wtedy nie wywoła to błędu języka {{lpg|Lua}}, że z wartości nietabelowej chcemy wyliczyć jego niepusty element {{Code|getParent}}, bo przedtem sprawdzana jest w tej funkcji, czy jest to tablica. W definicji tej funkcji zmienna uzyskana z funkcji: {{Code|{{sr|#p.PobierzFrameEwentualnieParent(frame)|p=Parametry}}}}, a jeśli jej składowa {{Code|args}} jest tablicą, to jest właśnie ona zwracana, a jeśli istnieje, ale nie jest tablicą, lub ona nie istnieje, to wtedy brana jest właśnie wartość tablicowa {{Code|frame}}, jeśli jest ona taka, a gdy nie, to wtedy z tej funkcji tutaj nie korzystamy. Funkcja pobiera parametry ramki szablonu rodzica, a nie dziecka, a jeżeli w dziecku w ramce w wikikodzie w szablonie podamy specjalny parametr {{Parametr|wyspecjalizowana|tak}}, to wtedy ta funkcja ściąga parametry ramki. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobierzArgsParametry(frame, czy_nie_tablica_jako_tablica)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica transportu ramki. | 2 = {{Code|czy_nie_tablica_jako_tablica}} | _2 = Czy wartości nietablicowe umieszczać w jednoelemenowej tabeli. }} === Opis działania === Funkcja wykorzystuje wspomnianą powyżej funkcję do swojego działania, ona jest wtedy aktywowana, gdy zmienna {{Code|frame}} jest tablicą, i jest sprawdzane, czy ona posiada nazwany element o kluczu {{Code|args}}, i czy jest on tablicowy. Jeżeli wartością zmiennej {{Code|frame}} nie jest tablica, ale nie przybiera wartości {{Code|nil}}, to ona jest umieszczana w tablicy, jeżeli zmiennej {{Code|czy_nie_tablica_jako_tablica}} przydzielimy wartość {{Code|true}}, w przeciwnym wypadku zwracana jest ona w postaci niezmienionej, a jeżeli wartość tej zmiennej nie istnieje, to zwracana jest zwykła tablica pusta. Tą funkcją można sterować ze strony ramki tym właśnie specjalnym parametrem o wartości niepustej. === Przykład wywołania funkcji z funkcją parametrów === W ramce podajemy argumenty wraz z tym specjalnym parametrem: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}} </syntaxhighlight> ==== Użycie funkcji parametrów ==== To wtedy w kodzie w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} w module o nazwie {{Code|Nazwa modułu}}, piszemy: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(frame); .... end; </syntaxhighlight> To wtedy w kodzie ściągane parametry ramki dziecka. === Wykorzystanie fukcji w różnych sytuacjach === ; Przypadek pierwszy{{dk}} Tę funkcję można równie dobrze wykorzystać do zwykłych tabel: <syntaxhighlight lang="lua"> local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(tabela); </syntaxhighlight> ; Drugi przypadek{{dk}} A w tym przypadku ta funkcja nic nie robi, tylko zmienna {{Code|args}} referencyjnie wskazuje na tablicę {{Code|tablica}}. Ale można ją wykorzystać, gdyby funkcja {{Code|Nazwa funkcji}}, była uruchomiona ze zwykłą tablicą, ale z możliwością, że to może być tablicą ramki {{Code|frame}} tablicy transportu, np.: <syntaxhighlight lang="lua"> --- Pierwsza możliwość; local wartosc1=p["Nazwa funkcji"](frame); -- Druga możliwość local wartosc2=p["Nazwa funkcji"]{["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; </syntaxhighlight> === Usunięcie niedogodności === Dla obu tych przypadków nie ma żadnej niedogodności, jak to występowała w {{Code|{{sr|#p.PobierzFrameEwentualnieParent(frame)|p=Parametry}}}}. === Parametr funkcji nietablicowy === Jeśliby do funkcji tablicy transportu dać wartość równą nie tablicy, to wtedy równoważnie możemy napisać: <syntaxhighlight lang="lua"> local wartosc="wartość"; local wynik=p["Nazwa funkcji"](wartosc); </syntaxhighlight> to wtedy definicję tej funkcji piszemy: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(frame,true); local wartosc=args[1]; end; </syntaxhighlight> lub równoważnie możemy zapisać: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); local wartosc=parametry_modul.PobierzArgsParametry(frame); end; </syntaxhighlight> === Brak parametrów funkcji === A jeżeli nie wsadziliśmy żadnej wartości do funkcji ramki tablicy transportu lub tą wartością jest {{Code|nil}}, wtedy: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"](); </syntaxhighlight> wtedy definicja tej funkcji wygląda: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); -- Zmienna: args, wskazuje na wartość, którą jest tablicą pustą, tzn. w tej tablicy nie ma wcale elementów; local args=parametry_modul.PobierzArgsParametry(frame); end; </syntaxhighlight> === Zmienna {{Code|args}} - alternatywny przypadek dla wartości tablicowych niż te bez drugiego parametru === Widzimy, że wtedy zmienna {{Code|args}} jest normalną pustą tablicą, i nie musimy wtedy wcale pisać poniżej, bo wtedy wychodzi w tym przypadku na to samo: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(frame,true); </syntaxhighlight> === Różnica drugiego parametru w przypadku wartości nietablicowych === Argument drugi w {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, który w naszym przypadku musi mieć wartość {{Code|true}}, a wtedy jest jedynie sens, gdy {{Code|frame}} nie jest tablicą, i gdy chcemy tą wartość umieścić w tablicy, a nie powtórzyć wartość, tzn. chcemy napisać: {{Code|{{(}}frame,{{)}}}}, w przeciwnym wypadku musilibyśmy napisać coś w rodzaju, zamiast tak spreparowanej tablicy: {{Code|frame}}, czyli: <syntaxhighlight lang="lua"> -- Pierwszy przypadek, gdy frame jest wartością nietablicową; local parametry_modul=require("Module:Parametry"); ... -- Zwracana wartość: args, to nic innego niż: {frame,}; local args=parametry_modul.PobierzArgsParametry(frame,true); ... -- Zwracana wartość: args, to nic innego niż: frame, a nie {frame,}, jak poprzednio; local args=parametry_modul.PobierzArgsParametry(frame); </syntaxhighlight> == {{Code|p.PobierzParametryRamki}} == Funkcja służy do ustawienia pewnych domyślnych dwóch pewnych funkcji służących do pobieranie danych z tabelki z pierwszej tej funkcji: * Jeżeli ona posiada klucz o wartości {{Code|args}}, ** to zwracana jest ta właśnie tablica jako argument pierwszej tej funkcji, jeżeli jest w ogóle tablicą, ** w przeciwnym wypadku zwracana jest ta oryginalna tablica, też jako argument tej funkcji, * w przeciwnym dalszym wypadku zwracana jest zwracana wartość ta, jako argument tej drugiej funkcji, która zwraca prawdziwą wartość z argumentu tylko za pierwszym razem, z tej funkcji, za następnym i dalszym razem {{Code|nil}}. Z tak utworzonej ogólnie większej funkcji wykorzystywana jest w budowie omawianej funkcji, która jest zwracana przez omawianą funkcję, która względem jego budowy wywołuje raz pierwszą albo drugą poprzednią wspomnianą funkcję zależną od rodzaju zmiennej {{Code|frame}}, która może być tabelką, ale nie musi być. Ta funkcja zwracana przez funkcję w nagłówku przyjmuje argument, która jest kluczem do tych wspomnianych, może że, * tabel (dokładnie, która ta może tabelka to zależy od formatu tej naszej rozważanej zmiennej), * a jeżeli to nie tabelka, co jest zwracane, to już zostało powiedziane. Definicja skrótowa tej funkcji jest: <syntaxhighlight lang="lua"> function p.PobierzParametryRamki(frame)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu. }} Weźmy ramkę sformułowaną w wikikodzie jako dziecko w szablonie rodzicu: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5}} </syntaxhighlight> === Funkcje, z funkcją parametrów, z tablicą ramki lub one z podtablicą {{Code|args}} === To wtedy tablica ramki tablicy transportu posiada właśnie {{Code|frame}}, która jest tablicą, i na pewno posiada tablicę o nazwie {{Code|args}}, to wtedy tę funkcję wywołaną w ramce, która wywołuje funkcję w nagłówku, formułujemy: <syntaxhighlight lang="lua"> local p={}; local p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametryRamki=parametry_modul.PobierzParametryRamki(frame); ... end; </syntaxhighlight> ==== Przykład wywołania funkcji z funkcją parametrów z tablicą {{Code|args}} ==== Równie dobrze funkcję z ramki można wywołać w sposób, co wtedy ta funkcja też zostanie wywołana pozytywnie: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"]{args={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}}; </syntaxhighlight> W tej funkcji nie trzeba definiować funkcji fałszywej {{Code|getParent}}, w postaci: {{Code|getParent{{=}}function()end}}. Widzimi, że ta tablica posiada nazwę zmiennej tablicowej o nazwie {{Code|args}}, ale ona nie jest tablicą ramki tablicy transportu, ale tą tablicę możemy bezposrednio wsadzić w tą główną tablicę w samym argumencie funkcji. ==== Przykład wywołania z tablicą bez podtablicy {{Code|args}} ==== Równie dobrze możemy wywołać tę funkcję zdefiniowaną naszą w jakimś module w sposób: <syntaxhighlight lang="lua"> local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; local wynik=p["Nazwa funkcji"]{tabela); </syntaxhighlight> też ta funkcja prawidłowo się wywoła. W tym przypadku, jak i w przypadkach powyżej, wyniki uzyskuje się w następującym wywołaniach: <syntaxhighlight lang="lua"> --- Zmienna: wartosc1, przyjmuje wartość: "wartość1"; local wartosc1=PobierzParametryRamki("nazwa1"); --- Zmienna: wartosc2, przyjmuje wartość: "wartość2"; local wartosc2=PobierzParametryRamki("nazwa2"); --- Zmienna: wartosc3, przyjmuje wartość: "wartość3"; local wartosc3=PobierzParametryRamki(1); </syntaxhighlight> ==== Przykład wywołania funkcji z wartością nietablicową ==== W innym przypadku wywołań funkcji ramki jest wsadzenie do niej zwykłego nietablicowego elementu, może być też to wartość: {{Code|nil}}. A to wywołanie jest: <syntaxhighlight lang="lua"> local wartosc="wartość"; --Zmienna: wartosc, nie jest w tym przypadku tablicą; local wynik=p["Nazwa funkcji"](wartosc); </syntaxhighlight> === Wywołania funkcji parametrów bez argumentów - wiele kolejnych wywołań jednocześnie === Wtedy w tej ramce w celu uzyskania, jakikolwiek wartości jest przykład wywołania tej funkcji zwracanej przez funkcję w ramce z argumentem pustym. <syntaxhighlight lang="lua"> -- Zmienna: wartość1, przyjmuje wartość: "wartość"; Jeżeli ona, przyjmuje wartość: nil, to wywołanie rzuci: nil, i za każdym następny razem; local wartosc1=PobierzParametryRamki(); -- Zmienna: wartość2, przyjmuje wartość: nil; local wartosc2=PobierzParametryRamki(); </syntaxhighlight> W wywołaniach powinno dbać się o właściwą kolejność wywołań, bo argumentem funkcji z tablicy transportu może być zwykła tablicowa wartość. Najpierw uzyskujemy wartości nietablicowe, a później tablicowe, na wypadek niewiadomej {{Code|frame}} jakiego typu ma być wartość. === Dwa przypadki, parametr w tablicy, lub wartość nietablicowa funkcji === Też ta zmienna może istnieć pod kilkoma możliwymi kluczami, lub tą zmienną może być jedyny argument funkcji, która jest nietablicową wartością, wtedy ją się wywołuje jako dla przypadku, gdy parametr jest nietablicowy lub jest pod kluczem {{Code|tekst}}: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local tekst=parametry_modul.PobierzParametryRamki(frame)("tekst"); </syntaxhighlight> === Przypadek, gdy parametr funkcji nie jest tablicą === Lub chcemy tę funkcję wywołać bezparametrowo, gdy chcemy, by {{Code|frame}} nie była tablicą: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local tekst=parametry_modul.PobierzParametryRamki(frame)(); </syntaxhighlight> === Omówienie przypadku istnienia tego samego wariantu zmiennej raz podtablicą, a raz jako zmienna nietablicowa === * Wtedy ta zmienna w przedostatnim przykładzie jest pod wartością {{Code|tekst}}, gdy wartość {{Code|frame}} jest tablicą, * lub może być jedyną wartością, którą jest {{Code|frame}}, jako zmienna nietablicowa, wtedy ta zmienna też jest pod {{Code|tekst}}, ** ta funkcja uzyskana z: {{Code|{{sr|#p.PobierzParametryRamki(frame)|p=Parametry}}}}, wtedy może być wywołana tylko raz z nienilową wartością zwracaną, następnym razem zwraca wartość {{Code|nil}}, wtedy to dotyczy przedostatniego i ostatniego przykładu. === Jakma liczyć element funkcji w przypadku różnych jej parametrów === Jeżeli {{Code|frame}} jest nietablicowa, to wtedy wartość {{Code|tekst}} jest taka sama, co {{Code|frame}}. A jeżeli jest tablicą, to ta wartością jest {{Code|frame.args["tekst"]}}, lub gdy {{Code|args}} nie istnieje, lub istnieje, ale jest nietablicowa, to wtedy ta wartość jest {{Code|frame["tekst"]}}. === Parametry alternatywne funkcji - przykład wykorzystania funkcji parametrów === A gdy zmienne istnieją pod wieloma kluczami, lub gdy funkcję wywołano ze zmienną nietablicową, wtedy ogólnie możemy dla przykładu powiedzieć: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local PobierzParametryRamki=parametry_modul.PobierzParametryRamki(frame); local wartosc1=PobierzParametryRamki("nazwa1") or PobierzParametryRamki(1); local wartosc2=PobierzParametryRamki("nazwa2") or PobierzParametryRamki(2); local wartosc3=PobierzParametryRamki("nazwa3") or PobierzParametryRamki(3); </syntaxhighlight> * Wtedy ta zmienna jest pod kluczem, np.: {{Code|nazwa1}} lub {{Code|1}}, tablicy ramki {{Code|frame}} tablicy transportu, następne wywołania dla następnych kluczy też zrzucą pewne wartości, * lub jest ona zwykłą nietablicową wartością mogącą być równą, nawet {{Code|nil}}. ---- * Następne wywołania uzyskanej tak funkcji w przypadku, gdy {{Code|frame}} jest nietablicowy, rzucać będzie z samej definicji funkcji wartości {{Code|nil}}, czyli {{Code|wartosc2{{=}}wartosc3{{=}}nil}}, ale za to wartość {{Code|wartosc1}} nie musi być, ale może, wartością {{Code|nil}}, jeśli tą wartością jest, gdy {{Code|frame{{=}}nil}}, * w przeciwnym wypadku za pierwszym razem tej wartości nietablicowej uzyskamy wartość nie {{Code|nil}}, a za drugim i dalszym zawsze wartość {{Code|nil}}. == {{Code|p.PobierzElementNumerowanyZFrameLubTablicy}} == Definicja skrótowa funkcji jest z parametrem charakteryzującym pewien zestaw zmiennych {{Code|frame}}, * które nie musi być tablicą ramki tablicy transportu, tylko moze być innym parametrem, który jest tablicą parametrów podanych do funkcji, * nawet gdy parametrem podanym do funkcji, w której wykorzystujemy tą funkcję, jest jedyna zmienna będąca tablicą ramki. Ale z drugiej strony, tak nie musi być, może być to rozbudowany zestaw zmiennych, np. nazwanych i nienazwanych, którego wszystkie sposoby podawania łączymy jednym sposobem podawania. Mimo że parametry funkcji są parametrami nienazwanymi, mogą być one ponumerowane, ale zmienna w tablicy może przyjmować wartość tą samą na różne sposoby, raz w sposób nazwany, a za innym sposobem jako nienazwany. Ogólnie ostateczne parametry łączymy w dane parametry za pomocą jednego sposobu, tzn. za pomocą tej funkcji, i dla tak uzyskanej tablicy tworzymy funkcję zwracaną przez funkcję w nagłówku, która przyjmuje parametr, który jest kluczem tej uzyskanej tablicy. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobierzElementNumerowanyZFrameLubTablicy(frame)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu. }} Weźmy najprostszy sposób realizacji tej funkcji, w realizacji: {{Code|1-1, 2-2, 3-3}}, czyli ten opis jest zaraz poniżej. === Sposoby wywołania funkcji === ; Pierwszy sposób{{dk}} Weźmy funkcję, którą można wywoływać z wieloma parametrami, jak i w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, którą przykładowo piszemy jego wywołanie wewnątrz innej funkcji na pięć sposobów, czyli teraz pierwszy sposób z tylko z parametrem, więc tablicą ramki tablicy transportu wywodzącą się z ramki uruchomioną w wikikodzie w jakimś szablonie rodzicu: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"](frame); </syntaxhighlight> ; Drugi sposób{{dk}} A teraz drugi sposób, pisząc, bezpośrednio inaczej, formułując wywołanie tej funkcji, używając zmiennych tablicowych tablicy ramki, ale to nie jest tak naprawdę tablica ramka tablicy transportu, tylko parametr podany bezpośrednio do funkcji, tak jak się to robi w języku {{lpg|Lua}}, nie jak w przykładzie powyżej, więc: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"]{args={"wartość1","wartość2","wartość3",},}; </syntaxhighlight> ; Trzeci sposób{{dk}} Lub równoważnie, pisząc, nie używając zmiennej {{Code|args}}: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"]{"wartość1","wartość2","wartość3",}; </syntaxhighlight> ; Czwarty sposób{{dk}} Albo te parametry wsadzając do funkcji: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"]("wartość1","wartość2","wartość3"); </syntaxhighlight> ; Piąty spssób{{dk}} Można też wywołać to wszystko w ramce, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w wikikpdzie, wtedy wsadzając parametry do ramki: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|wartość1|wartość2|wartość3}} </syntaxhighlight> === Omówienie pobierania takich parmetrów === A jak połączyć wszystkie te pięć sposobów, posługiwać się tymi sposobami wewnątrz funkcji {{Code|Nazwa funkcji}} w sposób jednolity, jedynie wtedy należy skorzystać z funkcji z definiowaną w jakimś module w sposób: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(...) local tablica_prametrow_funkcji={...}; local parametry_modul=require("Module:Parametry"); local PobierzElementNumerowanyZFrameLubTablicy=parametry_modul.PobierzElementNumerowanyZFrameLubTablicy(tablica_prametrow_funkcji); ... end; </syntaxhighlight> Wtedy za pomocą zmiennej {{Code|PobierzElementNumerowanyZFrameLubTablicy}} dostaliśmy się do funkcji, która przyjmuje jedyny parametr, aby dostać się do elementów tablicy uzyskanej w wewnątrz tej funkcji, zdefiniowaną w tablicy {{Code|tablica_prametrow_funkcji}}, która jest nic innym jak zestawem parametrów w funkcji: {{Code|Nazwa funkcji}}. * W pierwszym i drugim sposobem zmienną tą nazwijmy to jako {{Code|args}}, jest zmienną z podtablicy innego {{Code|args}} przekazanych jako parametr tablicy do funkcji, * w trzecim sposobie tą zmienną jest cała tablica, * a czwartym jest zestaw parametrów ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. A czym się różnią się te sposoby, a więc te sposoby można powiązać jedną tylko funkcją powiedzianą w nagłówku według przykładu podaną zaraz powyżej, wtedy możemy dostawać się do tych samych zmiennych o takich samych nazwach i wartościach, ale w różnych reprezentacjach na różne sposoby, wtedy można powiedzieć, że: <syntaxhighlight lang="lua"> args[1]="wartość1"; args[2]="wartość2"; args[3]="wartość3"; </syntaxhighlight> Czyli w wyniku działania funkcji w nagłówku, otrzymamy funkcję zwracającą te wartości, która operuje na tej tablicy, której wynikiem jest zestaw zmiennych ponumerowanych, ogólnie nienazwanych, której wartości odpowiadają te podane w ramce ostatniej powyżej. Na podstawie tego wiemy, jak działa funkcja ta z nagłówka. === Nazwy alternatywne danych parametrów funkcji ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}} === Pisząc w inny sposób, można też wskazywać: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(...) local tablica_prametrow_funkcji={...}; local parametry_modul=require("Module:Parametry"); local PobierzElementNumerowanyZFrameLubTablicy=parametry_modul.PobierzElementNumerowanyZFrameLubTablicy(tablica_prametrow_funkcji); local wartosc1=PobierzElementNumerowanyZFrameLubTablicy("nazwa1") or PobierzElementNumerowanyZFrameLubTablicy(1); local wartosc2=PobierzElementNumerowanyZFrameLubTablicy("nazwa2") or PobierzElementNumerowanyZFrameLubTablicy(2); local wartosc3=PobierzElementNumerowanyZFrameLubTablicy("nazwa3") or PobierzElementNumerowanyZFrameLubTablicy(3); end; </syntaxhighlight> Zmienne w przykładzie o kluczach: {{Code|nazwa1}}, {{Code|nazwa2}} i {{Code|nazwa3}}, posiadające pewne swoje wartości, to są zmienne w tablicy {{Code|tablica_prametrow_funkcji}}, podane też jako zmienne, jako pewne argumenty tablicy, który są w tej funkcji zwracanej jako argument (parametr) funkcji, * jeżeli argumenty podano w postaci jednego parametru funkcji w postaci pewnej tablicy z np. elementami nazwanymi, * lub jako wiele argumentów w ramce, w wikikodzie, w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w pewnym szablonie, * a rozpatrując dalej elementy względem ich nazw, np. alternatywnych, to te numery mogą być kolejo do nazw ich odpowiedników nazwanych, które w przykładzie powyżej, mają pierwszeństwo, ale tak nie musi być, te parametry: {{Code|1}}, {{Code|2}} i {{Code|3}}, to jest numer parametru, jeżeli argumenty do funkcji podano w postaci wielu jego parametrów. == {{Code|p.PobierzParametr}} == Ta funkcja zwraca znów inną funkcję, która ma jedyny parametr, mówiący jakiego parametru poszukujemy, co jest wyjaśnione w definicji funkcji z nagłówka, że ona zwraca tą właśnie funkcje. Definicja skrótowa dunkcji: <syntaxhighlight lang="lua"> function p.PobierzParametr(frame,czy_frame_lub_parent,czy_frame) ... return function(nazwa) return __pobierz_parametr_table_args(nazwa); end; end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu. | 2 = {{Code|czy_frame_lub_parent}} i {{Code|czy_frame}} | _2 = Parametry logiczne dodatkowe funkcji. }} === Wartość zwracana i jego druga wartośc w postaci numeru metody === Funkcja zwraca jednocześnie dwie wartości, ta zwrócona z funkcji z nagłówka, prawdziwą wartość, i numer metody w postaci: {{Code|return wartosc, numer_metody}}. === Opis zwracanych elementów przez funkcję zwracaną - różne metody zwracania, jak je wykorzystać === Ta funkcja zwracana ma w swojej definicji inną jeszcze funkcję z tym samym parametrem, co jego rodzic, i to jest za każdym razem inna funkcja w zależności z jakim typem danych się posługujemy {{Code|frame}} i jakie podaliśmy parametry. Gdy warunkiem, gdy zmienna {{Code|frame}} jest tablicą, czyli te zmienne druga: {{Code|czy_frame_lub_parent}} (jeżeli funkcja jest uruchomiona w ramce w szablonie, jeżeli ma wartość {{Code|true}}, to ona wybiera raz parametr z: {{Code|frame.args[nazwa or 1]}}, a za innym razem z {{Code|pf.args[nazwa or 1]}}, gdzie {{Code|pf{{=}}frame:getParent()}}, tutaj jest zwracana wartość: {{Code|return wartosc,2}}). Czy trzecia: {{Code|czy_frame}} (która mówi, jeżeli funkcję uruchomiono w ramce, ale przy wartości prawdziwej tego pierwszego podanego parametru, czyli {{Code|true}}, wybierana jest zawsze wartość {{Code|frame.args[nazwa or 1}}}, w przeciwnym wypadku uruchamiana jest funkcja {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, tutaj zwracana jest wartość {{Code|return wartosc,1}}). Jeżeli wartością {{Code|frame}} jest wartość nietablicowa, ale niebędącą wartością {{Code|nil}}, wtedy ustawiana jest funkcja, która tylko za pierwszym razem zwraca nienilową wartość {{Code|return wartosc,0}}, a później zwraca wartość {{Code|return nil,0}}. Gdy wartością {{Code|frame}} jest {{Code|nil}}, to funkcja zawsze wraca tą wartość {{Code|return nil,0}}. Powyższy sposób działa również dobrze, gdy zdefiniujemy w parametrach funkcji fałszywą funkcję {{Code|frame.getParent}}. Gdy funkcja nie jest uruchamiana w ramce lub funkcja {{Code|frame.getParent}} nie jest zdefiniowana, to wtedy funkcja wchodzi zawsze w ten jej krok, jakby {{Code|czy_frame_lub_parent}} było {{Code|false}} według tego powyżej, to wtedy brana jest zmienna {{Code|czy_frame}}, i jaką wartość ona przyjmuje. === Nazwy alternatywne parametrów === Funkcję pisze się według sposobu, którą się wywołuje według: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame); local wartosc1=PobierzParametr("nazwa1") or PobierzParametr(1); local wartosc2=PobierzParametr("nazwa2") or PobierzParametr(2); local wartosc3=PobierzParametr("nazwa3") or PobierzParametr(3); </syntaxhighlight> Na wypadek wartości nietabelowej, tą wartość zapisuje się jako pierwszą w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a dla wartości tabelowych, jaka jest kolejność to jest obojętne, byle by to było sensowne. === Wywołania funkcji w ramce, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, z funkcją parametrów === Tę funkcję podobnie się wywołuje jak funkcję: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}. Wartością {{Code|frame}} nie musi być tablica ramki tablicy transportu, równie dobrze może być to dowolna tablica lub wartość nietablicowa. Weźmy ramkę, w której uruchamiamy funkcję ramki: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}} </syntaxhighlight> === Przykłady wykorzystania funkcji === ; Przykład pierwszy{{dk}} Ona musi być wywołana z parametrem {{Parametr|wyspecjalizowana|tak}}, jako podpowiedź, że liczą się parametry ramki dziecka, a nie jego rodzica, czyli szablonu. Wtedy funkcję {{Code|Nazwa funkcji}} definiujemy: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame,true); ... end; </syntaxhighlight> Wtedy parametr {{Parametr|wyspecjalizowana|tak}} jest ignorowany, a przy wartości {{Code|false}} drugiego parametru funkcji, czyli wywołania: {{Code|local PobierzParametr{{=}}parametry_modul.PobierzParametr(frame,false);}}, już nie, ale nie zawsze. W takim przypadku według powyższego przykładu raz jest brana wartość, jeżeli istnieje, z {{Code|frame.args}}, a jak ona nie istnieje, to wtedy z: {{Code|pf.args}}. ; Przykład drugi{{dk}} Weźmy inny przypadek: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame,false,true); ... end; </syntaxhighlight> Przy tym też parametr: {{Parametr|wyspecjalizowana|tak}}, jest ignorowany, wtedy jest zawsze wybierana do rozważań tablica: {{Code|frame.args}}. ; Przykład trzeci{{dk}} Znów w innym przypadku, gdzie parametr: {{Parametr|wyspecjalizowana|tak}}, jest zawsze rozważany w naszym wypadku: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame,false,false); ... end; </syntaxhighlight> To to wywołanie, wtedy dokładnie działa jak funkcja: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, a zwrócona funkcja: {{Code|PobierzParametr}} pobiera elementy z tak uzyskanej tablicy {{Code|args}} poprzez nią. === Przypadek nietablicowego charakteru parametrów funkcji === W przypadku, gdy {{Code|frame}} nie jest tablicą, wtedy parametry: {{Code|czy_frame_lub_parent}} i {{Code|czy_frame}}, są w takim przypadku zawsze ignorowane, ale muszą być ustawione na wypadek, gdyby do funkcji {{Code|Nazwa funkcji}} wsadzono tablicę, np. z ramki, tzn. tablicę ramki funkcji tablicy transportu. === Ogólny przypadek, często stosowany === Najprostszym często ogólnym przykładem, który prawie zawsze jest stosowany: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame); ... end; </syntaxhighlight> Wtedy parametr: {{Parametr|wyspecjalizowana|tak}}, jest prawie zawsze nieignorowany, ale nie zawsze. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 94ko1nklpljvp98ys6nyqu7hwwcrvd4 555748 555747 2026-09-11T19:51:27Z Persino 2851 /* Omówienie pobierania takich parmetrów */ 555748 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} Są tutaj przedstawione funkcje parametrów. == {{Code|p.PobierzFrameEwentualnieParent}} == Argument tej funkcji {{Code|frame}} koniecznie musi być tablicą, w przypadku przeciwnym wywoła to błąd języka {{lpg|Lua}}, że z wartości nietabelowej chcemy wyliczyć jego nieistniejący element {{Code|getParent}}, który ma prawo nie być. Funkcja pobiera parametry ramki szablonu rodzica, a nie dziecka, a jeżeli w dziecku w ramce w wikikodzie w szablonie podamy specjalny parametr {{Parametr|wyspecjalizowana|tak}}, to wtedy ta funkcja ściąga parametry ramki. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobierzFrameEwentualnieParent(frame)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu. }} === Sterowanie funkcją === Tą funkcją można sterować ze strony ramki tym właśnie specjalnym parametrem o wartości niepustej, którą jest {{Parametr|wyspecjalizowana|tak}}. ==== Przykłady wykorzystania z parametrem sterującym ==== W ramce podajemy argumenty wraz z tym specjalnym parametrem: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}} </syntaxhighlight> To wtedy w kodzie w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} w module o nazwie {{Code|Nazwa modułu}}, piszemy: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzFrameEwentualnieParent(frame).args; .... end; </syntaxhighlight> To wtedy w kodzie ściągane parametry ramki dziecka. === Pobieranie oryginalnej tablicy === Tę funkcję można równie dobrze wykorzystać do zwykłych tabel: <syntaxhighlight lang="lua"> local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzFrameEwentualnieParent(tabela); </syntaxhighlight> === Możliwość tej samej funkcji uruchomioną w ramce lub z podaniem do niej pewnego zestawu parametrów w postaci tablicy === A w tym przypadku ta funkcja nic nie robi, tylko zmienna {{Code|args}} referencyjnie wskazuje na tablicę {{Code|tablica}}. Ale można ją wykorzystać, gdy by funkcja {{Code|Nazwa funkcji}}, była uruchomiona ze zwykłą tablicą, ale z możliwością, że to może być tablicą ramki {{Code|frame}} tablicy transportu, np.: <syntaxhighlight lang="lua"> --- Pierwsza możliwość; local wartosc1=p["Nazwa funkcji"](frame); -- Druga możliwość local wartosc2=p["Nazwa funkcji"]{["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; </syntaxhighlight> === Niedogodności stosowania z funkcji === Dla obu jest taka niedogodność, że jedynie jest taka nieprawidłowość, że w przypadku parametru tablicy ramki tablicy transportu należy podawać uzyskany element {{Code|args}}, a w przypadku zwykłej tablicy już nie, tą niedokodność rozwiązuje funkcja: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}. == {{Code|p.PobierzArgsParametry}} == Argument tej funkcji {{Code|frame}} koniecznie nie musi być tablicą, bo wtedy nie wywoła to błędu języka {{lpg|Lua}}, że z wartości nietabelowej chcemy wyliczyć jego niepusty element {{Code|getParent}}, bo przedtem sprawdzana jest w tej funkcji, czy jest to tablica. W definicji tej funkcji zmienna uzyskana z funkcji: {{Code|{{sr|#p.PobierzFrameEwentualnieParent(frame)|p=Parametry}}}}, a jeśli jej składowa {{Code|args}} jest tablicą, to jest właśnie ona zwracana, a jeśli istnieje, ale nie jest tablicą, lub ona nie istnieje, to wtedy brana jest właśnie wartość tablicowa {{Code|frame}}, jeśli jest ona taka, a gdy nie, to wtedy z tej funkcji tutaj nie korzystamy. Funkcja pobiera parametry ramki szablonu rodzica, a nie dziecka, a jeżeli w dziecku w ramce w wikikodzie w szablonie podamy specjalny parametr {{Parametr|wyspecjalizowana|tak}}, to wtedy ta funkcja ściąga parametry ramki. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobierzArgsParametry(frame, czy_nie_tablica_jako_tablica)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica transportu ramki. | 2 = {{Code|czy_nie_tablica_jako_tablica}} | _2 = Czy wartości nietablicowe umieszczać w jednoelemenowej tabeli. }} === Opis działania === Funkcja wykorzystuje wspomnianą powyżej funkcję do swojego działania, ona jest wtedy aktywowana, gdy zmienna {{Code|frame}} jest tablicą, i jest sprawdzane, czy ona posiada nazwany element o kluczu {{Code|args}}, i czy jest on tablicowy. Jeżeli wartością zmiennej {{Code|frame}} nie jest tablica, ale nie przybiera wartości {{Code|nil}}, to ona jest umieszczana w tablicy, jeżeli zmiennej {{Code|czy_nie_tablica_jako_tablica}} przydzielimy wartość {{Code|true}}, w przeciwnym wypadku zwracana jest ona w postaci niezmienionej, a jeżeli wartość tej zmiennej nie istnieje, to zwracana jest zwykła tablica pusta. Tą funkcją można sterować ze strony ramki tym właśnie specjalnym parametrem o wartości niepustej. === Przykład wywołania funkcji z funkcją parametrów === W ramce podajemy argumenty wraz z tym specjalnym parametrem: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}} </syntaxhighlight> ==== Użycie funkcji parametrów ==== To wtedy w kodzie w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} w module o nazwie {{Code|Nazwa modułu}}, piszemy: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(frame); .... end; </syntaxhighlight> To wtedy w kodzie ściągane parametry ramki dziecka. === Wykorzystanie fukcji w różnych sytuacjach === ; Przypadek pierwszy{{dk}} Tę funkcję można równie dobrze wykorzystać do zwykłych tabel: <syntaxhighlight lang="lua"> local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(tabela); </syntaxhighlight> ; Drugi przypadek{{dk}} A w tym przypadku ta funkcja nic nie robi, tylko zmienna {{Code|args}} referencyjnie wskazuje na tablicę {{Code|tablica}}. Ale można ją wykorzystać, gdyby funkcja {{Code|Nazwa funkcji}}, była uruchomiona ze zwykłą tablicą, ale z możliwością, że to może być tablicą ramki {{Code|frame}} tablicy transportu, np.: <syntaxhighlight lang="lua"> --- Pierwsza możliwość; local wartosc1=p["Nazwa funkcji"](frame); -- Druga możliwość local wartosc2=p["Nazwa funkcji"]{["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; </syntaxhighlight> === Usunięcie niedogodności === Dla obu tych przypadków nie ma żadnej niedogodności, jak to występowała w {{Code|{{sr|#p.PobierzFrameEwentualnieParent(frame)|p=Parametry}}}}. === Parametr funkcji nietablicowy === Jeśliby do funkcji tablicy transportu dać wartość równą nie tablicy, to wtedy równoważnie możemy napisać: <syntaxhighlight lang="lua"> local wartosc="wartość"; local wynik=p["Nazwa funkcji"](wartosc); </syntaxhighlight> to wtedy definicję tej funkcji piszemy: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(frame,true); local wartosc=args[1]; end; </syntaxhighlight> lub równoważnie możemy zapisać: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); local wartosc=parametry_modul.PobierzArgsParametry(frame); end; </syntaxhighlight> === Brak parametrów funkcji === A jeżeli nie wsadziliśmy żadnej wartości do funkcji ramki tablicy transportu lub tą wartością jest {{Code|nil}}, wtedy: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"](); </syntaxhighlight> wtedy definicja tej funkcji wygląda: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); -- Zmienna: args, wskazuje na wartość, którą jest tablicą pustą, tzn. w tej tablicy nie ma wcale elementów; local args=parametry_modul.PobierzArgsParametry(frame); end; </syntaxhighlight> === Zmienna {{Code|args}} - alternatywny przypadek dla wartości tablicowych niż te bez drugiego parametru === Widzimy, że wtedy zmienna {{Code|args}} jest normalną pustą tablicą, i nie musimy wtedy wcale pisać poniżej, bo wtedy wychodzi w tym przypadku na to samo: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(frame,true); </syntaxhighlight> === Różnica drugiego parametru w przypadku wartości nietablicowych === Argument drugi w {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, który w naszym przypadku musi mieć wartość {{Code|true}}, a wtedy jest jedynie sens, gdy {{Code|frame}} nie jest tablicą, i gdy chcemy tą wartość umieścić w tablicy, a nie powtórzyć wartość, tzn. chcemy napisać: {{Code|{{(}}frame,{{)}}}}, w przeciwnym wypadku musilibyśmy napisać coś w rodzaju, zamiast tak spreparowanej tablicy: {{Code|frame}}, czyli: <syntaxhighlight lang="lua"> -- Pierwszy przypadek, gdy frame jest wartością nietablicową; local parametry_modul=require("Module:Parametry"); ... -- Zwracana wartość: args, to nic innego niż: {frame,}; local args=parametry_modul.PobierzArgsParametry(frame,true); ... -- Zwracana wartość: args, to nic innego niż: frame, a nie {frame,}, jak poprzednio; local args=parametry_modul.PobierzArgsParametry(frame); </syntaxhighlight> == {{Code|p.PobierzParametryRamki}} == Funkcja służy do ustawienia pewnych domyślnych dwóch pewnych funkcji służących do pobieranie danych z tabelki z pierwszej tej funkcji: * Jeżeli ona posiada klucz o wartości {{Code|args}}, ** to zwracana jest ta właśnie tablica jako argument pierwszej tej funkcji, jeżeli jest w ogóle tablicą, ** w przeciwnym wypadku zwracana jest ta oryginalna tablica, też jako argument tej funkcji, * w przeciwnym dalszym wypadku zwracana jest zwracana wartość ta, jako argument tej drugiej funkcji, która zwraca prawdziwą wartość z argumentu tylko za pierwszym razem, z tej funkcji, za następnym i dalszym razem {{Code|nil}}. Z tak utworzonej ogólnie większej funkcji wykorzystywana jest w budowie omawianej funkcji, która jest zwracana przez omawianą funkcję, która względem jego budowy wywołuje raz pierwszą albo drugą poprzednią wspomnianą funkcję zależną od rodzaju zmiennej {{Code|frame}}, która może być tabelką, ale nie musi być. Ta funkcja zwracana przez funkcję w nagłówku przyjmuje argument, która jest kluczem do tych wspomnianych, może że, * tabel (dokładnie, która ta może tabelka to zależy od formatu tej naszej rozważanej zmiennej), * a jeżeli to nie tabelka, co jest zwracane, to już zostało powiedziane. Definicja skrótowa tej funkcji jest: <syntaxhighlight lang="lua"> function p.PobierzParametryRamki(frame)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu. }} Weźmy ramkę sformułowaną w wikikodzie jako dziecko w szablonie rodzicu: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5}} </syntaxhighlight> === Funkcje, z funkcją parametrów, z tablicą ramki lub one z podtablicą {{Code|args}} === To wtedy tablica ramki tablicy transportu posiada właśnie {{Code|frame}}, która jest tablicą, i na pewno posiada tablicę o nazwie {{Code|args}}, to wtedy tę funkcję wywołaną w ramce, która wywołuje funkcję w nagłówku, formułujemy: <syntaxhighlight lang="lua"> local p={}; local p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametryRamki=parametry_modul.PobierzParametryRamki(frame); ... end; </syntaxhighlight> ==== Przykład wywołania funkcji z funkcją parametrów z tablicą {{Code|args}} ==== Równie dobrze funkcję z ramki można wywołać w sposób, co wtedy ta funkcja też zostanie wywołana pozytywnie: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"]{args={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}}; </syntaxhighlight> W tej funkcji nie trzeba definiować funkcji fałszywej {{Code|getParent}}, w postaci: {{Code|getParent{{=}}function()end}}. Widzimi, że ta tablica posiada nazwę zmiennej tablicowej o nazwie {{Code|args}}, ale ona nie jest tablicą ramki tablicy transportu, ale tą tablicę możemy bezposrednio wsadzić w tą główną tablicę w samym argumencie funkcji. ==== Przykład wywołania z tablicą bez podtablicy {{Code|args}} ==== Równie dobrze możemy wywołać tę funkcję zdefiniowaną naszą w jakimś module w sposób: <syntaxhighlight lang="lua"> local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; local wynik=p["Nazwa funkcji"]{tabela); </syntaxhighlight> też ta funkcja prawidłowo się wywoła. W tym przypadku, jak i w przypadkach powyżej, wyniki uzyskuje się w następującym wywołaniach: <syntaxhighlight lang="lua"> --- Zmienna: wartosc1, przyjmuje wartość: "wartość1"; local wartosc1=PobierzParametryRamki("nazwa1"); --- Zmienna: wartosc2, przyjmuje wartość: "wartość2"; local wartosc2=PobierzParametryRamki("nazwa2"); --- Zmienna: wartosc3, przyjmuje wartość: "wartość3"; local wartosc3=PobierzParametryRamki(1); </syntaxhighlight> ==== Przykład wywołania funkcji z wartością nietablicową ==== W innym przypadku wywołań funkcji ramki jest wsadzenie do niej zwykłego nietablicowego elementu, może być też to wartość: {{Code|nil}}. A to wywołanie jest: <syntaxhighlight lang="lua"> local wartosc="wartość"; --Zmienna: wartosc, nie jest w tym przypadku tablicą; local wynik=p["Nazwa funkcji"](wartosc); </syntaxhighlight> === Wywołania funkcji parametrów bez argumentów - wiele kolejnych wywołań jednocześnie === Wtedy w tej ramce w celu uzyskania, jakikolwiek wartości jest przykład wywołania tej funkcji zwracanej przez funkcję w ramce z argumentem pustym. <syntaxhighlight lang="lua"> -- Zmienna: wartość1, przyjmuje wartość: "wartość"; Jeżeli ona, przyjmuje wartość: nil, to wywołanie rzuci: nil, i za każdym następny razem; local wartosc1=PobierzParametryRamki(); -- Zmienna: wartość2, przyjmuje wartość: nil; local wartosc2=PobierzParametryRamki(); </syntaxhighlight> W wywołaniach powinno dbać się o właściwą kolejność wywołań, bo argumentem funkcji z tablicy transportu może być zwykła tablicowa wartość. Najpierw uzyskujemy wartości nietablicowe, a później tablicowe, na wypadek niewiadomej {{Code|frame}} jakiego typu ma być wartość. === Dwa przypadki, parametr w tablicy, lub wartość nietablicowa funkcji === Też ta zmienna może istnieć pod kilkoma możliwymi kluczami, lub tą zmienną może być jedyny argument funkcji, która jest nietablicową wartością, wtedy ją się wywołuje jako dla przypadku, gdy parametr jest nietablicowy lub jest pod kluczem {{Code|tekst}}: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local tekst=parametry_modul.PobierzParametryRamki(frame)("tekst"); </syntaxhighlight> === Przypadek, gdy parametr funkcji nie jest tablicą === Lub chcemy tę funkcję wywołać bezparametrowo, gdy chcemy, by {{Code|frame}} nie była tablicą: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local tekst=parametry_modul.PobierzParametryRamki(frame)(); </syntaxhighlight> === Omówienie przypadku istnienia tego samego wariantu zmiennej raz podtablicą, a raz jako zmienna nietablicowa === * Wtedy ta zmienna w przedostatnim przykładzie jest pod wartością {{Code|tekst}}, gdy wartość {{Code|frame}} jest tablicą, * lub może być jedyną wartością, którą jest {{Code|frame}}, jako zmienna nietablicowa, wtedy ta zmienna też jest pod {{Code|tekst}}, ** ta funkcja uzyskana z: {{Code|{{sr|#p.PobierzParametryRamki(frame)|p=Parametry}}}}, wtedy może być wywołana tylko raz z nienilową wartością zwracaną, następnym razem zwraca wartość {{Code|nil}}, wtedy to dotyczy przedostatniego i ostatniego przykładu. === Jakma liczyć element funkcji w przypadku różnych jej parametrów === Jeżeli {{Code|frame}} jest nietablicowa, to wtedy wartość {{Code|tekst}} jest taka sama, co {{Code|frame}}. A jeżeli jest tablicą, to ta wartością jest {{Code|frame.args["tekst"]}}, lub gdy {{Code|args}} nie istnieje, lub istnieje, ale jest nietablicowa, to wtedy ta wartość jest {{Code|frame["tekst"]}}. === Parametry alternatywne funkcji - przykład wykorzystania funkcji parametrów === A gdy zmienne istnieją pod wieloma kluczami, lub gdy funkcję wywołano ze zmienną nietablicową, wtedy ogólnie możemy dla przykładu powiedzieć: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local PobierzParametryRamki=parametry_modul.PobierzParametryRamki(frame); local wartosc1=PobierzParametryRamki("nazwa1") or PobierzParametryRamki(1); local wartosc2=PobierzParametryRamki("nazwa2") or PobierzParametryRamki(2); local wartosc3=PobierzParametryRamki("nazwa3") or PobierzParametryRamki(3); </syntaxhighlight> * Wtedy ta zmienna jest pod kluczem, np.: {{Code|nazwa1}} lub {{Code|1}}, tablicy ramki {{Code|frame}} tablicy transportu, następne wywołania dla następnych kluczy też zrzucą pewne wartości, * lub jest ona zwykłą nietablicową wartością mogącą być równą, nawet {{Code|nil}}. ---- * Następne wywołania uzyskanej tak funkcji w przypadku, gdy {{Code|frame}} jest nietablicowy, rzucać będzie z samej definicji funkcji wartości {{Code|nil}}, czyli {{Code|wartosc2{{=}}wartosc3{{=}}nil}}, ale za to wartość {{Code|wartosc1}} nie musi być, ale może, wartością {{Code|nil}}, jeśli tą wartością jest, gdy {{Code|frame{{=}}nil}}, * w przeciwnym wypadku za pierwszym razem tej wartości nietablicowej uzyskamy wartość nie {{Code|nil}}, a za drugim i dalszym zawsze wartość {{Code|nil}}. == {{Code|p.PobierzElementNumerowanyZFrameLubTablicy}} == Definicja skrótowa funkcji jest z parametrem charakteryzującym pewien zestaw zmiennych {{Code|frame}}, * które nie musi być tablicą ramki tablicy transportu, tylko moze być innym parametrem, który jest tablicą parametrów podanych do funkcji, * nawet gdy parametrem podanym do funkcji, w której wykorzystujemy tą funkcję, jest jedyna zmienna będąca tablicą ramki. Ale z drugiej strony, tak nie musi być, może być to rozbudowany zestaw zmiennych, np. nazwanych i nienazwanych, którego wszystkie sposoby podawania łączymy jednym sposobem podawania. Mimo że parametry funkcji są parametrami nienazwanymi, mogą być one ponumerowane, ale zmienna w tablicy może przyjmować wartość tą samą na różne sposoby, raz w sposób nazwany, a za innym sposobem jako nienazwany. Ogólnie ostateczne parametry łączymy w dane parametry za pomocą jednego sposobu, tzn. za pomocą tej funkcji, i dla tak uzyskanej tablicy tworzymy funkcję zwracaną przez funkcję w nagłówku, która przyjmuje parametr, który jest kluczem tej uzyskanej tablicy. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobierzElementNumerowanyZFrameLubTablicy(frame)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu. }} Weźmy najprostszy sposób realizacji tej funkcji, w realizacji: {{Code|1-1, 2-2, 3-3}}, czyli ten opis jest zaraz poniżej. === Sposoby wywołania funkcji === ; Pierwszy sposób{{dk}} Weźmy funkcję, którą można wywoływać z wieloma parametrami, jak i w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, którą przykładowo piszemy jego wywołanie wewnątrz innej funkcji na pięć sposobów, czyli teraz pierwszy sposób z tylko z parametrem, więc tablicą ramki tablicy transportu wywodzącą się z ramki uruchomioną w wikikodzie w jakimś szablonie rodzicu: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"](frame); </syntaxhighlight> ; Drugi sposób{{dk}} A teraz drugi sposób, pisząc, bezpośrednio inaczej, formułując wywołanie tej funkcji, używając zmiennych tablicowych tablicy ramki, ale to nie jest tak naprawdę tablica ramka tablicy transportu, tylko parametr podany bezpośrednio do funkcji, tak jak się to robi w języku {{lpg|Lua}}, nie jak w przykładzie powyżej, więc: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"]{args={"wartość1","wartość2","wartość3",},}; </syntaxhighlight> ; Trzeci sposób{{dk}} Lub równoważnie, pisząc, nie używając zmiennej {{Code|args}}: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"]{"wartość1","wartość2","wartość3",}; </syntaxhighlight> ; Czwarty sposób{{dk}} Albo te parametry wsadzając do funkcji: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"]("wartość1","wartość2","wartość3"); </syntaxhighlight> ; Piąty spssób{{dk}} Można też wywołać to wszystko w ramce, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w wikikpdzie, wtedy wsadzając parametry do ramki: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|wartość1|wartość2|wartość3}} </syntaxhighlight> === Omówienie pobierania takich parmetrów === A jak połączyć wszystkie te pięć sposobów, posługiwać się tymi sposobami wewnątrz funkcji {{Code|Nazwa funkcji}} w sposób jednolity, jedynie wtedy należy skorzystać z funkcji z definiowaną w jakimś module w sposób: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(...) local tablica_prametrow_funkcji={...}; local parametry_modul=require("Module:Parametry"); local PobierzElementNumerowanyZFrameLubTablicy=parametry_modul.PobierzElementNumerowanyZFrameLubTablicy(tablica_prametrow_funkcji); ... end; </syntaxhighlight> Wtedy za pomocą zmiennej {{Code|PobierzElementNumerowanyZFrameLubTablicy}} dostaliśmy się do funkcji, która przyjmuje jedyny parametr, aby dostać się do elementów tablicy uzyskanej w wewnątrz tej funkcji, zdefiniowaną w tablicy {{Code|tablica_prametrow_funkcji}}, która jest nic innym jak zestawem parametrów w funkcji: {{Code|Nazwa funkcji}}. === Omówienie sposobów wykorzystywania, robienia tego samego, na różne warianty === * W pierwszym i drugim sposobem zmienną tą nazwijmy to jako {{Code|args}}, jest zmienną z podtablicy innego {{Code|args}} przekazanych jako parametr tablicy do funkcji, * w trzecim sposobie tą zmienną jest cała tablica, * a czwartym jest zestaw parametrów ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. A czym się różnią się te sposoby, a więc te sposoby można powiązać jedną tylko funkcją powiedzianą w nagłówku według przykładu podaną zaraz powyżej, wtedy możemy dostawać się do tych samych zmiennych o takich samych nazwach i wartościach, ale w różnych reprezentacjach na różne sposoby, wtedy można powiedzieć, że: <syntaxhighlight lang="lua"> args[1]="wartość1"; args[2]="wartość2"; args[3]="wartość3"; </syntaxhighlight> === Ogólny opis stosowania funkcji === Czyli w wyniku działania funkcji w nagłówku, otrzymamy funkcję zwracającą te wartości, która operuje na tej tablicy, której wynikiem jest zestaw zmiennych ponumerowanych, ogólnie nienazwanych, której wartości odpowiadają te podane w ramce ostatniej powyżej. Na podstawie tego wiemy, jak działa funkcja ta z nagłówka. === Nazwy alternatywne danych parametrów funkcji ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}} === Pisząc w inny sposób, można też wskazywać: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(...) local tablica_prametrow_funkcji={...}; local parametry_modul=require("Module:Parametry"); local PobierzElementNumerowanyZFrameLubTablicy=parametry_modul.PobierzElementNumerowanyZFrameLubTablicy(tablica_prametrow_funkcji); local wartosc1=PobierzElementNumerowanyZFrameLubTablicy("nazwa1") or PobierzElementNumerowanyZFrameLubTablicy(1); local wartosc2=PobierzElementNumerowanyZFrameLubTablicy("nazwa2") or PobierzElementNumerowanyZFrameLubTablicy(2); local wartosc3=PobierzElementNumerowanyZFrameLubTablicy("nazwa3") or PobierzElementNumerowanyZFrameLubTablicy(3); end; </syntaxhighlight> Zmienne w przykładzie o kluczach: {{Code|nazwa1}}, {{Code|nazwa2}} i {{Code|nazwa3}}, posiadające pewne swoje wartości, to są zmienne w tablicy {{Code|tablica_prametrow_funkcji}}, podane też jako zmienne, jako pewne argumenty tablicy, który są w tej funkcji zwracanej jako argument (parametr) funkcji, * jeżeli argumenty podano w postaci jednego parametru funkcji w postaci pewnej tablicy z np. elementami nazwanymi, * lub jako wiele argumentów w ramce, w wikikodzie, w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w pewnym szablonie, * a rozpatrując dalej elementy względem ich nazw, np. alternatywnych, to te numery mogą być kolejo do nazw ich odpowiedników nazwanych, które w przykładzie powyżej, mają pierwszeństwo, ale tak nie musi być, te parametry: {{Code|1}}, {{Code|2}} i {{Code|3}}, to jest numer parametru, jeżeli argumenty do funkcji podano w postaci wielu jego parametrów. == {{Code|p.PobierzParametr}} == Ta funkcja zwraca znów inną funkcję, która ma jedyny parametr, mówiący jakiego parametru poszukujemy, co jest wyjaśnione w definicji funkcji z nagłówka, że ona zwraca tą właśnie funkcje. Definicja skrótowa dunkcji: <syntaxhighlight lang="lua"> function p.PobierzParametr(frame,czy_frame_lub_parent,czy_frame) ... return function(nazwa) return __pobierz_parametr_table_args(nazwa); end; end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu. | 2 = {{Code|czy_frame_lub_parent}} i {{Code|czy_frame}} | _2 = Parametry logiczne dodatkowe funkcji. }} === Wartość zwracana i jego druga wartośc w postaci numeru metody === Funkcja zwraca jednocześnie dwie wartości, ta zwrócona z funkcji z nagłówka, prawdziwą wartość, i numer metody w postaci: {{Code|return wartosc, numer_metody}}. === Opis zwracanych elementów przez funkcję zwracaną - różne metody zwracania, jak je wykorzystać === Ta funkcja zwracana ma w swojej definicji inną jeszcze funkcję z tym samym parametrem, co jego rodzic, i to jest za każdym razem inna funkcja w zależności z jakim typem danych się posługujemy {{Code|frame}} i jakie podaliśmy parametry. Gdy warunkiem, gdy zmienna {{Code|frame}} jest tablicą, czyli te zmienne druga: {{Code|czy_frame_lub_parent}} (jeżeli funkcja jest uruchomiona w ramce w szablonie, jeżeli ma wartość {{Code|true}}, to ona wybiera raz parametr z: {{Code|frame.args[nazwa or 1]}}, a za innym razem z {{Code|pf.args[nazwa or 1]}}, gdzie {{Code|pf{{=}}frame:getParent()}}, tutaj jest zwracana wartość: {{Code|return wartosc,2}}). Czy trzecia: {{Code|czy_frame}} (która mówi, jeżeli funkcję uruchomiono w ramce, ale przy wartości prawdziwej tego pierwszego podanego parametru, czyli {{Code|true}}, wybierana jest zawsze wartość {{Code|frame.args[nazwa or 1}}}, w przeciwnym wypadku uruchamiana jest funkcja {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, tutaj zwracana jest wartość {{Code|return wartosc,1}}). Jeżeli wartością {{Code|frame}} jest wartość nietablicowa, ale niebędącą wartością {{Code|nil}}, wtedy ustawiana jest funkcja, która tylko za pierwszym razem zwraca nienilową wartość {{Code|return wartosc,0}}, a później zwraca wartość {{Code|return nil,0}}. Gdy wartością {{Code|frame}} jest {{Code|nil}}, to funkcja zawsze wraca tą wartość {{Code|return nil,0}}. Powyższy sposób działa również dobrze, gdy zdefiniujemy w parametrach funkcji fałszywą funkcję {{Code|frame.getParent}}. Gdy funkcja nie jest uruchamiana w ramce lub funkcja {{Code|frame.getParent}} nie jest zdefiniowana, to wtedy funkcja wchodzi zawsze w ten jej krok, jakby {{Code|czy_frame_lub_parent}} było {{Code|false}} według tego powyżej, to wtedy brana jest zmienna {{Code|czy_frame}}, i jaką wartość ona przyjmuje. === Nazwy alternatywne parametrów === Funkcję pisze się według sposobu, którą się wywołuje według: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame); local wartosc1=PobierzParametr("nazwa1") or PobierzParametr(1); local wartosc2=PobierzParametr("nazwa2") or PobierzParametr(2); local wartosc3=PobierzParametr("nazwa3") or PobierzParametr(3); </syntaxhighlight> Na wypadek wartości nietabelowej, tą wartość zapisuje się jako pierwszą w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a dla wartości tabelowych, jaka jest kolejność to jest obojętne, byle by to było sensowne. === Wywołania funkcji w ramce, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, z funkcją parametrów === Tę funkcję podobnie się wywołuje jak funkcję: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}. Wartością {{Code|frame}} nie musi być tablica ramki tablicy transportu, równie dobrze może być to dowolna tablica lub wartość nietablicowa. Weźmy ramkę, w której uruchamiamy funkcję ramki: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}} </syntaxhighlight> === Przykłady wykorzystania funkcji === ; Przykład pierwszy{{dk}} Ona musi być wywołana z parametrem {{Parametr|wyspecjalizowana|tak}}, jako podpowiedź, że liczą się parametry ramki dziecka, a nie jego rodzica, czyli szablonu. Wtedy funkcję {{Code|Nazwa funkcji}} definiujemy: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame,true); ... end; </syntaxhighlight> Wtedy parametr {{Parametr|wyspecjalizowana|tak}} jest ignorowany, a przy wartości {{Code|false}} drugiego parametru funkcji, czyli wywołania: {{Code|local PobierzParametr{{=}}parametry_modul.PobierzParametr(frame,false);}}, już nie, ale nie zawsze. W takim przypadku według powyższego przykładu raz jest brana wartość, jeżeli istnieje, z {{Code|frame.args}}, a jak ona nie istnieje, to wtedy z: {{Code|pf.args}}. ; Przykład drugi{{dk}} Weźmy inny przypadek: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame,false,true); ... end; </syntaxhighlight> Przy tym też parametr: {{Parametr|wyspecjalizowana|tak}}, jest ignorowany, wtedy jest zawsze wybierana do rozważań tablica: {{Code|frame.args}}. ; Przykład trzeci{{dk}} Znów w innym przypadku, gdzie parametr: {{Parametr|wyspecjalizowana|tak}}, jest zawsze rozważany w naszym wypadku: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame,false,false); ... end; </syntaxhighlight> To to wywołanie, wtedy dokładnie działa jak funkcja: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, a zwrócona funkcja: {{Code|PobierzParametr}} pobiera elementy z tak uzyskanej tablicy {{Code|args}} poprzez nią. === Przypadek nietablicowego charakteru parametrów funkcji === W przypadku, gdy {{Code|frame}} nie jest tablicą, wtedy parametry: {{Code|czy_frame_lub_parent}} i {{Code|czy_frame}}, są w takim przypadku zawsze ignorowane, ale muszą być ustawione na wypadek, gdyby do funkcji {{Code|Nazwa funkcji}} wsadzono tablicę, np. z ramki, tzn. tablicę ramki funkcji tablicy transportu. === Ogólny przypadek, często stosowany === Najprostszym często ogólnym przykładem, który prawie zawsze jest stosowany: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame); ... end; </syntaxhighlight> Wtedy parametr: {{Parametr|wyspecjalizowana|tak}}, jest prawie zawsze nieignorowany, ale nie zawsze. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> nciakgkdu4ym1wdo0kjw2qeja6x7a2z 555749 555748 2026-09-11T19:54:08Z Persino 2851 /* Nazwy alternatywne danych parametrów funkcji ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}} */ 555749 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} Są tutaj przedstawione funkcje parametrów. == {{Code|p.PobierzFrameEwentualnieParent}} == Argument tej funkcji {{Code|frame}} koniecznie musi być tablicą, w przypadku przeciwnym wywoła to błąd języka {{lpg|Lua}}, że z wartości nietabelowej chcemy wyliczyć jego nieistniejący element {{Code|getParent}}, który ma prawo nie być. Funkcja pobiera parametry ramki szablonu rodzica, a nie dziecka, a jeżeli w dziecku w ramce w wikikodzie w szablonie podamy specjalny parametr {{Parametr|wyspecjalizowana|tak}}, to wtedy ta funkcja ściąga parametry ramki. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobierzFrameEwentualnieParent(frame)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu. }} === Sterowanie funkcją === Tą funkcją można sterować ze strony ramki tym właśnie specjalnym parametrem o wartości niepustej, którą jest {{Parametr|wyspecjalizowana|tak}}. ==== Przykłady wykorzystania z parametrem sterującym ==== W ramce podajemy argumenty wraz z tym specjalnym parametrem: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}} </syntaxhighlight> To wtedy w kodzie w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} w module o nazwie {{Code|Nazwa modułu}}, piszemy: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzFrameEwentualnieParent(frame).args; .... end; </syntaxhighlight> To wtedy w kodzie ściągane parametry ramki dziecka. === Pobieranie oryginalnej tablicy === Tę funkcję można równie dobrze wykorzystać do zwykłych tabel: <syntaxhighlight lang="lua"> local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzFrameEwentualnieParent(tabela); </syntaxhighlight> === Możliwość tej samej funkcji uruchomioną w ramce lub z podaniem do niej pewnego zestawu parametrów w postaci tablicy === A w tym przypadku ta funkcja nic nie robi, tylko zmienna {{Code|args}} referencyjnie wskazuje na tablicę {{Code|tablica}}. Ale można ją wykorzystać, gdy by funkcja {{Code|Nazwa funkcji}}, była uruchomiona ze zwykłą tablicą, ale z możliwością, że to może być tablicą ramki {{Code|frame}} tablicy transportu, np.: <syntaxhighlight lang="lua"> --- Pierwsza możliwość; local wartosc1=p["Nazwa funkcji"](frame); -- Druga możliwość local wartosc2=p["Nazwa funkcji"]{["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; </syntaxhighlight> === Niedogodności stosowania z funkcji === Dla obu jest taka niedogodność, że jedynie jest taka nieprawidłowość, że w przypadku parametru tablicy ramki tablicy transportu należy podawać uzyskany element {{Code|args}}, a w przypadku zwykłej tablicy już nie, tą niedokodność rozwiązuje funkcja: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}. == {{Code|p.PobierzArgsParametry}} == Argument tej funkcji {{Code|frame}} koniecznie nie musi być tablicą, bo wtedy nie wywoła to błędu języka {{lpg|Lua}}, że z wartości nietabelowej chcemy wyliczyć jego niepusty element {{Code|getParent}}, bo przedtem sprawdzana jest w tej funkcji, czy jest to tablica. W definicji tej funkcji zmienna uzyskana z funkcji: {{Code|{{sr|#p.PobierzFrameEwentualnieParent(frame)|p=Parametry}}}}, a jeśli jej składowa {{Code|args}} jest tablicą, to jest właśnie ona zwracana, a jeśli istnieje, ale nie jest tablicą, lub ona nie istnieje, to wtedy brana jest właśnie wartość tablicowa {{Code|frame}}, jeśli jest ona taka, a gdy nie, to wtedy z tej funkcji tutaj nie korzystamy. Funkcja pobiera parametry ramki szablonu rodzica, a nie dziecka, a jeżeli w dziecku w ramce w wikikodzie w szablonie podamy specjalny parametr {{Parametr|wyspecjalizowana|tak}}, to wtedy ta funkcja ściąga parametry ramki. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobierzArgsParametry(frame, czy_nie_tablica_jako_tablica)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica transportu ramki. | 2 = {{Code|czy_nie_tablica_jako_tablica}} | _2 = Czy wartości nietablicowe umieszczać w jednoelemenowej tabeli. }} === Opis działania === Funkcja wykorzystuje wspomnianą powyżej funkcję do swojego działania, ona jest wtedy aktywowana, gdy zmienna {{Code|frame}} jest tablicą, i jest sprawdzane, czy ona posiada nazwany element o kluczu {{Code|args}}, i czy jest on tablicowy. Jeżeli wartością zmiennej {{Code|frame}} nie jest tablica, ale nie przybiera wartości {{Code|nil}}, to ona jest umieszczana w tablicy, jeżeli zmiennej {{Code|czy_nie_tablica_jako_tablica}} przydzielimy wartość {{Code|true}}, w przeciwnym wypadku zwracana jest ona w postaci niezmienionej, a jeżeli wartość tej zmiennej nie istnieje, to zwracana jest zwykła tablica pusta. Tą funkcją można sterować ze strony ramki tym właśnie specjalnym parametrem o wartości niepustej. === Przykład wywołania funkcji z funkcją parametrów === W ramce podajemy argumenty wraz z tym specjalnym parametrem: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}} </syntaxhighlight> ==== Użycie funkcji parametrów ==== To wtedy w kodzie w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} w module o nazwie {{Code|Nazwa modułu}}, piszemy: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(frame); .... end; </syntaxhighlight> To wtedy w kodzie ściągane parametry ramki dziecka. === Wykorzystanie fukcji w różnych sytuacjach === ; Przypadek pierwszy{{dk}} Tę funkcję można równie dobrze wykorzystać do zwykłych tabel: <syntaxhighlight lang="lua"> local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(tabela); </syntaxhighlight> ; Drugi przypadek{{dk}} A w tym przypadku ta funkcja nic nie robi, tylko zmienna {{Code|args}} referencyjnie wskazuje na tablicę {{Code|tablica}}. Ale można ją wykorzystać, gdyby funkcja {{Code|Nazwa funkcji}}, była uruchomiona ze zwykłą tablicą, ale z możliwością, że to może być tablicą ramki {{Code|frame}} tablicy transportu, np.: <syntaxhighlight lang="lua"> --- Pierwsza możliwość; local wartosc1=p["Nazwa funkcji"](frame); -- Druga możliwość local wartosc2=p["Nazwa funkcji"]{["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; </syntaxhighlight> === Usunięcie niedogodności === Dla obu tych przypadków nie ma żadnej niedogodności, jak to występowała w {{Code|{{sr|#p.PobierzFrameEwentualnieParent(frame)|p=Parametry}}}}. === Parametr funkcji nietablicowy === Jeśliby do funkcji tablicy transportu dać wartość równą nie tablicy, to wtedy równoważnie możemy napisać: <syntaxhighlight lang="lua"> local wartosc="wartość"; local wynik=p["Nazwa funkcji"](wartosc); </syntaxhighlight> to wtedy definicję tej funkcji piszemy: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(frame,true); local wartosc=args[1]; end; </syntaxhighlight> lub równoważnie możemy zapisać: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); local wartosc=parametry_modul.PobierzArgsParametry(frame); end; </syntaxhighlight> === Brak parametrów funkcji === A jeżeli nie wsadziliśmy żadnej wartości do funkcji ramki tablicy transportu lub tą wartością jest {{Code|nil}}, wtedy: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"](); </syntaxhighlight> wtedy definicja tej funkcji wygląda: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); -- Zmienna: args, wskazuje na wartość, którą jest tablicą pustą, tzn. w tej tablicy nie ma wcale elementów; local args=parametry_modul.PobierzArgsParametry(frame); end; </syntaxhighlight> === Zmienna {{Code|args}} - alternatywny przypadek dla wartości tablicowych niż te bez drugiego parametru === Widzimy, że wtedy zmienna {{Code|args}} jest normalną pustą tablicą, i nie musimy wtedy wcale pisać poniżej, bo wtedy wychodzi w tym przypadku na to samo: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(frame,true); </syntaxhighlight> === Różnica drugiego parametru w przypadku wartości nietablicowych === Argument drugi w {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, który w naszym przypadku musi mieć wartość {{Code|true}}, a wtedy jest jedynie sens, gdy {{Code|frame}} nie jest tablicą, i gdy chcemy tą wartość umieścić w tablicy, a nie powtórzyć wartość, tzn. chcemy napisać: {{Code|{{(}}frame,{{)}}}}, w przeciwnym wypadku musilibyśmy napisać coś w rodzaju, zamiast tak spreparowanej tablicy: {{Code|frame}}, czyli: <syntaxhighlight lang="lua"> -- Pierwszy przypadek, gdy frame jest wartością nietablicową; local parametry_modul=require("Module:Parametry"); ... -- Zwracana wartość: args, to nic innego niż: {frame,}; local args=parametry_modul.PobierzArgsParametry(frame,true); ... -- Zwracana wartość: args, to nic innego niż: frame, a nie {frame,}, jak poprzednio; local args=parametry_modul.PobierzArgsParametry(frame); </syntaxhighlight> == {{Code|p.PobierzParametryRamki}} == Funkcja służy do ustawienia pewnych domyślnych dwóch pewnych funkcji służących do pobieranie danych z tabelki z pierwszej tej funkcji: * Jeżeli ona posiada klucz o wartości {{Code|args}}, ** to zwracana jest ta właśnie tablica jako argument pierwszej tej funkcji, jeżeli jest w ogóle tablicą, ** w przeciwnym wypadku zwracana jest ta oryginalna tablica, też jako argument tej funkcji, * w przeciwnym dalszym wypadku zwracana jest zwracana wartość ta, jako argument tej drugiej funkcji, która zwraca prawdziwą wartość z argumentu tylko za pierwszym razem, z tej funkcji, za następnym i dalszym razem {{Code|nil}}. Z tak utworzonej ogólnie większej funkcji wykorzystywana jest w budowie omawianej funkcji, która jest zwracana przez omawianą funkcję, która względem jego budowy wywołuje raz pierwszą albo drugą poprzednią wspomnianą funkcję zależną od rodzaju zmiennej {{Code|frame}}, która może być tabelką, ale nie musi być. Ta funkcja zwracana przez funkcję w nagłówku przyjmuje argument, która jest kluczem do tych wspomnianych, może że, * tabel (dokładnie, która ta może tabelka to zależy od formatu tej naszej rozważanej zmiennej), * a jeżeli to nie tabelka, co jest zwracane, to już zostało powiedziane. Definicja skrótowa tej funkcji jest: <syntaxhighlight lang="lua"> function p.PobierzParametryRamki(frame)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu. }} Weźmy ramkę sformułowaną w wikikodzie jako dziecko w szablonie rodzicu: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5}} </syntaxhighlight> === Funkcje, z funkcją parametrów, z tablicą ramki lub one z podtablicą {{Code|args}} === To wtedy tablica ramki tablicy transportu posiada właśnie {{Code|frame}}, która jest tablicą, i na pewno posiada tablicę o nazwie {{Code|args}}, to wtedy tę funkcję wywołaną w ramce, która wywołuje funkcję w nagłówku, formułujemy: <syntaxhighlight lang="lua"> local p={}; local p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametryRamki=parametry_modul.PobierzParametryRamki(frame); ... end; </syntaxhighlight> ==== Przykład wywołania funkcji z funkcją parametrów z tablicą {{Code|args}} ==== Równie dobrze funkcję z ramki można wywołać w sposób, co wtedy ta funkcja też zostanie wywołana pozytywnie: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"]{args={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}}; </syntaxhighlight> W tej funkcji nie trzeba definiować funkcji fałszywej {{Code|getParent}}, w postaci: {{Code|getParent{{=}}function()end}}. Widzimi, że ta tablica posiada nazwę zmiennej tablicowej o nazwie {{Code|args}}, ale ona nie jest tablicą ramki tablicy transportu, ale tą tablicę możemy bezposrednio wsadzić w tą główną tablicę w samym argumencie funkcji. ==== Przykład wywołania z tablicą bez podtablicy {{Code|args}} ==== Równie dobrze możemy wywołać tę funkcję zdefiniowaną naszą w jakimś module w sposób: <syntaxhighlight lang="lua"> local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; local wynik=p["Nazwa funkcji"]{tabela); </syntaxhighlight> też ta funkcja prawidłowo się wywoła. W tym przypadku, jak i w przypadkach powyżej, wyniki uzyskuje się w następującym wywołaniach: <syntaxhighlight lang="lua"> --- Zmienna: wartosc1, przyjmuje wartość: "wartość1"; local wartosc1=PobierzParametryRamki("nazwa1"); --- Zmienna: wartosc2, przyjmuje wartość: "wartość2"; local wartosc2=PobierzParametryRamki("nazwa2"); --- Zmienna: wartosc3, przyjmuje wartość: "wartość3"; local wartosc3=PobierzParametryRamki(1); </syntaxhighlight> ==== Przykład wywołania funkcji z wartością nietablicową ==== W innym przypadku wywołań funkcji ramki jest wsadzenie do niej zwykłego nietablicowego elementu, może być też to wartość: {{Code|nil}}. A to wywołanie jest: <syntaxhighlight lang="lua"> local wartosc="wartość"; --Zmienna: wartosc, nie jest w tym przypadku tablicą; local wynik=p["Nazwa funkcji"](wartosc); </syntaxhighlight> === Wywołania funkcji parametrów bez argumentów - wiele kolejnych wywołań jednocześnie === Wtedy w tej ramce w celu uzyskania, jakikolwiek wartości jest przykład wywołania tej funkcji zwracanej przez funkcję w ramce z argumentem pustym. <syntaxhighlight lang="lua"> -- Zmienna: wartość1, przyjmuje wartość: "wartość"; Jeżeli ona, przyjmuje wartość: nil, to wywołanie rzuci: nil, i za każdym następny razem; local wartosc1=PobierzParametryRamki(); -- Zmienna: wartość2, przyjmuje wartość: nil; local wartosc2=PobierzParametryRamki(); </syntaxhighlight> W wywołaniach powinno dbać się o właściwą kolejność wywołań, bo argumentem funkcji z tablicy transportu może być zwykła tablicowa wartość. Najpierw uzyskujemy wartości nietablicowe, a później tablicowe, na wypadek niewiadomej {{Code|frame}} jakiego typu ma być wartość. === Dwa przypadki, parametr w tablicy, lub wartość nietablicowa funkcji === Też ta zmienna może istnieć pod kilkoma możliwymi kluczami, lub tą zmienną może być jedyny argument funkcji, która jest nietablicową wartością, wtedy ją się wywołuje jako dla przypadku, gdy parametr jest nietablicowy lub jest pod kluczem {{Code|tekst}}: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local tekst=parametry_modul.PobierzParametryRamki(frame)("tekst"); </syntaxhighlight> === Przypadek, gdy parametr funkcji nie jest tablicą === Lub chcemy tę funkcję wywołać bezparametrowo, gdy chcemy, by {{Code|frame}} nie była tablicą: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local tekst=parametry_modul.PobierzParametryRamki(frame)(); </syntaxhighlight> === Omówienie przypadku istnienia tego samego wariantu zmiennej raz podtablicą, a raz jako zmienna nietablicowa === * Wtedy ta zmienna w przedostatnim przykładzie jest pod wartością {{Code|tekst}}, gdy wartość {{Code|frame}} jest tablicą, * lub może być jedyną wartością, którą jest {{Code|frame}}, jako zmienna nietablicowa, wtedy ta zmienna też jest pod {{Code|tekst}}, ** ta funkcja uzyskana z: {{Code|{{sr|#p.PobierzParametryRamki(frame)|p=Parametry}}}}, wtedy może być wywołana tylko raz z nienilową wartością zwracaną, następnym razem zwraca wartość {{Code|nil}}, wtedy to dotyczy przedostatniego i ostatniego przykładu. === Jakma liczyć element funkcji w przypadku różnych jej parametrów === Jeżeli {{Code|frame}} jest nietablicowa, to wtedy wartość {{Code|tekst}} jest taka sama, co {{Code|frame}}. A jeżeli jest tablicą, to ta wartością jest {{Code|frame.args["tekst"]}}, lub gdy {{Code|args}} nie istnieje, lub istnieje, ale jest nietablicowa, to wtedy ta wartość jest {{Code|frame["tekst"]}}. === Parametry alternatywne funkcji - przykład wykorzystania funkcji parametrów === A gdy zmienne istnieją pod wieloma kluczami, lub gdy funkcję wywołano ze zmienną nietablicową, wtedy ogólnie możemy dla przykładu powiedzieć: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local PobierzParametryRamki=parametry_modul.PobierzParametryRamki(frame); local wartosc1=PobierzParametryRamki("nazwa1") or PobierzParametryRamki(1); local wartosc2=PobierzParametryRamki("nazwa2") or PobierzParametryRamki(2); local wartosc3=PobierzParametryRamki("nazwa3") or PobierzParametryRamki(3); </syntaxhighlight> * Wtedy ta zmienna jest pod kluczem, np.: {{Code|nazwa1}} lub {{Code|1}}, tablicy ramki {{Code|frame}} tablicy transportu, następne wywołania dla następnych kluczy też zrzucą pewne wartości, * lub jest ona zwykłą nietablicową wartością mogącą być równą, nawet {{Code|nil}}. ---- * Następne wywołania uzyskanej tak funkcji w przypadku, gdy {{Code|frame}} jest nietablicowy, rzucać będzie z samej definicji funkcji wartości {{Code|nil}}, czyli {{Code|wartosc2{{=}}wartosc3{{=}}nil}}, ale za to wartość {{Code|wartosc1}} nie musi być, ale może, wartością {{Code|nil}}, jeśli tą wartością jest, gdy {{Code|frame{{=}}nil}}, * w przeciwnym wypadku za pierwszym razem tej wartości nietablicowej uzyskamy wartość nie {{Code|nil}}, a za drugim i dalszym zawsze wartość {{Code|nil}}. == {{Code|p.PobierzElementNumerowanyZFrameLubTablicy}} == Definicja skrótowa funkcji jest z parametrem charakteryzującym pewien zestaw zmiennych {{Code|frame}}, * które nie musi być tablicą ramki tablicy transportu, tylko moze być innym parametrem, który jest tablicą parametrów podanych do funkcji, * nawet gdy parametrem podanym do funkcji, w której wykorzystujemy tą funkcję, jest jedyna zmienna będąca tablicą ramki. Ale z drugiej strony, tak nie musi być, może być to rozbudowany zestaw zmiennych, np. nazwanych i nienazwanych, którego wszystkie sposoby podawania łączymy jednym sposobem podawania. Mimo że parametry funkcji są parametrami nienazwanymi, mogą być one ponumerowane, ale zmienna w tablicy może przyjmować wartość tą samą na różne sposoby, raz w sposób nazwany, a za innym sposobem jako nienazwany. Ogólnie ostateczne parametry łączymy w dane parametry za pomocą jednego sposobu, tzn. za pomocą tej funkcji, i dla tak uzyskanej tablicy tworzymy funkcję zwracaną przez funkcję w nagłówku, która przyjmuje parametr, który jest kluczem tej uzyskanej tablicy. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobierzElementNumerowanyZFrameLubTablicy(frame)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu. }} Weźmy najprostszy sposób realizacji tej funkcji, w realizacji: {{Code|1-1, 2-2, 3-3}}, czyli ten opis jest zaraz poniżej. === Sposoby wywołania funkcji === ; Pierwszy sposób{{dk}} Weźmy funkcję, którą można wywoływać z wieloma parametrami, jak i w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, którą przykładowo piszemy jego wywołanie wewnątrz innej funkcji na pięć sposobów, czyli teraz pierwszy sposób z tylko z parametrem, więc tablicą ramki tablicy transportu wywodzącą się z ramki uruchomioną w wikikodzie w jakimś szablonie rodzicu: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"](frame); </syntaxhighlight> ; Drugi sposób{{dk}} A teraz drugi sposób, pisząc, bezpośrednio inaczej, formułując wywołanie tej funkcji, używając zmiennych tablicowych tablicy ramki, ale to nie jest tak naprawdę tablica ramka tablicy transportu, tylko parametr podany bezpośrednio do funkcji, tak jak się to robi w języku {{lpg|Lua}}, nie jak w przykładzie powyżej, więc: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"]{args={"wartość1","wartość2","wartość3",},}; </syntaxhighlight> ; Trzeci sposób{{dk}} Lub równoważnie, pisząc, nie używając zmiennej {{Code|args}}: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"]{"wartość1","wartość2","wartość3",}; </syntaxhighlight> ; Czwarty sposób{{dk}} Albo te parametry wsadzając do funkcji: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"]("wartość1","wartość2","wartość3"); </syntaxhighlight> ; Piąty spssób{{dk}} Można też wywołać to wszystko w ramce, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w wikikpdzie, wtedy wsadzając parametry do ramki: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|wartość1|wartość2|wartość3}} </syntaxhighlight> === Omówienie pobierania takich parmetrów === A jak połączyć wszystkie te pięć sposobów, posługiwać się tymi sposobami wewnątrz funkcji {{Code|Nazwa funkcji}} w sposób jednolity, jedynie wtedy należy skorzystać z funkcji z definiowaną w jakimś module w sposób: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(...) local tablica_prametrow_funkcji={...}; local parametry_modul=require("Module:Parametry"); local PobierzElementNumerowanyZFrameLubTablicy=parametry_modul.PobierzElementNumerowanyZFrameLubTablicy(tablica_prametrow_funkcji); ... end; </syntaxhighlight> Wtedy za pomocą zmiennej {{Code|PobierzElementNumerowanyZFrameLubTablicy}} dostaliśmy się do funkcji, która przyjmuje jedyny parametr, aby dostać się do elementów tablicy uzyskanej w wewnątrz tej funkcji, zdefiniowaną w tablicy {{Code|tablica_prametrow_funkcji}}, która jest nic innym jak zestawem parametrów w funkcji: {{Code|Nazwa funkcji}}. === Omówienie sposobów wykorzystywania, robienia tego samego, na różne warianty === * W pierwszym i drugim sposobem zmienną tą nazwijmy to jako {{Code|args}}, jest zmienną z podtablicy innego {{Code|args}} przekazanych jako parametr tablicy do funkcji, * w trzecim sposobie tą zmienną jest cała tablica, * a czwartym jest zestaw parametrów ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. A czym się różnią się te sposoby, a więc te sposoby można powiązać jedną tylko funkcją powiedzianą w nagłówku według przykładu podaną zaraz powyżej, wtedy możemy dostawać się do tych samych zmiennych o takich samych nazwach i wartościach, ale w różnych reprezentacjach na różne sposoby, wtedy można powiedzieć, że: <syntaxhighlight lang="lua"> args[1]="wartość1"; args[2]="wartość2"; args[3]="wartość3"; </syntaxhighlight> === Ogólny opis stosowania funkcji === Czyli w wyniku działania funkcji w nagłówku, otrzymamy funkcję zwracającą te wartości, która operuje na tej tablicy, której wynikiem jest zestaw zmiennych ponumerowanych, ogólnie nienazwanych, której wartości odpowiadają te podane w ramce ostatniej powyżej. Na podstawie tego wiemy, jak działa funkcja ta z nagłówka. === Nazwy alternatywne danych parametrów funkcji ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}} === Pisząc w inny sposób, można też wskazywać: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(...) local tablica_prametrow_funkcji={...}; local parametry_modul=require("Module:Parametry"); local PobierzElementNumerowanyZFrameLubTablicy=parametry_modul.PobierzElementNumerowanyZFrameLubTablicy(tablica_prametrow_funkcji); local wartosc1=PobierzElementNumerowanyZFrameLubTablicy("nazwa1") or PobierzElementNumerowanyZFrameLubTablicy(1); local wartosc2=PobierzElementNumerowanyZFrameLubTablicy("nazwa2") or PobierzElementNumerowanyZFrameLubTablicy(2); local wartosc3=PobierzElementNumerowanyZFrameLubTablicy("nazwa3") or PobierzElementNumerowanyZFrameLubTablicy(3); end; </syntaxhighlight> Zmienne w przykładzie o kluczach: {{Code|nazwa1}}, {{Code|nazwa2}} i {{Code|nazwa3}}, posiadające pewne swoje wartości, to są zmienne w tablicy {{Code|tablica_prametrow_funkcji}}, podane też jako zmienne, jako pewne argumenty tablicy, który są w tej funkcji zwracanej jako argument (parametr) funkcji: * jeżeli argumenty podano w postaci jednego parametru funkcji w postaci pewnej tablicy z np. elementami nazwanymi, * lub jako wiele argumentów w ramce, w wikikodzie, w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w pewnym szablonie, * a rozpatrując dalej elementy względem ich nazw, np. alternatywnych, to te numery mogą być kolejo do nazw ich odpowiedników nazwanych, które w przykładzie powyżej, mają pierwszeństwo, ale tak nie musi być, te parametry: {{Code|1}}, {{Code|2}} i {{Code|3}}, to jest numer parametru. To stosujemy, jeżeli argumenty do funkcji podano w postaci wielu jego parametrów. == {{Code|p.PobierzParametr}} == Ta funkcja zwraca znów inną funkcję, która ma jedyny parametr, mówiący jakiego parametru poszukujemy, co jest wyjaśnione w definicji funkcji z nagłówka, że ona zwraca tą właśnie funkcje. Definicja skrótowa dunkcji: <syntaxhighlight lang="lua"> function p.PobierzParametr(frame,czy_frame_lub_parent,czy_frame) ... return function(nazwa) return __pobierz_parametr_table_args(nazwa); end; end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu. | 2 = {{Code|czy_frame_lub_parent}} i {{Code|czy_frame}} | _2 = Parametry logiczne dodatkowe funkcji. }} === Wartość zwracana i jego druga wartośc w postaci numeru metody === Funkcja zwraca jednocześnie dwie wartości, ta zwrócona z funkcji z nagłówka, prawdziwą wartość, i numer metody w postaci: {{Code|return wartosc, numer_metody}}. === Opis zwracanych elementów przez funkcję zwracaną - różne metody zwracania, jak je wykorzystać === Ta funkcja zwracana ma w swojej definicji inną jeszcze funkcję z tym samym parametrem, co jego rodzic, i to jest za każdym razem inna funkcja w zależności z jakim typem danych się posługujemy {{Code|frame}} i jakie podaliśmy parametry. Gdy warunkiem, gdy zmienna {{Code|frame}} jest tablicą, czyli te zmienne druga: {{Code|czy_frame_lub_parent}} (jeżeli funkcja jest uruchomiona w ramce w szablonie, jeżeli ma wartość {{Code|true}}, to ona wybiera raz parametr z: {{Code|frame.args[nazwa or 1]}}, a za innym razem z {{Code|pf.args[nazwa or 1]}}, gdzie {{Code|pf{{=}}frame:getParent()}}, tutaj jest zwracana wartość: {{Code|return wartosc,2}}). Czy trzecia: {{Code|czy_frame}} (która mówi, jeżeli funkcję uruchomiono w ramce, ale przy wartości prawdziwej tego pierwszego podanego parametru, czyli {{Code|true}}, wybierana jest zawsze wartość {{Code|frame.args[nazwa or 1}}}, w przeciwnym wypadku uruchamiana jest funkcja {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, tutaj zwracana jest wartość {{Code|return wartosc,1}}). Jeżeli wartością {{Code|frame}} jest wartość nietablicowa, ale niebędącą wartością {{Code|nil}}, wtedy ustawiana jest funkcja, która tylko za pierwszym razem zwraca nienilową wartość {{Code|return wartosc,0}}, a później zwraca wartość {{Code|return nil,0}}. Gdy wartością {{Code|frame}} jest {{Code|nil}}, to funkcja zawsze wraca tą wartość {{Code|return nil,0}}. Powyższy sposób działa również dobrze, gdy zdefiniujemy w parametrach funkcji fałszywą funkcję {{Code|frame.getParent}}. Gdy funkcja nie jest uruchamiana w ramce lub funkcja {{Code|frame.getParent}} nie jest zdefiniowana, to wtedy funkcja wchodzi zawsze w ten jej krok, jakby {{Code|czy_frame_lub_parent}} było {{Code|false}} według tego powyżej, to wtedy brana jest zmienna {{Code|czy_frame}}, i jaką wartość ona przyjmuje. === Nazwy alternatywne parametrów === Funkcję pisze się według sposobu, którą się wywołuje według: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame); local wartosc1=PobierzParametr("nazwa1") or PobierzParametr(1); local wartosc2=PobierzParametr("nazwa2") or PobierzParametr(2); local wartosc3=PobierzParametr("nazwa3") or PobierzParametr(3); </syntaxhighlight> Na wypadek wartości nietabelowej, tą wartość zapisuje się jako pierwszą w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a dla wartości tabelowych, jaka jest kolejność to jest obojętne, byle by to było sensowne. === Wywołania funkcji w ramce, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, z funkcją parametrów === Tę funkcję podobnie się wywołuje jak funkcję: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}. Wartością {{Code|frame}} nie musi być tablica ramki tablicy transportu, równie dobrze może być to dowolna tablica lub wartość nietablicowa. Weźmy ramkę, w której uruchamiamy funkcję ramki: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}} </syntaxhighlight> === Przykłady wykorzystania funkcji === ; Przykład pierwszy{{dk}} Ona musi być wywołana z parametrem {{Parametr|wyspecjalizowana|tak}}, jako podpowiedź, że liczą się parametry ramki dziecka, a nie jego rodzica, czyli szablonu. Wtedy funkcję {{Code|Nazwa funkcji}} definiujemy: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame,true); ... end; </syntaxhighlight> Wtedy parametr {{Parametr|wyspecjalizowana|tak}} jest ignorowany, a przy wartości {{Code|false}} drugiego parametru funkcji, czyli wywołania: {{Code|local PobierzParametr{{=}}parametry_modul.PobierzParametr(frame,false);}}, już nie, ale nie zawsze. W takim przypadku według powyższego przykładu raz jest brana wartość, jeżeli istnieje, z {{Code|frame.args}}, a jak ona nie istnieje, to wtedy z: {{Code|pf.args}}. ; Przykład drugi{{dk}} Weźmy inny przypadek: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame,false,true); ... end; </syntaxhighlight> Przy tym też parametr: {{Parametr|wyspecjalizowana|tak}}, jest ignorowany, wtedy jest zawsze wybierana do rozważań tablica: {{Code|frame.args}}. ; Przykład trzeci{{dk}} Znów w innym przypadku, gdzie parametr: {{Parametr|wyspecjalizowana|tak}}, jest zawsze rozważany w naszym wypadku: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame,false,false); ... end; </syntaxhighlight> To to wywołanie, wtedy dokładnie działa jak funkcja: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, a zwrócona funkcja: {{Code|PobierzParametr}} pobiera elementy z tak uzyskanej tablicy {{Code|args}} poprzez nią. === Przypadek nietablicowego charakteru parametrów funkcji === W przypadku, gdy {{Code|frame}} nie jest tablicą, wtedy parametry: {{Code|czy_frame_lub_parent}} i {{Code|czy_frame}}, są w takim przypadku zawsze ignorowane, ale muszą być ustawione na wypadek, gdyby do funkcji {{Code|Nazwa funkcji}} wsadzono tablicę, np. z ramki, tzn. tablicę ramki funkcji tablicy transportu. === Ogólny przypadek, często stosowany === Najprostszym często ogólnym przykładem, który prawie zawsze jest stosowany: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame); ... end; </syntaxhighlight> Wtedy parametr: {{Parametr|wyspecjalizowana|tak}}, jest prawie zawsze nieignorowany, ale nie zawsze. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> cjdbzhjgdhea6m8jbpfhowp66x55zfh 555750 555749 2026-09-11T19:58:50Z Persino 2851 /* Zmienna {{Code|args}} - alternatywny przypadek dla wartości tablicowych niż te bez drugiego parametru */ 555750 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} Są tutaj przedstawione funkcje parametrów. == {{Code|p.PobierzFrameEwentualnieParent}} == Argument tej funkcji {{Code|frame}} koniecznie musi być tablicą, w przypadku przeciwnym wywoła to błąd języka {{lpg|Lua}}, że z wartości nietabelowej chcemy wyliczyć jego nieistniejący element {{Code|getParent}}, który ma prawo nie być. Funkcja pobiera parametry ramki szablonu rodzica, a nie dziecka, a jeżeli w dziecku w ramce w wikikodzie w szablonie podamy specjalny parametr {{Parametr|wyspecjalizowana|tak}}, to wtedy ta funkcja ściąga parametry ramki. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobierzFrameEwentualnieParent(frame)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu. }} === Sterowanie funkcją === Tą funkcją można sterować ze strony ramki tym właśnie specjalnym parametrem o wartości niepustej, którą jest {{Parametr|wyspecjalizowana|tak}}. ==== Przykłady wykorzystania z parametrem sterującym ==== W ramce podajemy argumenty wraz z tym specjalnym parametrem: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}} </syntaxhighlight> To wtedy w kodzie w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} w module o nazwie {{Code|Nazwa modułu}}, piszemy: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzFrameEwentualnieParent(frame).args; .... end; </syntaxhighlight> To wtedy w kodzie ściągane parametry ramki dziecka. === Pobieranie oryginalnej tablicy === Tę funkcję można równie dobrze wykorzystać do zwykłych tabel: <syntaxhighlight lang="lua"> local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzFrameEwentualnieParent(tabela); </syntaxhighlight> === Możliwość tej samej funkcji uruchomioną w ramce lub z podaniem do niej pewnego zestawu parametrów w postaci tablicy === A w tym przypadku ta funkcja nic nie robi, tylko zmienna {{Code|args}} referencyjnie wskazuje na tablicę {{Code|tablica}}. Ale można ją wykorzystać, gdy by funkcja {{Code|Nazwa funkcji}}, była uruchomiona ze zwykłą tablicą, ale z możliwością, że to może być tablicą ramki {{Code|frame}} tablicy transportu, np.: <syntaxhighlight lang="lua"> --- Pierwsza możliwość; local wartosc1=p["Nazwa funkcji"](frame); -- Druga możliwość local wartosc2=p["Nazwa funkcji"]{["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; </syntaxhighlight> === Niedogodności stosowania z funkcji === Dla obu jest taka niedogodność, że jedynie jest taka nieprawidłowość, że w przypadku parametru tablicy ramki tablicy transportu należy podawać uzyskany element {{Code|args}}, a w przypadku zwykłej tablicy już nie, tą niedokodność rozwiązuje funkcja: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}. == {{Code|p.PobierzArgsParametry}} == Argument tej funkcji {{Code|frame}} koniecznie nie musi być tablicą, bo wtedy nie wywoła to błędu języka {{lpg|Lua}}, że z wartości nietabelowej chcemy wyliczyć jego niepusty element {{Code|getParent}}, bo przedtem sprawdzana jest w tej funkcji, czy jest to tablica. W definicji tej funkcji zmienna uzyskana z funkcji: {{Code|{{sr|#p.PobierzFrameEwentualnieParent(frame)|p=Parametry}}}}, a jeśli jej składowa {{Code|args}} jest tablicą, to jest właśnie ona zwracana, a jeśli istnieje, ale nie jest tablicą, lub ona nie istnieje, to wtedy brana jest właśnie wartość tablicowa {{Code|frame}}, jeśli jest ona taka, a gdy nie, to wtedy z tej funkcji tutaj nie korzystamy. Funkcja pobiera parametry ramki szablonu rodzica, a nie dziecka, a jeżeli w dziecku w ramce w wikikodzie w szablonie podamy specjalny parametr {{Parametr|wyspecjalizowana|tak}}, to wtedy ta funkcja ściąga parametry ramki. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobierzArgsParametry(frame, czy_nie_tablica_jako_tablica)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica transportu ramki. | 2 = {{Code|czy_nie_tablica_jako_tablica}} | _2 = Czy wartości nietablicowe umieszczać w jednoelemenowej tabeli. }} === Opis działania === Funkcja wykorzystuje wspomnianą powyżej funkcję do swojego działania, ona jest wtedy aktywowana, gdy zmienna {{Code|frame}} jest tablicą, i jest sprawdzane, czy ona posiada nazwany element o kluczu {{Code|args}}, i czy jest on tablicowy. Jeżeli wartością zmiennej {{Code|frame}} nie jest tablica, ale nie przybiera wartości {{Code|nil}}, to ona jest umieszczana w tablicy, jeżeli zmiennej {{Code|czy_nie_tablica_jako_tablica}} przydzielimy wartość {{Code|true}}, w przeciwnym wypadku zwracana jest ona w postaci niezmienionej, a jeżeli wartość tej zmiennej nie istnieje, to zwracana jest zwykła tablica pusta. Tą funkcją można sterować ze strony ramki tym właśnie specjalnym parametrem o wartości niepustej. === Przykład wywołania funkcji z funkcją parametrów === W ramce podajemy argumenty wraz z tym specjalnym parametrem: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}} </syntaxhighlight> ==== Użycie funkcji parametrów ==== To wtedy w kodzie w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} w module o nazwie {{Code|Nazwa modułu}}, piszemy: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(frame); .... end; </syntaxhighlight> To wtedy w kodzie ściągane parametry ramki dziecka. === Wykorzystanie fukcji w różnych sytuacjach === ; Przypadek pierwszy{{dk}} Tę funkcję można równie dobrze wykorzystać do zwykłych tabel: <syntaxhighlight lang="lua"> local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(tabela); </syntaxhighlight> ; Drugi przypadek{{dk}} A w tym przypadku ta funkcja nic nie robi, tylko zmienna {{Code|args}} referencyjnie wskazuje na tablicę {{Code|tablica}}. Ale można ją wykorzystać, gdyby funkcja {{Code|Nazwa funkcji}}, była uruchomiona ze zwykłą tablicą, ale z możliwością, że to może być tablicą ramki {{Code|frame}} tablicy transportu, np.: <syntaxhighlight lang="lua"> --- Pierwsza możliwość; local wartosc1=p["Nazwa funkcji"](frame); -- Druga możliwość local wartosc2=p["Nazwa funkcji"]{["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; </syntaxhighlight> === Usunięcie niedogodności === Dla obu tych przypadków nie ma żadnej niedogodności, jak to występowała w {{Code|{{sr|#p.PobierzFrameEwentualnieParent(frame)|p=Parametry}}}}. === Parametr funkcji nietablicowy === Jeśliby do funkcji tablicy transportu dać wartość równą nie tablicy, to wtedy równoważnie możemy napisać: <syntaxhighlight lang="lua"> local wartosc="wartość"; local wynik=p["Nazwa funkcji"](wartosc); </syntaxhighlight> to wtedy definicję tej funkcji piszemy: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(frame,true); local wartosc=args[1]; end; </syntaxhighlight> lub równoważnie możemy zapisać: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); local wartosc=parametry_modul.PobierzArgsParametry(frame); end; </syntaxhighlight> === Brak parametrów funkcji === A jeżeli nie wsadziliśmy żadnej wartości do funkcji ramki tablicy transportu lub tą wartością jest {{Code|nil}}, wtedy: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"](); </syntaxhighlight> wtedy definicja tej funkcji wygląda: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); -- Zmienna: args, wskazuje na wartość, którą jest tablicą pustą, tzn. w tej tablicy nie ma wcale elementów; local args=parametry_modul.PobierzArgsParametry(frame); end; </syntaxhighlight> === Zmienna {{Code|args}} - alternatywny przypadek dla wartości tablicowych niż te bez drugiego parametru === Widzimy, że wtedy zmienna {{Code|args}} jest normalną, niekoniecznie niepusta, tablicą, i nie musimy wtedy wcale pisać drugiego parametru w tej fubkcji, bo wtedy wychodzi w tym przypadku na to samo: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(frame,true); </syntaxhighlight> === Różnica drugiego parametru w przypadku wartości nietablicowych === Argument drugi w {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, który w naszym przypadku musi mieć wartość {{Code|true}}, a wtedy jest jedynie sens, gdy {{Code|frame}} nie jest tablicą, i gdy chcemy tą wartość umieścić w tablicy, a nie powtórzyć wartość, tzn. chcemy napisać: {{Code|{{(}}frame,{{)}}}}, w przeciwnym wypadku musilibyśmy napisać coś w rodzaju, zamiast tak spreparowanej tablicy: {{Code|frame}}, czyli: <syntaxhighlight lang="lua"> -- Pierwszy przypadek, gdy frame jest wartością nietablicową; local parametry_modul=require("Module:Parametry"); ... -- Zwracana wartość: args, to nic innego niż: {frame,}; local args=parametry_modul.PobierzArgsParametry(frame,true); ... -- Zwracana wartość: args, to nic innego niż: frame, a nie {frame,}, jak poprzednio; local args=parametry_modul.PobierzArgsParametry(frame); </syntaxhighlight> == {{Code|p.PobierzParametryRamki}} == Funkcja służy do ustawienia pewnych domyślnych dwóch pewnych funkcji służących do pobieranie danych z tabelki z pierwszej tej funkcji: * Jeżeli ona posiada klucz o wartości {{Code|args}}, ** to zwracana jest ta właśnie tablica jako argument pierwszej tej funkcji, jeżeli jest w ogóle tablicą, ** w przeciwnym wypadku zwracana jest ta oryginalna tablica, też jako argument tej funkcji, * w przeciwnym dalszym wypadku zwracana jest zwracana wartość ta, jako argument tej drugiej funkcji, która zwraca prawdziwą wartość z argumentu tylko za pierwszym razem, z tej funkcji, za następnym i dalszym razem {{Code|nil}}. Z tak utworzonej ogólnie większej funkcji wykorzystywana jest w budowie omawianej funkcji, która jest zwracana przez omawianą funkcję, która względem jego budowy wywołuje raz pierwszą albo drugą poprzednią wspomnianą funkcję zależną od rodzaju zmiennej {{Code|frame}}, która może być tabelką, ale nie musi być. Ta funkcja zwracana przez funkcję w nagłówku przyjmuje argument, która jest kluczem do tych wspomnianych, może że, * tabel (dokładnie, która ta może tabelka to zależy od formatu tej naszej rozważanej zmiennej), * a jeżeli to nie tabelka, co jest zwracane, to już zostało powiedziane. Definicja skrótowa tej funkcji jest: <syntaxhighlight lang="lua"> function p.PobierzParametryRamki(frame)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu. }} Weźmy ramkę sformułowaną w wikikodzie jako dziecko w szablonie rodzicu: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5}} </syntaxhighlight> === Funkcje, z funkcją parametrów, z tablicą ramki lub one z podtablicą {{Code|args}} === To wtedy tablica ramki tablicy transportu posiada właśnie {{Code|frame}}, która jest tablicą, i na pewno posiada tablicę o nazwie {{Code|args}}, to wtedy tę funkcję wywołaną w ramce, która wywołuje funkcję w nagłówku, formułujemy: <syntaxhighlight lang="lua"> local p={}; local p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametryRamki=parametry_modul.PobierzParametryRamki(frame); ... end; </syntaxhighlight> ==== Przykład wywołania funkcji z funkcją parametrów z tablicą {{Code|args}} ==== Równie dobrze funkcję z ramki można wywołać w sposób, co wtedy ta funkcja też zostanie wywołana pozytywnie: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"]{args={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}}; </syntaxhighlight> W tej funkcji nie trzeba definiować funkcji fałszywej {{Code|getParent}}, w postaci: {{Code|getParent{{=}}function()end}}. Widzimi, że ta tablica posiada nazwę zmiennej tablicowej o nazwie {{Code|args}}, ale ona nie jest tablicą ramki tablicy transportu, ale tą tablicę możemy bezposrednio wsadzić w tą główną tablicę w samym argumencie funkcji. ==== Przykład wywołania z tablicą bez podtablicy {{Code|args}} ==== Równie dobrze możemy wywołać tę funkcję zdefiniowaną naszą w jakimś module w sposób: <syntaxhighlight lang="lua"> local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; local wynik=p["Nazwa funkcji"]{tabela); </syntaxhighlight> też ta funkcja prawidłowo się wywoła. W tym przypadku, jak i w przypadkach powyżej, wyniki uzyskuje się w następującym wywołaniach: <syntaxhighlight lang="lua"> --- Zmienna: wartosc1, przyjmuje wartość: "wartość1"; local wartosc1=PobierzParametryRamki("nazwa1"); --- Zmienna: wartosc2, przyjmuje wartość: "wartość2"; local wartosc2=PobierzParametryRamki("nazwa2"); --- Zmienna: wartosc3, przyjmuje wartość: "wartość3"; local wartosc3=PobierzParametryRamki(1); </syntaxhighlight> ==== Przykład wywołania funkcji z wartością nietablicową ==== W innym przypadku wywołań funkcji ramki jest wsadzenie do niej zwykłego nietablicowego elementu, może być też to wartość: {{Code|nil}}. A to wywołanie jest: <syntaxhighlight lang="lua"> local wartosc="wartość"; --Zmienna: wartosc, nie jest w tym przypadku tablicą; local wynik=p["Nazwa funkcji"](wartosc); </syntaxhighlight> === Wywołania funkcji parametrów bez argumentów - wiele kolejnych wywołań jednocześnie === Wtedy w tej ramce w celu uzyskania, jakikolwiek wartości jest przykład wywołania tej funkcji zwracanej przez funkcję w ramce z argumentem pustym. <syntaxhighlight lang="lua"> -- Zmienna: wartość1, przyjmuje wartość: "wartość"; Jeżeli ona, przyjmuje wartość: nil, to wywołanie rzuci: nil, i za każdym następny razem; local wartosc1=PobierzParametryRamki(); -- Zmienna: wartość2, przyjmuje wartość: nil; local wartosc2=PobierzParametryRamki(); </syntaxhighlight> W wywołaniach powinno dbać się o właściwą kolejność wywołań, bo argumentem funkcji z tablicy transportu może być zwykła tablicowa wartość. Najpierw uzyskujemy wartości nietablicowe, a później tablicowe, na wypadek niewiadomej {{Code|frame}} jakiego typu ma być wartość. === Dwa przypadki, parametr w tablicy, lub wartość nietablicowa funkcji === Też ta zmienna może istnieć pod kilkoma możliwymi kluczami, lub tą zmienną może być jedyny argument funkcji, która jest nietablicową wartością, wtedy ją się wywołuje jako dla przypadku, gdy parametr jest nietablicowy lub jest pod kluczem {{Code|tekst}}: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local tekst=parametry_modul.PobierzParametryRamki(frame)("tekst"); </syntaxhighlight> === Przypadek, gdy parametr funkcji nie jest tablicą === Lub chcemy tę funkcję wywołać bezparametrowo, gdy chcemy, by {{Code|frame}} nie była tablicą: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local tekst=parametry_modul.PobierzParametryRamki(frame)(); </syntaxhighlight> === Omówienie przypadku istnienia tego samego wariantu zmiennej raz podtablicą, a raz jako zmienna nietablicowa === * Wtedy ta zmienna w przedostatnim przykładzie jest pod wartością {{Code|tekst}}, gdy wartość {{Code|frame}} jest tablicą, * lub może być jedyną wartością, którą jest {{Code|frame}}, jako zmienna nietablicowa, wtedy ta zmienna też jest pod {{Code|tekst}}, ** ta funkcja uzyskana z: {{Code|{{sr|#p.PobierzParametryRamki(frame)|p=Parametry}}}}, wtedy może być wywołana tylko raz z nienilową wartością zwracaną, następnym razem zwraca wartość {{Code|nil}}, wtedy to dotyczy przedostatniego i ostatniego przykładu. === Jakma liczyć element funkcji w przypadku różnych jej parametrów === Jeżeli {{Code|frame}} jest nietablicowa, to wtedy wartość {{Code|tekst}} jest taka sama, co {{Code|frame}}. A jeżeli jest tablicą, to ta wartością jest {{Code|frame.args["tekst"]}}, lub gdy {{Code|args}} nie istnieje, lub istnieje, ale jest nietablicowa, to wtedy ta wartość jest {{Code|frame["tekst"]}}. === Parametry alternatywne funkcji - przykład wykorzystania funkcji parametrów === A gdy zmienne istnieją pod wieloma kluczami, lub gdy funkcję wywołano ze zmienną nietablicową, wtedy ogólnie możemy dla przykładu powiedzieć: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local PobierzParametryRamki=parametry_modul.PobierzParametryRamki(frame); local wartosc1=PobierzParametryRamki("nazwa1") or PobierzParametryRamki(1); local wartosc2=PobierzParametryRamki("nazwa2") or PobierzParametryRamki(2); local wartosc3=PobierzParametryRamki("nazwa3") or PobierzParametryRamki(3); </syntaxhighlight> * Wtedy ta zmienna jest pod kluczem, np.: {{Code|nazwa1}} lub {{Code|1}}, tablicy ramki {{Code|frame}} tablicy transportu, następne wywołania dla następnych kluczy też zrzucą pewne wartości, * lub jest ona zwykłą nietablicową wartością mogącą być równą, nawet {{Code|nil}}. ---- * Następne wywołania uzyskanej tak funkcji w przypadku, gdy {{Code|frame}} jest nietablicowy, rzucać będzie z samej definicji funkcji wartości {{Code|nil}}, czyli {{Code|wartosc2{{=}}wartosc3{{=}}nil}}, ale za to wartość {{Code|wartosc1}} nie musi być, ale może, wartością {{Code|nil}}, jeśli tą wartością jest, gdy {{Code|frame{{=}}nil}}, * w przeciwnym wypadku za pierwszym razem tej wartości nietablicowej uzyskamy wartość nie {{Code|nil}}, a za drugim i dalszym zawsze wartość {{Code|nil}}. == {{Code|p.PobierzElementNumerowanyZFrameLubTablicy}} == Definicja skrótowa funkcji jest z parametrem charakteryzującym pewien zestaw zmiennych {{Code|frame}}, * które nie musi być tablicą ramki tablicy transportu, tylko moze być innym parametrem, który jest tablicą parametrów podanych do funkcji, * nawet gdy parametrem podanym do funkcji, w której wykorzystujemy tą funkcję, jest jedyna zmienna będąca tablicą ramki. Ale z drugiej strony, tak nie musi być, może być to rozbudowany zestaw zmiennych, np. nazwanych i nienazwanych, którego wszystkie sposoby podawania łączymy jednym sposobem podawania. Mimo że parametry funkcji są parametrami nienazwanymi, mogą być one ponumerowane, ale zmienna w tablicy może przyjmować wartość tą samą na różne sposoby, raz w sposób nazwany, a za innym sposobem jako nienazwany. Ogólnie ostateczne parametry łączymy w dane parametry za pomocą jednego sposobu, tzn. za pomocą tej funkcji, i dla tak uzyskanej tablicy tworzymy funkcję zwracaną przez funkcję w nagłówku, która przyjmuje parametr, który jest kluczem tej uzyskanej tablicy. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobierzElementNumerowanyZFrameLubTablicy(frame)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu. }} Weźmy najprostszy sposób realizacji tej funkcji, w realizacji: {{Code|1-1, 2-2, 3-3}}, czyli ten opis jest zaraz poniżej. === Sposoby wywołania funkcji === ; Pierwszy sposób{{dk}} Weźmy funkcję, którą można wywoływać z wieloma parametrami, jak i w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, którą przykładowo piszemy jego wywołanie wewnątrz innej funkcji na pięć sposobów, czyli teraz pierwszy sposób z tylko z parametrem, więc tablicą ramki tablicy transportu wywodzącą się z ramki uruchomioną w wikikodzie w jakimś szablonie rodzicu: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"](frame); </syntaxhighlight> ; Drugi sposób{{dk}} A teraz drugi sposób, pisząc, bezpośrednio inaczej, formułując wywołanie tej funkcji, używając zmiennych tablicowych tablicy ramki, ale to nie jest tak naprawdę tablica ramka tablicy transportu, tylko parametr podany bezpośrednio do funkcji, tak jak się to robi w języku {{lpg|Lua}}, nie jak w przykładzie powyżej, więc: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"]{args={"wartość1","wartość2","wartość3",},}; </syntaxhighlight> ; Trzeci sposób{{dk}} Lub równoważnie, pisząc, nie używając zmiennej {{Code|args}}: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"]{"wartość1","wartość2","wartość3",}; </syntaxhighlight> ; Czwarty sposób{{dk}} Albo te parametry wsadzając do funkcji: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"]("wartość1","wartość2","wartość3"); </syntaxhighlight> ; Piąty spssób{{dk}} Można też wywołać to wszystko w ramce, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w wikikpdzie, wtedy wsadzając parametry do ramki: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|wartość1|wartość2|wartość3}} </syntaxhighlight> === Omówienie pobierania takich parmetrów === A jak połączyć wszystkie te pięć sposobów, posługiwać się tymi sposobami wewnątrz funkcji {{Code|Nazwa funkcji}} w sposób jednolity, jedynie wtedy należy skorzystać z funkcji z definiowaną w jakimś module w sposób: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(...) local tablica_prametrow_funkcji={...}; local parametry_modul=require("Module:Parametry"); local PobierzElementNumerowanyZFrameLubTablicy=parametry_modul.PobierzElementNumerowanyZFrameLubTablicy(tablica_prametrow_funkcji); ... end; </syntaxhighlight> Wtedy za pomocą zmiennej {{Code|PobierzElementNumerowanyZFrameLubTablicy}} dostaliśmy się do funkcji, która przyjmuje jedyny parametr, aby dostać się do elementów tablicy uzyskanej w wewnątrz tej funkcji, zdefiniowaną w tablicy {{Code|tablica_prametrow_funkcji}}, która jest nic innym jak zestawem parametrów w funkcji: {{Code|Nazwa funkcji}}. === Omówienie sposobów wykorzystywania, robienia tego samego, na różne warianty === * W pierwszym i drugim sposobem zmienną tą nazwijmy to jako {{Code|args}}, jest zmienną z podtablicy innego {{Code|args}} przekazanych jako parametr tablicy do funkcji, * w trzecim sposobie tą zmienną jest cała tablica, * a czwartym jest zestaw parametrów ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. A czym się różnią się te sposoby, a więc te sposoby można powiązać jedną tylko funkcją powiedzianą w nagłówku według przykładu podaną zaraz powyżej, wtedy możemy dostawać się do tych samych zmiennych o takich samych nazwach i wartościach, ale w różnych reprezentacjach na różne sposoby, wtedy można powiedzieć, że: <syntaxhighlight lang="lua"> args[1]="wartość1"; args[2]="wartość2"; args[3]="wartość3"; </syntaxhighlight> === Ogólny opis stosowania funkcji === Czyli w wyniku działania funkcji w nagłówku, otrzymamy funkcję zwracającą te wartości, która operuje na tej tablicy, której wynikiem jest zestaw zmiennych ponumerowanych, ogólnie nienazwanych, której wartości odpowiadają te podane w ramce ostatniej powyżej. Na podstawie tego wiemy, jak działa funkcja ta z nagłówka. === Nazwy alternatywne danych parametrów funkcji ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}} === Pisząc w inny sposób, można też wskazywać: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(...) local tablica_prametrow_funkcji={...}; local parametry_modul=require("Module:Parametry"); local PobierzElementNumerowanyZFrameLubTablicy=parametry_modul.PobierzElementNumerowanyZFrameLubTablicy(tablica_prametrow_funkcji); local wartosc1=PobierzElementNumerowanyZFrameLubTablicy("nazwa1") or PobierzElementNumerowanyZFrameLubTablicy(1); local wartosc2=PobierzElementNumerowanyZFrameLubTablicy("nazwa2") or PobierzElementNumerowanyZFrameLubTablicy(2); local wartosc3=PobierzElementNumerowanyZFrameLubTablicy("nazwa3") or PobierzElementNumerowanyZFrameLubTablicy(3); end; </syntaxhighlight> Zmienne w przykładzie o kluczach: {{Code|nazwa1}}, {{Code|nazwa2}} i {{Code|nazwa3}}, posiadające pewne swoje wartości, to są zmienne w tablicy {{Code|tablica_prametrow_funkcji}}, podane też jako zmienne, jako pewne argumenty tablicy, który są w tej funkcji zwracanej jako argument (parametr) funkcji: * jeżeli argumenty podano w postaci jednego parametru funkcji w postaci pewnej tablicy z np. elementami nazwanymi, * lub jako wiele argumentów w ramce, w wikikodzie, w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w pewnym szablonie, * a rozpatrując dalej elementy względem ich nazw, np. alternatywnych, to te numery mogą być kolejo do nazw ich odpowiedników nazwanych, które w przykładzie powyżej, mają pierwszeństwo, ale tak nie musi być, te parametry: {{Code|1}}, {{Code|2}} i {{Code|3}}, to jest numer parametru. To stosujemy, jeżeli argumenty do funkcji podano w postaci wielu jego parametrów. == {{Code|p.PobierzParametr}} == Ta funkcja zwraca znów inną funkcję, która ma jedyny parametr, mówiący jakiego parametru poszukujemy, co jest wyjaśnione w definicji funkcji z nagłówka, że ona zwraca tą właśnie funkcje. Definicja skrótowa dunkcji: <syntaxhighlight lang="lua"> function p.PobierzParametr(frame,czy_frame_lub_parent,czy_frame) ... return function(nazwa) return __pobierz_parametr_table_args(nazwa); end; end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu. | 2 = {{Code|czy_frame_lub_parent}} i {{Code|czy_frame}} | _2 = Parametry logiczne dodatkowe funkcji. }} === Wartość zwracana i jego druga wartośc w postaci numeru metody === Funkcja zwraca jednocześnie dwie wartości, ta zwrócona z funkcji z nagłówka, prawdziwą wartość, i numer metody w postaci: {{Code|return wartosc, numer_metody}}. === Opis zwracanych elementów przez funkcję zwracaną - różne metody zwracania, jak je wykorzystać === Ta funkcja zwracana ma w swojej definicji inną jeszcze funkcję z tym samym parametrem, co jego rodzic, i to jest za każdym razem inna funkcja w zależności z jakim typem danych się posługujemy {{Code|frame}} i jakie podaliśmy parametry. Gdy warunkiem, gdy zmienna {{Code|frame}} jest tablicą, czyli te zmienne druga: {{Code|czy_frame_lub_parent}} (jeżeli funkcja jest uruchomiona w ramce w szablonie, jeżeli ma wartość {{Code|true}}, to ona wybiera raz parametr z: {{Code|frame.args[nazwa or 1]}}, a za innym razem z {{Code|pf.args[nazwa or 1]}}, gdzie {{Code|pf{{=}}frame:getParent()}}, tutaj jest zwracana wartość: {{Code|return wartosc,2}}). Czy trzecia: {{Code|czy_frame}} (która mówi, jeżeli funkcję uruchomiono w ramce, ale przy wartości prawdziwej tego pierwszego podanego parametru, czyli {{Code|true}}, wybierana jest zawsze wartość {{Code|frame.args[nazwa or 1}}}, w przeciwnym wypadku uruchamiana jest funkcja {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, tutaj zwracana jest wartość {{Code|return wartosc,1}}). Jeżeli wartością {{Code|frame}} jest wartość nietablicowa, ale niebędącą wartością {{Code|nil}}, wtedy ustawiana jest funkcja, która tylko za pierwszym razem zwraca nienilową wartość {{Code|return wartosc,0}}, a później zwraca wartość {{Code|return nil,0}}. Gdy wartością {{Code|frame}} jest {{Code|nil}}, to funkcja zawsze wraca tą wartość {{Code|return nil,0}}. Powyższy sposób działa również dobrze, gdy zdefiniujemy w parametrach funkcji fałszywą funkcję {{Code|frame.getParent}}. Gdy funkcja nie jest uruchamiana w ramce lub funkcja {{Code|frame.getParent}} nie jest zdefiniowana, to wtedy funkcja wchodzi zawsze w ten jej krok, jakby {{Code|czy_frame_lub_parent}} było {{Code|false}} według tego powyżej, to wtedy brana jest zmienna {{Code|czy_frame}}, i jaką wartość ona przyjmuje. === Nazwy alternatywne parametrów === Funkcję pisze się według sposobu, którą się wywołuje według: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame); local wartosc1=PobierzParametr("nazwa1") or PobierzParametr(1); local wartosc2=PobierzParametr("nazwa2") or PobierzParametr(2); local wartosc3=PobierzParametr("nazwa3") or PobierzParametr(3); </syntaxhighlight> Na wypadek wartości nietabelowej, tą wartość zapisuje się jako pierwszą w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a dla wartości tabelowych, jaka jest kolejność to jest obojętne, byle by to było sensowne. === Wywołania funkcji w ramce, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, z funkcją parametrów === Tę funkcję podobnie się wywołuje jak funkcję: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}. Wartością {{Code|frame}} nie musi być tablica ramki tablicy transportu, równie dobrze może być to dowolna tablica lub wartość nietablicowa. Weźmy ramkę, w której uruchamiamy funkcję ramki: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}} </syntaxhighlight> === Przykłady wykorzystania funkcji === ; Przykład pierwszy{{dk}} Ona musi być wywołana z parametrem {{Parametr|wyspecjalizowana|tak}}, jako podpowiedź, że liczą się parametry ramki dziecka, a nie jego rodzica, czyli szablonu. Wtedy funkcję {{Code|Nazwa funkcji}} definiujemy: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame,true); ... end; </syntaxhighlight> Wtedy parametr {{Parametr|wyspecjalizowana|tak}} jest ignorowany, a przy wartości {{Code|false}} drugiego parametru funkcji, czyli wywołania: {{Code|local PobierzParametr{{=}}parametry_modul.PobierzParametr(frame,false);}}, już nie, ale nie zawsze. W takim przypadku według powyższego przykładu raz jest brana wartość, jeżeli istnieje, z {{Code|frame.args}}, a jak ona nie istnieje, to wtedy z: {{Code|pf.args}}. ; Przykład drugi{{dk}} Weźmy inny przypadek: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame,false,true); ... end; </syntaxhighlight> Przy tym też parametr: {{Parametr|wyspecjalizowana|tak}}, jest ignorowany, wtedy jest zawsze wybierana do rozważań tablica: {{Code|frame.args}}. ; Przykład trzeci{{dk}} Znów w innym przypadku, gdzie parametr: {{Parametr|wyspecjalizowana|tak}}, jest zawsze rozważany w naszym wypadku: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame,false,false); ... end; </syntaxhighlight> To to wywołanie, wtedy dokładnie działa jak funkcja: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, a zwrócona funkcja: {{Code|PobierzParametr}} pobiera elementy z tak uzyskanej tablicy {{Code|args}} poprzez nią. === Przypadek nietablicowego charakteru parametrów funkcji === W przypadku, gdy {{Code|frame}} nie jest tablicą, wtedy parametry: {{Code|czy_frame_lub_parent}} i {{Code|czy_frame}}, są w takim przypadku zawsze ignorowane, ale muszą być ustawione na wypadek, gdyby do funkcji {{Code|Nazwa funkcji}} wsadzono tablicę, np. z ramki, tzn. tablicę ramki funkcji tablicy transportu. === Ogólny przypadek, często stosowany === Najprostszym często ogólnym przykładem, który prawie zawsze jest stosowany: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame); ... end; </syntaxhighlight> Wtedy parametr: {{Parametr|wyspecjalizowana|tak}}, jest prawie zawsze nieignorowany, ale nie zawsze. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> j7o8rwetbsims0bzc7li5738fafzhw8 555751 555750 2026-09-11T20:18:24Z Persino 2851 /* Opis zwracanych elementów przez funkcję zwracaną - różne metody zwracania, jak je wykorzystać */ 555751 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} Są tutaj przedstawione funkcje parametrów. == {{Code|p.PobierzFrameEwentualnieParent}} == Argument tej funkcji {{Code|frame}} koniecznie musi być tablicą, w przypadku przeciwnym wywoła to błąd języka {{lpg|Lua}}, że z wartości nietabelowej chcemy wyliczyć jego nieistniejący element {{Code|getParent}}, który ma prawo nie być. Funkcja pobiera parametry ramki szablonu rodzica, a nie dziecka, a jeżeli w dziecku w ramce w wikikodzie w szablonie podamy specjalny parametr {{Parametr|wyspecjalizowana|tak}}, to wtedy ta funkcja ściąga parametry ramki. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobierzFrameEwentualnieParent(frame)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu. }} === Sterowanie funkcją === Tą funkcją można sterować ze strony ramki tym właśnie specjalnym parametrem o wartości niepustej, którą jest {{Parametr|wyspecjalizowana|tak}}. ==== Przykłady wykorzystania z parametrem sterującym ==== W ramce podajemy argumenty wraz z tym specjalnym parametrem: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}} </syntaxhighlight> To wtedy w kodzie w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} w module o nazwie {{Code|Nazwa modułu}}, piszemy: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzFrameEwentualnieParent(frame).args; .... end; </syntaxhighlight> To wtedy w kodzie ściągane parametry ramki dziecka. === Pobieranie oryginalnej tablicy === Tę funkcję można równie dobrze wykorzystać do zwykłych tabel: <syntaxhighlight lang="lua"> local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzFrameEwentualnieParent(tabela); </syntaxhighlight> === Możliwość tej samej funkcji uruchomioną w ramce lub z podaniem do niej pewnego zestawu parametrów w postaci tablicy === A w tym przypadku ta funkcja nic nie robi, tylko zmienna {{Code|args}} referencyjnie wskazuje na tablicę {{Code|tablica}}. Ale można ją wykorzystać, gdy by funkcja {{Code|Nazwa funkcji}}, była uruchomiona ze zwykłą tablicą, ale z możliwością, że to może być tablicą ramki {{Code|frame}} tablicy transportu, np.: <syntaxhighlight lang="lua"> --- Pierwsza możliwość; local wartosc1=p["Nazwa funkcji"](frame); -- Druga możliwość local wartosc2=p["Nazwa funkcji"]{["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; </syntaxhighlight> === Niedogodności stosowania z funkcji === Dla obu jest taka niedogodność, że jedynie jest taka nieprawidłowość, że w przypadku parametru tablicy ramki tablicy transportu należy podawać uzyskany element {{Code|args}}, a w przypadku zwykłej tablicy już nie, tą niedokodność rozwiązuje funkcja: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}. == {{Code|p.PobierzArgsParametry}} == Argument tej funkcji {{Code|frame}} koniecznie nie musi być tablicą, bo wtedy nie wywoła to błędu języka {{lpg|Lua}}, że z wartości nietabelowej chcemy wyliczyć jego niepusty element {{Code|getParent}}, bo przedtem sprawdzana jest w tej funkcji, czy jest to tablica. W definicji tej funkcji zmienna uzyskana z funkcji: {{Code|{{sr|#p.PobierzFrameEwentualnieParent(frame)|p=Parametry}}}}, a jeśli jej składowa {{Code|args}} jest tablicą, to jest właśnie ona zwracana, a jeśli istnieje, ale nie jest tablicą, lub ona nie istnieje, to wtedy brana jest właśnie wartość tablicowa {{Code|frame}}, jeśli jest ona taka, a gdy nie, to wtedy z tej funkcji tutaj nie korzystamy. Funkcja pobiera parametry ramki szablonu rodzica, a nie dziecka, a jeżeli w dziecku w ramce w wikikodzie w szablonie podamy specjalny parametr {{Parametr|wyspecjalizowana|tak}}, to wtedy ta funkcja ściąga parametry ramki. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobierzArgsParametry(frame, czy_nie_tablica_jako_tablica)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica transportu ramki. | 2 = {{Code|czy_nie_tablica_jako_tablica}} | _2 = Czy wartości nietablicowe umieszczać w jednoelemenowej tabeli. }} === Opis działania === Funkcja wykorzystuje wspomnianą powyżej funkcję do swojego działania, ona jest wtedy aktywowana, gdy zmienna {{Code|frame}} jest tablicą, i jest sprawdzane, czy ona posiada nazwany element o kluczu {{Code|args}}, i czy jest on tablicowy. Jeżeli wartością zmiennej {{Code|frame}} nie jest tablica, ale nie przybiera wartości {{Code|nil}}, to ona jest umieszczana w tablicy, jeżeli zmiennej {{Code|czy_nie_tablica_jako_tablica}} przydzielimy wartość {{Code|true}}, w przeciwnym wypadku zwracana jest ona w postaci niezmienionej, a jeżeli wartość tej zmiennej nie istnieje, to zwracana jest zwykła tablica pusta. Tą funkcją można sterować ze strony ramki tym właśnie specjalnym parametrem o wartości niepustej. === Przykład wywołania funkcji z funkcją parametrów === W ramce podajemy argumenty wraz z tym specjalnym parametrem: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}} </syntaxhighlight> ==== Użycie funkcji parametrów ==== To wtedy w kodzie w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} w module o nazwie {{Code|Nazwa modułu}}, piszemy: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(frame); .... end; </syntaxhighlight> To wtedy w kodzie ściągane parametry ramki dziecka. === Wykorzystanie fukcji w różnych sytuacjach === ; Przypadek pierwszy{{dk}} Tę funkcję można równie dobrze wykorzystać do zwykłych tabel: <syntaxhighlight lang="lua"> local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(tabela); </syntaxhighlight> ; Drugi przypadek{{dk}} A w tym przypadku ta funkcja nic nie robi, tylko zmienna {{Code|args}} referencyjnie wskazuje na tablicę {{Code|tablica}}. Ale można ją wykorzystać, gdyby funkcja {{Code|Nazwa funkcji}}, była uruchomiona ze zwykłą tablicą, ale z możliwością, że to może być tablicą ramki {{Code|frame}} tablicy transportu, np.: <syntaxhighlight lang="lua"> --- Pierwsza możliwość; local wartosc1=p["Nazwa funkcji"](frame); -- Druga możliwość local wartosc2=p["Nazwa funkcji"]{["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; </syntaxhighlight> === Usunięcie niedogodności === Dla obu tych przypadków nie ma żadnej niedogodności, jak to występowała w {{Code|{{sr|#p.PobierzFrameEwentualnieParent(frame)|p=Parametry}}}}. === Parametr funkcji nietablicowy === Jeśliby do funkcji tablicy transportu dać wartość równą nie tablicy, to wtedy równoważnie możemy napisać: <syntaxhighlight lang="lua"> local wartosc="wartość"; local wynik=p["Nazwa funkcji"](wartosc); </syntaxhighlight> to wtedy definicję tej funkcji piszemy: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(frame,true); local wartosc=args[1]; end; </syntaxhighlight> lub równoważnie możemy zapisać: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); local wartosc=parametry_modul.PobierzArgsParametry(frame); end; </syntaxhighlight> === Brak parametrów funkcji === A jeżeli nie wsadziliśmy żadnej wartości do funkcji ramki tablicy transportu lub tą wartością jest {{Code|nil}}, wtedy: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"](); </syntaxhighlight> wtedy definicja tej funkcji wygląda: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); -- Zmienna: args, wskazuje na wartość, którą jest tablicą pustą, tzn. w tej tablicy nie ma wcale elementów; local args=parametry_modul.PobierzArgsParametry(frame); end; </syntaxhighlight> === Zmienna {{Code|args}} - alternatywny przypadek dla wartości tablicowych niż te bez drugiego parametru === Widzimy, że wtedy zmienna {{Code|args}} jest normalną, niekoniecznie niepusta, tablicą, i nie musimy wtedy wcale pisać drugiego parametru w tej fubkcji, bo wtedy wychodzi w tym przypadku na to samo: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(frame,true); </syntaxhighlight> === Różnica drugiego parametru w przypadku wartości nietablicowych === Argument drugi w {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, który w naszym przypadku musi mieć wartość {{Code|true}}, a wtedy jest jedynie sens, gdy {{Code|frame}} nie jest tablicą, i gdy chcemy tą wartość umieścić w tablicy, a nie powtórzyć wartość, tzn. chcemy napisać: {{Code|{{(}}frame,{{)}}}}, w przeciwnym wypadku musilibyśmy napisać coś w rodzaju, zamiast tak spreparowanej tablicy: {{Code|frame}}, czyli: <syntaxhighlight lang="lua"> -- Pierwszy przypadek, gdy frame jest wartością nietablicową; local parametry_modul=require("Module:Parametry"); ... -- Zwracana wartość: args, to nic innego niż: {frame,}; local args=parametry_modul.PobierzArgsParametry(frame,true); ... -- Zwracana wartość: args, to nic innego niż: frame, a nie {frame,}, jak poprzednio; local args=parametry_modul.PobierzArgsParametry(frame); </syntaxhighlight> == {{Code|p.PobierzParametryRamki}} == Funkcja służy do ustawienia pewnych domyślnych dwóch pewnych funkcji służących do pobieranie danych z tabelki z pierwszej tej funkcji: * Jeżeli ona posiada klucz o wartości {{Code|args}}, ** to zwracana jest ta właśnie tablica jako argument pierwszej tej funkcji, jeżeli jest w ogóle tablicą, ** w przeciwnym wypadku zwracana jest ta oryginalna tablica, też jako argument tej funkcji, * w przeciwnym dalszym wypadku zwracana jest zwracana wartość ta, jako argument tej drugiej funkcji, która zwraca prawdziwą wartość z argumentu tylko za pierwszym razem, z tej funkcji, za następnym i dalszym razem {{Code|nil}}. Z tak utworzonej ogólnie większej funkcji wykorzystywana jest w budowie omawianej funkcji, która jest zwracana przez omawianą funkcję, która względem jego budowy wywołuje raz pierwszą albo drugą poprzednią wspomnianą funkcję zależną od rodzaju zmiennej {{Code|frame}}, która może być tabelką, ale nie musi być. Ta funkcja zwracana przez funkcję w nagłówku przyjmuje argument, która jest kluczem do tych wspomnianych, może że, * tabel (dokładnie, która ta może tabelka to zależy od formatu tej naszej rozważanej zmiennej), * a jeżeli to nie tabelka, co jest zwracane, to już zostało powiedziane. Definicja skrótowa tej funkcji jest: <syntaxhighlight lang="lua"> function p.PobierzParametryRamki(frame)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu. }} Weźmy ramkę sformułowaną w wikikodzie jako dziecko w szablonie rodzicu: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5}} </syntaxhighlight> === Funkcje, z funkcją parametrów, z tablicą ramki lub one z podtablicą {{Code|args}} === To wtedy tablica ramki tablicy transportu posiada właśnie {{Code|frame}}, która jest tablicą, i na pewno posiada tablicę o nazwie {{Code|args}}, to wtedy tę funkcję wywołaną w ramce, która wywołuje funkcję w nagłówku, formułujemy: <syntaxhighlight lang="lua"> local p={}; local p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametryRamki=parametry_modul.PobierzParametryRamki(frame); ... end; </syntaxhighlight> ==== Przykład wywołania funkcji z funkcją parametrów z tablicą {{Code|args}} ==== Równie dobrze funkcję z ramki można wywołać w sposób, co wtedy ta funkcja też zostanie wywołana pozytywnie: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"]{args={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}}; </syntaxhighlight> W tej funkcji nie trzeba definiować funkcji fałszywej {{Code|getParent}}, w postaci: {{Code|getParent{{=}}function()end}}. Widzimi, że ta tablica posiada nazwę zmiennej tablicowej o nazwie {{Code|args}}, ale ona nie jest tablicą ramki tablicy transportu, ale tą tablicę możemy bezposrednio wsadzić w tą główną tablicę w samym argumencie funkcji. ==== Przykład wywołania z tablicą bez podtablicy {{Code|args}} ==== Równie dobrze możemy wywołać tę funkcję zdefiniowaną naszą w jakimś module w sposób: <syntaxhighlight lang="lua"> local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; local wynik=p["Nazwa funkcji"]{tabela); </syntaxhighlight> też ta funkcja prawidłowo się wywoła. W tym przypadku, jak i w przypadkach powyżej, wyniki uzyskuje się w następującym wywołaniach: <syntaxhighlight lang="lua"> --- Zmienna: wartosc1, przyjmuje wartość: "wartość1"; local wartosc1=PobierzParametryRamki("nazwa1"); --- Zmienna: wartosc2, przyjmuje wartość: "wartość2"; local wartosc2=PobierzParametryRamki("nazwa2"); --- Zmienna: wartosc3, przyjmuje wartość: "wartość3"; local wartosc3=PobierzParametryRamki(1); </syntaxhighlight> ==== Przykład wywołania funkcji z wartością nietablicową ==== W innym przypadku wywołań funkcji ramki jest wsadzenie do niej zwykłego nietablicowego elementu, może być też to wartość: {{Code|nil}}. A to wywołanie jest: <syntaxhighlight lang="lua"> local wartosc="wartość"; --Zmienna: wartosc, nie jest w tym przypadku tablicą; local wynik=p["Nazwa funkcji"](wartosc); </syntaxhighlight> === Wywołania funkcji parametrów bez argumentów - wiele kolejnych wywołań jednocześnie === Wtedy w tej ramce w celu uzyskania, jakikolwiek wartości jest przykład wywołania tej funkcji zwracanej przez funkcję w ramce z argumentem pustym. <syntaxhighlight lang="lua"> -- Zmienna: wartość1, przyjmuje wartość: "wartość"; Jeżeli ona, przyjmuje wartość: nil, to wywołanie rzuci: nil, i za każdym następny razem; local wartosc1=PobierzParametryRamki(); -- Zmienna: wartość2, przyjmuje wartość: nil; local wartosc2=PobierzParametryRamki(); </syntaxhighlight> W wywołaniach powinno dbać się o właściwą kolejność wywołań, bo argumentem funkcji z tablicy transportu może być zwykła tablicowa wartość. Najpierw uzyskujemy wartości nietablicowe, a później tablicowe, na wypadek niewiadomej {{Code|frame}} jakiego typu ma być wartość. === Dwa przypadki, parametr w tablicy, lub wartość nietablicowa funkcji === Też ta zmienna może istnieć pod kilkoma możliwymi kluczami, lub tą zmienną może być jedyny argument funkcji, która jest nietablicową wartością, wtedy ją się wywołuje jako dla przypadku, gdy parametr jest nietablicowy lub jest pod kluczem {{Code|tekst}}: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local tekst=parametry_modul.PobierzParametryRamki(frame)("tekst"); </syntaxhighlight> === Przypadek, gdy parametr funkcji nie jest tablicą === Lub chcemy tę funkcję wywołać bezparametrowo, gdy chcemy, by {{Code|frame}} nie była tablicą: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local tekst=parametry_modul.PobierzParametryRamki(frame)(); </syntaxhighlight> === Omówienie przypadku istnienia tego samego wariantu zmiennej raz podtablicą, a raz jako zmienna nietablicowa === * Wtedy ta zmienna w przedostatnim przykładzie jest pod wartością {{Code|tekst}}, gdy wartość {{Code|frame}} jest tablicą, * lub może być jedyną wartością, którą jest {{Code|frame}}, jako zmienna nietablicowa, wtedy ta zmienna też jest pod {{Code|tekst}}, ** ta funkcja uzyskana z: {{Code|{{sr|#p.PobierzParametryRamki(frame)|p=Parametry}}}}, wtedy może być wywołana tylko raz z nienilową wartością zwracaną, następnym razem zwraca wartość {{Code|nil}}, wtedy to dotyczy przedostatniego i ostatniego przykładu. === Jakma liczyć element funkcji w przypadku różnych jej parametrów === Jeżeli {{Code|frame}} jest nietablicowa, to wtedy wartość {{Code|tekst}} jest taka sama, co {{Code|frame}}. A jeżeli jest tablicą, to ta wartością jest {{Code|frame.args["tekst"]}}, lub gdy {{Code|args}} nie istnieje, lub istnieje, ale jest nietablicowa, to wtedy ta wartość jest {{Code|frame["tekst"]}}. === Parametry alternatywne funkcji - przykład wykorzystania funkcji parametrów === A gdy zmienne istnieją pod wieloma kluczami, lub gdy funkcję wywołano ze zmienną nietablicową, wtedy ogólnie możemy dla przykładu powiedzieć: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local PobierzParametryRamki=parametry_modul.PobierzParametryRamki(frame); local wartosc1=PobierzParametryRamki("nazwa1") or PobierzParametryRamki(1); local wartosc2=PobierzParametryRamki("nazwa2") or PobierzParametryRamki(2); local wartosc3=PobierzParametryRamki("nazwa3") or PobierzParametryRamki(3); </syntaxhighlight> * Wtedy ta zmienna jest pod kluczem, np.: {{Code|nazwa1}} lub {{Code|1}}, tablicy ramki {{Code|frame}} tablicy transportu, następne wywołania dla następnych kluczy też zrzucą pewne wartości, * lub jest ona zwykłą nietablicową wartością mogącą być równą, nawet {{Code|nil}}. ---- * Następne wywołania uzyskanej tak funkcji w przypadku, gdy {{Code|frame}} jest nietablicowy, rzucać będzie z samej definicji funkcji wartości {{Code|nil}}, czyli {{Code|wartosc2{{=}}wartosc3{{=}}nil}}, ale za to wartość {{Code|wartosc1}} nie musi być, ale może, wartością {{Code|nil}}, jeśli tą wartością jest, gdy {{Code|frame{{=}}nil}}, * w przeciwnym wypadku za pierwszym razem tej wartości nietablicowej uzyskamy wartość nie {{Code|nil}}, a za drugim i dalszym zawsze wartość {{Code|nil}}. == {{Code|p.PobierzElementNumerowanyZFrameLubTablicy}} == Definicja skrótowa funkcji jest z parametrem charakteryzującym pewien zestaw zmiennych {{Code|frame}}, * które nie musi być tablicą ramki tablicy transportu, tylko moze być innym parametrem, który jest tablicą parametrów podanych do funkcji, * nawet gdy parametrem podanym do funkcji, w której wykorzystujemy tą funkcję, jest jedyna zmienna będąca tablicą ramki. Ale z drugiej strony, tak nie musi być, może być to rozbudowany zestaw zmiennych, np. nazwanych i nienazwanych, którego wszystkie sposoby podawania łączymy jednym sposobem podawania. Mimo że parametry funkcji są parametrami nienazwanymi, mogą być one ponumerowane, ale zmienna w tablicy może przyjmować wartość tą samą na różne sposoby, raz w sposób nazwany, a za innym sposobem jako nienazwany. Ogólnie ostateczne parametry łączymy w dane parametry za pomocą jednego sposobu, tzn. za pomocą tej funkcji, i dla tak uzyskanej tablicy tworzymy funkcję zwracaną przez funkcję w nagłówku, która przyjmuje parametr, który jest kluczem tej uzyskanej tablicy. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobierzElementNumerowanyZFrameLubTablicy(frame)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu. }} Weźmy najprostszy sposób realizacji tej funkcji, w realizacji: {{Code|1-1, 2-2, 3-3}}, czyli ten opis jest zaraz poniżej. === Sposoby wywołania funkcji === ; Pierwszy sposób{{dk}} Weźmy funkcję, którą można wywoływać z wieloma parametrami, jak i w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, którą przykładowo piszemy jego wywołanie wewnątrz innej funkcji na pięć sposobów, czyli teraz pierwszy sposób z tylko z parametrem, więc tablicą ramki tablicy transportu wywodzącą się z ramki uruchomioną w wikikodzie w jakimś szablonie rodzicu: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"](frame); </syntaxhighlight> ; Drugi sposób{{dk}} A teraz drugi sposób, pisząc, bezpośrednio inaczej, formułując wywołanie tej funkcji, używając zmiennych tablicowych tablicy ramki, ale to nie jest tak naprawdę tablica ramka tablicy transportu, tylko parametr podany bezpośrednio do funkcji, tak jak się to robi w języku {{lpg|Lua}}, nie jak w przykładzie powyżej, więc: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"]{args={"wartość1","wartość2","wartość3",},}; </syntaxhighlight> ; Trzeci sposób{{dk}} Lub równoważnie, pisząc, nie używając zmiennej {{Code|args}}: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"]{"wartość1","wartość2","wartość3",}; </syntaxhighlight> ; Czwarty sposób{{dk}} Albo te parametry wsadzając do funkcji: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"]("wartość1","wartość2","wartość3"); </syntaxhighlight> ; Piąty spssób{{dk}} Można też wywołać to wszystko w ramce, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w wikikpdzie, wtedy wsadzając parametry do ramki: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|wartość1|wartość2|wartość3}} </syntaxhighlight> === Omówienie pobierania takich parmetrów === A jak połączyć wszystkie te pięć sposobów, posługiwać się tymi sposobami wewnątrz funkcji {{Code|Nazwa funkcji}} w sposób jednolity, jedynie wtedy należy skorzystać z funkcji z definiowaną w jakimś module w sposób: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(...) local tablica_prametrow_funkcji={...}; local parametry_modul=require("Module:Parametry"); local PobierzElementNumerowanyZFrameLubTablicy=parametry_modul.PobierzElementNumerowanyZFrameLubTablicy(tablica_prametrow_funkcji); ... end; </syntaxhighlight> Wtedy za pomocą zmiennej {{Code|PobierzElementNumerowanyZFrameLubTablicy}} dostaliśmy się do funkcji, która przyjmuje jedyny parametr, aby dostać się do elementów tablicy uzyskanej w wewnątrz tej funkcji, zdefiniowaną w tablicy {{Code|tablica_prametrow_funkcji}}, która jest nic innym jak zestawem parametrów w funkcji: {{Code|Nazwa funkcji}}. === Omówienie sposobów wykorzystywania, robienia tego samego, na różne warianty === * W pierwszym i drugim sposobem zmienną tą nazwijmy to jako {{Code|args}}, jest zmienną z podtablicy innego {{Code|args}} przekazanych jako parametr tablicy do funkcji, * w trzecim sposobie tą zmienną jest cała tablica, * a czwartym jest zestaw parametrów ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. A czym się różnią się te sposoby, a więc te sposoby można powiązać jedną tylko funkcją powiedzianą w nagłówku według przykładu podaną zaraz powyżej, wtedy możemy dostawać się do tych samych zmiennych o takich samych nazwach i wartościach, ale w różnych reprezentacjach na różne sposoby, wtedy można powiedzieć, że: <syntaxhighlight lang="lua"> args[1]="wartość1"; args[2]="wartość2"; args[3]="wartość3"; </syntaxhighlight> === Ogólny opis stosowania funkcji === Czyli w wyniku działania funkcji w nagłówku, otrzymamy funkcję zwracającą te wartości, która operuje na tej tablicy, której wynikiem jest zestaw zmiennych ponumerowanych, ogólnie nienazwanych, której wartości odpowiadają te podane w ramce ostatniej powyżej. Na podstawie tego wiemy, jak działa funkcja ta z nagłówka. === Nazwy alternatywne danych parametrów funkcji ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}} === Pisząc w inny sposób, można też wskazywać: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(...) local tablica_prametrow_funkcji={...}; local parametry_modul=require("Module:Parametry"); local PobierzElementNumerowanyZFrameLubTablicy=parametry_modul.PobierzElementNumerowanyZFrameLubTablicy(tablica_prametrow_funkcji); local wartosc1=PobierzElementNumerowanyZFrameLubTablicy("nazwa1") or PobierzElementNumerowanyZFrameLubTablicy(1); local wartosc2=PobierzElementNumerowanyZFrameLubTablicy("nazwa2") or PobierzElementNumerowanyZFrameLubTablicy(2); local wartosc3=PobierzElementNumerowanyZFrameLubTablicy("nazwa3") or PobierzElementNumerowanyZFrameLubTablicy(3); end; </syntaxhighlight> Zmienne w przykładzie o kluczach: {{Code|nazwa1}}, {{Code|nazwa2}} i {{Code|nazwa3}}, posiadające pewne swoje wartości, to są zmienne w tablicy {{Code|tablica_prametrow_funkcji}}, podane też jako zmienne, jako pewne argumenty tablicy, który są w tej funkcji zwracanej jako argument (parametr) funkcji: * jeżeli argumenty podano w postaci jednego parametru funkcji w postaci pewnej tablicy z np. elementami nazwanymi, * lub jako wiele argumentów w ramce, w wikikodzie, w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w pewnym szablonie, * a rozpatrując dalej elementy względem ich nazw, np. alternatywnych, to te numery mogą być kolejo do nazw ich odpowiedników nazwanych, które w przykładzie powyżej, mają pierwszeństwo, ale tak nie musi być, te parametry: {{Code|1}}, {{Code|2}} i {{Code|3}}, to jest numer parametru. To stosujemy, jeżeli argumenty do funkcji podano w postaci wielu jego parametrów. == {{Code|p.PobierzParametr}} == Ta funkcja zwraca znów inną funkcję, która ma jedyny parametr, mówiący jakiego parametru poszukujemy, co jest wyjaśnione w definicji funkcji z nagłówka, że ona zwraca tą właśnie funkcje. Definicja skrótowa dunkcji: <syntaxhighlight lang="lua"> function p.PobierzParametr(frame,czy_frame_lub_parent,czy_frame) ... return function(nazwa) return __pobierz_parametr_table_args(nazwa); end; end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu. | 2 = {{Code|czy_frame_lub_parent}} i {{Code|czy_frame}} | _2 = Parametry logiczne dodatkowe funkcji. }} === Wartość zwracana i jego druga wartośc w postaci numeru metody === Funkcja zwraca jednocześnie dwie wartości, ta zwrócona z funkcji z nagłówka, prawdziwą wartość, i numer metody w postaci: {{Code|return wartosc, numer_metody}}. === Opis zwracanych elementów przez funkcję zwracaną - różne metody zwracania, jak je wykorzystać === Ta funkcja zwracana ma w swojej definicji inną jeszcze funkcję z tym samym parametrem, co jego rodzic, i to jest za każdym razem inna funkcja w zależności z jakim typem danych się posługujemy {{Code|frame}} i jakie podaliśmy parametry. Gdy warunkiem, gdy zmienna {{Code|frame}} jest tablicą, czyli te zmienne druga: {{Code|czy_frame_lub_parent}} (jeżeli funkcja jest uruchomiona w ramce w szablonie, jeżeli ma wartość {{Code|true}}, to ona wybiera raz parametr z: {{Code|frame.args[nazwa or 1]}}, a za innym razem z {{Code|pf.args[nazwa or 1]}}, gdzie {{Code|pf{{=}}frame:getParent()}}, tutaj jest zwracana wartość: {{Code|return wartosc,2}}). Czy trzecia: {{Code|czy_frame}} (która mówi, jeżeli funkcję uruchomiono w ramce, ale przy wartości prawdziwej tego pierwszego podanego parametru, czyli {{Code|true}}, wybierana jest zawsze wartość {{Code|frame.args[nazwa or 1]}}, w przeciwnym wypadku uruchamiana jest funkcja {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, tutaj zwracana jest wartość {{Code|return wartosc,1}}). Jeżeli wartością {{Code|frame}} jest wartość nietablicowa, ale niebędącą wartością {{Code|nil}}, wtedy ustawiana jest funkcja, która tylko za pierwszym razem zwraca nienilową wartość {{Code|return wartosc,0}}, a później zwraca wartość {{Code|return nil,0}}. Gdy wartością {{Code|frame}} jest {{Code|nil}}, to funkcja zawsze wraca tą wartość {{Code|return nil,0}}. Powyższy sposób działa również dobrze, gdy zdefiniujemy w parametrach funkcji fałszywą funkcję {{Code|frame.getParent}}. Gdy funkcja nie jest uruchamiana w ramce lub funkcja {{Code|frame.getParent}} nie jest zdefiniowana, to wtedy funkcja wchodzi zawsze w ten jej krok, jakby {{Code|czy_frame_lub_parent}} było {{Code|false}} według tego powyżej, to wtedy brana jest zmienna {{Code|czy_frame}}, i jaką wartość ona przyjmuje. === Nazwy alternatywne parametrów === Funkcję pisze się według sposobu, którą się wywołuje według: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame); local wartosc1=PobierzParametr("nazwa1") or PobierzParametr(1); local wartosc2=PobierzParametr("nazwa2") or PobierzParametr(2); local wartosc3=PobierzParametr("nazwa3") or PobierzParametr(3); </syntaxhighlight> Na wypadek wartości nietabelowej, tą wartość zapisuje się jako pierwszą w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a dla wartości tabelowych, jaka jest kolejność to jest obojętne, byle by to było sensowne. === Wywołania funkcji w ramce, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, z funkcją parametrów === Tę funkcję podobnie się wywołuje jak funkcję: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}. Wartością {{Code|frame}} nie musi być tablica ramki tablicy transportu, równie dobrze może być to dowolna tablica lub wartość nietablicowa. Weźmy ramkę, w której uruchamiamy funkcję ramki: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}} </syntaxhighlight> === Przykłady wykorzystania funkcji === ; Przykład pierwszy{{dk}} Ona musi być wywołana z parametrem {{Parametr|wyspecjalizowana|tak}}, jako podpowiedź, że liczą się parametry ramki dziecka, a nie jego rodzica, czyli szablonu. Wtedy funkcję {{Code|Nazwa funkcji}} definiujemy: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame,true); ... end; </syntaxhighlight> Wtedy parametr {{Parametr|wyspecjalizowana|tak}} jest ignorowany, a przy wartości {{Code|false}} drugiego parametru funkcji, czyli wywołania: {{Code|local PobierzParametr{{=}}parametry_modul.PobierzParametr(frame,false);}}, już nie, ale nie zawsze. W takim przypadku według powyższego przykładu raz jest brana wartość, jeżeli istnieje, z {{Code|frame.args}}, a jak ona nie istnieje, to wtedy z: {{Code|pf.args}}. ; Przykład drugi{{dk}} Weźmy inny przypadek: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame,false,true); ... end; </syntaxhighlight> Przy tym też parametr: {{Parametr|wyspecjalizowana|tak}}, jest ignorowany, wtedy jest zawsze wybierana do rozważań tablica: {{Code|frame.args}}. ; Przykład trzeci{{dk}} Znów w innym przypadku, gdzie parametr: {{Parametr|wyspecjalizowana|tak}}, jest zawsze rozważany w naszym wypadku: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame,false,false); ... end; </syntaxhighlight> To to wywołanie, wtedy dokładnie działa jak funkcja: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, a zwrócona funkcja: {{Code|PobierzParametr}} pobiera elementy z tak uzyskanej tablicy {{Code|args}} poprzez nią. === Przypadek nietablicowego charakteru parametrów funkcji === W przypadku, gdy {{Code|frame}} nie jest tablicą, wtedy parametry: {{Code|czy_frame_lub_parent}} i {{Code|czy_frame}}, są w takim przypadku zawsze ignorowane, ale muszą być ustawione na wypadek, gdyby do funkcji {{Code|Nazwa funkcji}} wsadzono tablicę, np. z ramki, tzn. tablicę ramki funkcji tablicy transportu. === Ogólny przypadek, często stosowany === Najprostszym często ogólnym przykładem, który prawie zawsze jest stosowany: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame); ... end; </syntaxhighlight> Wtedy parametr: {{Parametr|wyspecjalizowana|tak}}, jest prawie zawsze nieignorowany, ale nie zawsze. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 3pm2nnavbcry8nwbajbzuxemwinxrot 555752 555751 2026-09-11T20:20:45Z Persino 2851 /* Opis zwracanych elementów przez funkcję zwracaną - różne metody zwracania, jak je wykorzystać */ 555752 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} Są tutaj przedstawione funkcje parametrów. == {{Code|p.PobierzFrameEwentualnieParent}} == Argument tej funkcji {{Code|frame}} koniecznie musi być tablicą, w przypadku przeciwnym wywoła to błąd języka {{lpg|Lua}}, że z wartości nietabelowej chcemy wyliczyć jego nieistniejący element {{Code|getParent}}, który ma prawo nie być. Funkcja pobiera parametry ramki szablonu rodzica, a nie dziecka, a jeżeli w dziecku w ramce w wikikodzie w szablonie podamy specjalny parametr {{Parametr|wyspecjalizowana|tak}}, to wtedy ta funkcja ściąga parametry ramki. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobierzFrameEwentualnieParent(frame)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu. }} === Sterowanie funkcją === Tą funkcją można sterować ze strony ramki tym właśnie specjalnym parametrem o wartości niepustej, którą jest {{Parametr|wyspecjalizowana|tak}}. ==== Przykłady wykorzystania z parametrem sterującym ==== W ramce podajemy argumenty wraz z tym specjalnym parametrem: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}} </syntaxhighlight> To wtedy w kodzie w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} w module o nazwie {{Code|Nazwa modułu}}, piszemy: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzFrameEwentualnieParent(frame).args; .... end; </syntaxhighlight> To wtedy w kodzie ściągane parametry ramki dziecka. === Pobieranie oryginalnej tablicy === Tę funkcję można równie dobrze wykorzystać do zwykłych tabel: <syntaxhighlight lang="lua"> local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzFrameEwentualnieParent(tabela); </syntaxhighlight> === Możliwość tej samej funkcji uruchomioną w ramce lub z podaniem do niej pewnego zestawu parametrów w postaci tablicy === A w tym przypadku ta funkcja nic nie robi, tylko zmienna {{Code|args}} referencyjnie wskazuje na tablicę {{Code|tablica}}. Ale można ją wykorzystać, gdy by funkcja {{Code|Nazwa funkcji}}, była uruchomiona ze zwykłą tablicą, ale z możliwością, że to może być tablicą ramki {{Code|frame}} tablicy transportu, np.: <syntaxhighlight lang="lua"> --- Pierwsza możliwość; local wartosc1=p["Nazwa funkcji"](frame); -- Druga możliwość local wartosc2=p["Nazwa funkcji"]{["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; </syntaxhighlight> === Niedogodności stosowania z funkcji === Dla obu jest taka niedogodność, że jedynie jest taka nieprawidłowość, że w przypadku parametru tablicy ramki tablicy transportu należy podawać uzyskany element {{Code|args}}, a w przypadku zwykłej tablicy już nie, tą niedokodność rozwiązuje funkcja: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}. == {{Code|p.PobierzArgsParametry}} == Argument tej funkcji {{Code|frame}} koniecznie nie musi być tablicą, bo wtedy nie wywoła to błędu języka {{lpg|Lua}}, że z wartości nietabelowej chcemy wyliczyć jego niepusty element {{Code|getParent}}, bo przedtem sprawdzana jest w tej funkcji, czy jest to tablica. W definicji tej funkcji zmienna uzyskana z funkcji: {{Code|{{sr|#p.PobierzFrameEwentualnieParent(frame)|p=Parametry}}}}, a jeśli jej składowa {{Code|args}} jest tablicą, to jest właśnie ona zwracana, a jeśli istnieje, ale nie jest tablicą, lub ona nie istnieje, to wtedy brana jest właśnie wartość tablicowa {{Code|frame}}, jeśli jest ona taka, a gdy nie, to wtedy z tej funkcji tutaj nie korzystamy. Funkcja pobiera parametry ramki szablonu rodzica, a nie dziecka, a jeżeli w dziecku w ramce w wikikodzie w szablonie podamy specjalny parametr {{Parametr|wyspecjalizowana|tak}}, to wtedy ta funkcja ściąga parametry ramki. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobierzArgsParametry(frame, czy_nie_tablica_jako_tablica)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica transportu ramki. | 2 = {{Code|czy_nie_tablica_jako_tablica}} | _2 = Czy wartości nietablicowe umieszczać w jednoelemenowej tabeli. }} === Opis działania === Funkcja wykorzystuje wspomnianą powyżej funkcję do swojego działania, ona jest wtedy aktywowana, gdy zmienna {{Code|frame}} jest tablicą, i jest sprawdzane, czy ona posiada nazwany element o kluczu {{Code|args}}, i czy jest on tablicowy. Jeżeli wartością zmiennej {{Code|frame}} nie jest tablica, ale nie przybiera wartości {{Code|nil}}, to ona jest umieszczana w tablicy, jeżeli zmiennej {{Code|czy_nie_tablica_jako_tablica}} przydzielimy wartość {{Code|true}}, w przeciwnym wypadku zwracana jest ona w postaci niezmienionej, a jeżeli wartość tej zmiennej nie istnieje, to zwracana jest zwykła tablica pusta. Tą funkcją można sterować ze strony ramki tym właśnie specjalnym parametrem o wartości niepustej. === Przykład wywołania funkcji z funkcją parametrów === W ramce podajemy argumenty wraz z tym specjalnym parametrem: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}} </syntaxhighlight> ==== Użycie funkcji parametrów ==== To wtedy w kodzie w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} w module o nazwie {{Code|Nazwa modułu}}, piszemy: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(frame); .... end; </syntaxhighlight> To wtedy w kodzie ściągane parametry ramki dziecka. === Wykorzystanie fukcji w różnych sytuacjach === ; Przypadek pierwszy{{dk}} Tę funkcję można równie dobrze wykorzystać do zwykłych tabel: <syntaxhighlight lang="lua"> local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(tabela); </syntaxhighlight> ; Drugi przypadek{{dk}} A w tym przypadku ta funkcja nic nie robi, tylko zmienna {{Code|args}} referencyjnie wskazuje na tablicę {{Code|tablica}}. Ale można ją wykorzystać, gdyby funkcja {{Code|Nazwa funkcji}}, była uruchomiona ze zwykłą tablicą, ale z możliwością, że to może być tablicą ramki {{Code|frame}} tablicy transportu, np.: <syntaxhighlight lang="lua"> --- Pierwsza możliwość; local wartosc1=p["Nazwa funkcji"](frame); -- Druga możliwość local wartosc2=p["Nazwa funkcji"]{["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; </syntaxhighlight> === Usunięcie niedogodności === Dla obu tych przypadków nie ma żadnej niedogodności, jak to występowała w {{Code|{{sr|#p.PobierzFrameEwentualnieParent(frame)|p=Parametry}}}}. === Parametr funkcji nietablicowy === Jeśliby do funkcji tablicy transportu dać wartość równą nie tablicy, to wtedy równoważnie możemy napisać: <syntaxhighlight lang="lua"> local wartosc="wartość"; local wynik=p["Nazwa funkcji"](wartosc); </syntaxhighlight> to wtedy definicję tej funkcji piszemy: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(frame,true); local wartosc=args[1]; end; </syntaxhighlight> lub równoważnie możemy zapisać: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); local wartosc=parametry_modul.PobierzArgsParametry(frame); end; </syntaxhighlight> === Brak parametrów funkcji === A jeżeli nie wsadziliśmy żadnej wartości do funkcji ramki tablicy transportu lub tą wartością jest {{Code|nil}}, wtedy: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"](); </syntaxhighlight> wtedy definicja tej funkcji wygląda: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); -- Zmienna: args, wskazuje na wartość, którą jest tablicą pustą, tzn. w tej tablicy nie ma wcale elementów; local args=parametry_modul.PobierzArgsParametry(frame); end; </syntaxhighlight> === Zmienna {{Code|args}} - alternatywny przypadek dla wartości tablicowych niż te bez drugiego parametru === Widzimy, że wtedy zmienna {{Code|args}} jest normalną, niekoniecznie niepusta, tablicą, i nie musimy wtedy wcale pisać drugiego parametru w tej fubkcji, bo wtedy wychodzi w tym przypadku na to samo: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(frame,true); </syntaxhighlight> === Różnica drugiego parametru w przypadku wartości nietablicowych === Argument drugi w {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, który w naszym przypadku musi mieć wartość {{Code|true}}, a wtedy jest jedynie sens, gdy {{Code|frame}} nie jest tablicą, i gdy chcemy tą wartość umieścić w tablicy, a nie powtórzyć wartość, tzn. chcemy napisać: {{Code|{{(}}frame,{{)}}}}, w przeciwnym wypadku musilibyśmy napisać coś w rodzaju, zamiast tak spreparowanej tablicy: {{Code|frame}}, czyli: <syntaxhighlight lang="lua"> -- Pierwszy przypadek, gdy frame jest wartością nietablicową; local parametry_modul=require("Module:Parametry"); ... -- Zwracana wartość: args, to nic innego niż: {frame,}; local args=parametry_modul.PobierzArgsParametry(frame,true); ... -- Zwracana wartość: args, to nic innego niż: frame, a nie {frame,}, jak poprzednio; local args=parametry_modul.PobierzArgsParametry(frame); </syntaxhighlight> == {{Code|p.PobierzParametryRamki}} == Funkcja służy do ustawienia pewnych domyślnych dwóch pewnych funkcji służących do pobieranie danych z tabelki z pierwszej tej funkcji: * Jeżeli ona posiada klucz o wartości {{Code|args}}, ** to zwracana jest ta właśnie tablica jako argument pierwszej tej funkcji, jeżeli jest w ogóle tablicą, ** w przeciwnym wypadku zwracana jest ta oryginalna tablica, też jako argument tej funkcji, * w przeciwnym dalszym wypadku zwracana jest zwracana wartość ta, jako argument tej drugiej funkcji, która zwraca prawdziwą wartość z argumentu tylko za pierwszym razem, z tej funkcji, za następnym i dalszym razem {{Code|nil}}. Z tak utworzonej ogólnie większej funkcji wykorzystywana jest w budowie omawianej funkcji, która jest zwracana przez omawianą funkcję, która względem jego budowy wywołuje raz pierwszą albo drugą poprzednią wspomnianą funkcję zależną od rodzaju zmiennej {{Code|frame}}, która może być tabelką, ale nie musi być. Ta funkcja zwracana przez funkcję w nagłówku przyjmuje argument, która jest kluczem do tych wspomnianych, może że, * tabel (dokładnie, która ta może tabelka to zależy od formatu tej naszej rozważanej zmiennej), * a jeżeli to nie tabelka, co jest zwracane, to już zostało powiedziane. Definicja skrótowa tej funkcji jest: <syntaxhighlight lang="lua"> function p.PobierzParametryRamki(frame)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu. }} Weźmy ramkę sformułowaną w wikikodzie jako dziecko w szablonie rodzicu: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5}} </syntaxhighlight> === Funkcje, z funkcją parametrów, z tablicą ramki lub one z podtablicą {{Code|args}} === To wtedy tablica ramki tablicy transportu posiada właśnie {{Code|frame}}, która jest tablicą, i na pewno posiada tablicę o nazwie {{Code|args}}, to wtedy tę funkcję wywołaną w ramce, która wywołuje funkcję w nagłówku, formułujemy: <syntaxhighlight lang="lua"> local p={}; local p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametryRamki=parametry_modul.PobierzParametryRamki(frame); ... end; </syntaxhighlight> ==== Przykład wywołania funkcji z funkcją parametrów z tablicą {{Code|args}} ==== Równie dobrze funkcję z ramki można wywołać w sposób, co wtedy ta funkcja też zostanie wywołana pozytywnie: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"]{args={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}}; </syntaxhighlight> W tej funkcji nie trzeba definiować funkcji fałszywej {{Code|getParent}}, w postaci: {{Code|getParent{{=}}function()end}}. Widzimi, że ta tablica posiada nazwę zmiennej tablicowej o nazwie {{Code|args}}, ale ona nie jest tablicą ramki tablicy transportu, ale tą tablicę możemy bezposrednio wsadzić w tą główną tablicę w samym argumencie funkcji. ==== Przykład wywołania z tablicą bez podtablicy {{Code|args}} ==== Równie dobrze możemy wywołać tę funkcję zdefiniowaną naszą w jakimś module w sposób: <syntaxhighlight lang="lua"> local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; local wynik=p["Nazwa funkcji"]{tabela); </syntaxhighlight> też ta funkcja prawidłowo się wywoła. W tym przypadku, jak i w przypadkach powyżej, wyniki uzyskuje się w następującym wywołaniach: <syntaxhighlight lang="lua"> --- Zmienna: wartosc1, przyjmuje wartość: "wartość1"; local wartosc1=PobierzParametryRamki("nazwa1"); --- Zmienna: wartosc2, przyjmuje wartość: "wartość2"; local wartosc2=PobierzParametryRamki("nazwa2"); --- Zmienna: wartosc3, przyjmuje wartość: "wartość3"; local wartosc3=PobierzParametryRamki(1); </syntaxhighlight> ==== Przykład wywołania funkcji z wartością nietablicową ==== W innym przypadku wywołań funkcji ramki jest wsadzenie do niej zwykłego nietablicowego elementu, może być też to wartość: {{Code|nil}}. A to wywołanie jest: <syntaxhighlight lang="lua"> local wartosc="wartość"; --Zmienna: wartosc, nie jest w tym przypadku tablicą; local wynik=p["Nazwa funkcji"](wartosc); </syntaxhighlight> === Wywołania funkcji parametrów bez argumentów - wiele kolejnych wywołań jednocześnie === Wtedy w tej ramce w celu uzyskania, jakikolwiek wartości jest przykład wywołania tej funkcji zwracanej przez funkcję w ramce z argumentem pustym. <syntaxhighlight lang="lua"> -- Zmienna: wartość1, przyjmuje wartość: "wartość"; Jeżeli ona, przyjmuje wartość: nil, to wywołanie rzuci: nil, i za każdym następny razem; local wartosc1=PobierzParametryRamki(); -- Zmienna: wartość2, przyjmuje wartość: nil; local wartosc2=PobierzParametryRamki(); </syntaxhighlight> W wywołaniach powinno dbać się o właściwą kolejność wywołań, bo argumentem funkcji z tablicy transportu może być zwykła tablicowa wartość. Najpierw uzyskujemy wartości nietablicowe, a później tablicowe, na wypadek niewiadomej {{Code|frame}} jakiego typu ma być wartość. === Dwa przypadki, parametr w tablicy, lub wartość nietablicowa funkcji === Też ta zmienna może istnieć pod kilkoma możliwymi kluczami, lub tą zmienną może być jedyny argument funkcji, która jest nietablicową wartością, wtedy ją się wywołuje jako dla przypadku, gdy parametr jest nietablicowy lub jest pod kluczem {{Code|tekst}}: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local tekst=parametry_modul.PobierzParametryRamki(frame)("tekst"); </syntaxhighlight> === Przypadek, gdy parametr funkcji nie jest tablicą === Lub chcemy tę funkcję wywołać bezparametrowo, gdy chcemy, by {{Code|frame}} nie była tablicą: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local tekst=parametry_modul.PobierzParametryRamki(frame)(); </syntaxhighlight> === Omówienie przypadku istnienia tego samego wariantu zmiennej raz podtablicą, a raz jako zmienna nietablicowa === * Wtedy ta zmienna w przedostatnim przykładzie jest pod wartością {{Code|tekst}}, gdy wartość {{Code|frame}} jest tablicą, * lub może być jedyną wartością, którą jest {{Code|frame}}, jako zmienna nietablicowa, wtedy ta zmienna też jest pod {{Code|tekst}}, ** ta funkcja uzyskana z: {{Code|{{sr|#p.PobierzParametryRamki(frame)|p=Parametry}}}}, wtedy może być wywołana tylko raz z nienilową wartością zwracaną, następnym razem zwraca wartość {{Code|nil}}, wtedy to dotyczy przedostatniego i ostatniego przykładu. === Jakma liczyć element funkcji w przypadku różnych jej parametrów === Jeżeli {{Code|frame}} jest nietablicowa, to wtedy wartość {{Code|tekst}} jest taka sama, co {{Code|frame}}. A jeżeli jest tablicą, to ta wartością jest {{Code|frame.args["tekst"]}}, lub gdy {{Code|args}} nie istnieje, lub istnieje, ale jest nietablicowa, to wtedy ta wartość jest {{Code|frame["tekst"]}}. === Parametry alternatywne funkcji - przykład wykorzystania funkcji parametrów === A gdy zmienne istnieją pod wieloma kluczami, lub gdy funkcję wywołano ze zmienną nietablicową, wtedy ogólnie możemy dla przykładu powiedzieć: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local PobierzParametryRamki=parametry_modul.PobierzParametryRamki(frame); local wartosc1=PobierzParametryRamki("nazwa1") or PobierzParametryRamki(1); local wartosc2=PobierzParametryRamki("nazwa2") or PobierzParametryRamki(2); local wartosc3=PobierzParametryRamki("nazwa3") or PobierzParametryRamki(3); </syntaxhighlight> * Wtedy ta zmienna jest pod kluczem, np.: {{Code|nazwa1}} lub {{Code|1}}, tablicy ramki {{Code|frame}} tablicy transportu, następne wywołania dla następnych kluczy też zrzucą pewne wartości, * lub jest ona zwykłą nietablicową wartością mogącą być równą, nawet {{Code|nil}}. ---- * Następne wywołania uzyskanej tak funkcji w przypadku, gdy {{Code|frame}} jest nietablicowy, rzucać będzie z samej definicji funkcji wartości {{Code|nil}}, czyli {{Code|wartosc2{{=}}wartosc3{{=}}nil}}, ale za to wartość {{Code|wartosc1}} nie musi być, ale może, wartością {{Code|nil}}, jeśli tą wartością jest, gdy {{Code|frame{{=}}nil}}, * w przeciwnym wypadku za pierwszym razem tej wartości nietablicowej uzyskamy wartość nie {{Code|nil}}, a za drugim i dalszym zawsze wartość {{Code|nil}}. == {{Code|p.PobierzElementNumerowanyZFrameLubTablicy}} == Definicja skrótowa funkcji jest z parametrem charakteryzującym pewien zestaw zmiennych {{Code|frame}}, * które nie musi być tablicą ramki tablicy transportu, tylko moze być innym parametrem, który jest tablicą parametrów podanych do funkcji, * nawet gdy parametrem podanym do funkcji, w której wykorzystujemy tą funkcję, jest jedyna zmienna będąca tablicą ramki. Ale z drugiej strony, tak nie musi być, może być to rozbudowany zestaw zmiennych, np. nazwanych i nienazwanych, którego wszystkie sposoby podawania łączymy jednym sposobem podawania. Mimo że parametry funkcji są parametrami nienazwanymi, mogą być one ponumerowane, ale zmienna w tablicy może przyjmować wartość tą samą na różne sposoby, raz w sposób nazwany, a za innym sposobem jako nienazwany. Ogólnie ostateczne parametry łączymy w dane parametry za pomocą jednego sposobu, tzn. za pomocą tej funkcji, i dla tak uzyskanej tablicy tworzymy funkcję zwracaną przez funkcję w nagłówku, która przyjmuje parametr, który jest kluczem tej uzyskanej tablicy. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobierzElementNumerowanyZFrameLubTablicy(frame)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu. }} Weźmy najprostszy sposób realizacji tej funkcji, w realizacji: {{Code|1-1, 2-2, 3-3}}, czyli ten opis jest zaraz poniżej. === Sposoby wywołania funkcji === ; Pierwszy sposób{{dk}} Weźmy funkcję, którą można wywoływać z wieloma parametrami, jak i w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, którą przykładowo piszemy jego wywołanie wewnątrz innej funkcji na pięć sposobów, czyli teraz pierwszy sposób z tylko z parametrem, więc tablicą ramki tablicy transportu wywodzącą się z ramki uruchomioną w wikikodzie w jakimś szablonie rodzicu: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"](frame); </syntaxhighlight> ; Drugi sposób{{dk}} A teraz drugi sposób, pisząc, bezpośrednio inaczej, formułując wywołanie tej funkcji, używając zmiennych tablicowych tablicy ramki, ale to nie jest tak naprawdę tablica ramka tablicy transportu, tylko parametr podany bezpośrednio do funkcji, tak jak się to robi w języku {{lpg|Lua}}, nie jak w przykładzie powyżej, więc: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"]{args={"wartość1","wartość2","wartość3",},}; </syntaxhighlight> ; Trzeci sposób{{dk}} Lub równoważnie, pisząc, nie używając zmiennej {{Code|args}}: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"]{"wartość1","wartość2","wartość3",}; </syntaxhighlight> ; Czwarty sposób{{dk}} Albo te parametry wsadzając do funkcji: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"]("wartość1","wartość2","wartość3"); </syntaxhighlight> ; Piąty spssób{{dk}} Można też wywołać to wszystko w ramce, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w wikikpdzie, wtedy wsadzając parametry do ramki: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|wartość1|wartość2|wartość3}} </syntaxhighlight> === Omówienie pobierania takich parmetrów === A jak połączyć wszystkie te pięć sposobów, posługiwać się tymi sposobami wewnątrz funkcji {{Code|Nazwa funkcji}} w sposób jednolity, jedynie wtedy należy skorzystać z funkcji z definiowaną w jakimś module w sposób: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(...) local tablica_prametrow_funkcji={...}; local parametry_modul=require("Module:Parametry"); local PobierzElementNumerowanyZFrameLubTablicy=parametry_modul.PobierzElementNumerowanyZFrameLubTablicy(tablica_prametrow_funkcji); ... end; </syntaxhighlight> Wtedy za pomocą zmiennej {{Code|PobierzElementNumerowanyZFrameLubTablicy}} dostaliśmy się do funkcji, która przyjmuje jedyny parametr, aby dostać się do elementów tablicy uzyskanej w wewnątrz tej funkcji, zdefiniowaną w tablicy {{Code|tablica_prametrow_funkcji}}, która jest nic innym jak zestawem parametrów w funkcji: {{Code|Nazwa funkcji}}. === Omówienie sposobów wykorzystywania, robienia tego samego, na różne warianty === * W pierwszym i drugim sposobem zmienną tą nazwijmy to jako {{Code|args}}, jest zmienną z podtablicy innego {{Code|args}} przekazanych jako parametr tablicy do funkcji, * w trzecim sposobie tą zmienną jest cała tablica, * a czwartym jest zestaw parametrów ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. A czym się różnią się te sposoby, a więc te sposoby można powiązać jedną tylko funkcją powiedzianą w nagłówku według przykładu podaną zaraz powyżej, wtedy możemy dostawać się do tych samych zmiennych o takich samych nazwach i wartościach, ale w różnych reprezentacjach na różne sposoby, wtedy można powiedzieć, że: <syntaxhighlight lang="lua"> args[1]="wartość1"; args[2]="wartość2"; args[3]="wartość3"; </syntaxhighlight> === Ogólny opis stosowania funkcji === Czyli w wyniku działania funkcji w nagłówku, otrzymamy funkcję zwracającą te wartości, która operuje na tej tablicy, której wynikiem jest zestaw zmiennych ponumerowanych, ogólnie nienazwanych, której wartości odpowiadają te podane w ramce ostatniej powyżej. Na podstawie tego wiemy, jak działa funkcja ta z nagłówka. === Nazwy alternatywne danych parametrów funkcji ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}} === Pisząc w inny sposób, można też wskazywać: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(...) local tablica_prametrow_funkcji={...}; local parametry_modul=require("Module:Parametry"); local PobierzElementNumerowanyZFrameLubTablicy=parametry_modul.PobierzElementNumerowanyZFrameLubTablicy(tablica_prametrow_funkcji); local wartosc1=PobierzElementNumerowanyZFrameLubTablicy("nazwa1") or PobierzElementNumerowanyZFrameLubTablicy(1); local wartosc2=PobierzElementNumerowanyZFrameLubTablicy("nazwa2") or PobierzElementNumerowanyZFrameLubTablicy(2); local wartosc3=PobierzElementNumerowanyZFrameLubTablicy("nazwa3") or PobierzElementNumerowanyZFrameLubTablicy(3); end; </syntaxhighlight> Zmienne w przykładzie o kluczach: {{Code|nazwa1}}, {{Code|nazwa2}} i {{Code|nazwa3}}, posiadające pewne swoje wartości, to są zmienne w tablicy {{Code|tablica_prametrow_funkcji}}, podane też jako zmienne, jako pewne argumenty tablicy, który są w tej funkcji zwracanej jako argument (parametr) funkcji: * jeżeli argumenty podano w postaci jednego parametru funkcji w postaci pewnej tablicy z np. elementami nazwanymi, * lub jako wiele argumentów w ramce, w wikikodzie, w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w pewnym szablonie, * a rozpatrując dalej elementy względem ich nazw, np. alternatywnych, to te numery mogą być kolejo do nazw ich odpowiedników nazwanych, które w przykładzie powyżej, mają pierwszeństwo, ale tak nie musi być, te parametry: {{Code|1}}, {{Code|2}} i {{Code|3}}, to jest numer parametru. To stosujemy, jeżeli argumenty do funkcji podano w postaci wielu jego parametrów. == {{Code|p.PobierzParametr}} == Ta funkcja zwraca znów inną funkcję, która ma jedyny parametr, mówiący jakiego parametru poszukujemy, co jest wyjaśnione w definicji funkcji z nagłówka, że ona zwraca tą właśnie funkcje. Definicja skrótowa dunkcji: <syntaxhighlight lang="lua"> function p.PobierzParametr(frame,czy_frame_lub_parent,czy_frame) ... return function(nazwa) return __pobierz_parametr_table_args(nazwa); end; end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu. | 2 = {{Code|czy_frame_lub_parent}} i {{Code|czy_frame}} | _2 = Parametry logiczne dodatkowe funkcji. }} === Wartość zwracana i jego druga wartośc w postaci numeru metody === Funkcja zwraca jednocześnie dwie wartości, ta zwrócona z funkcji z nagłówka, prawdziwą wartość, i numer metody w postaci: {{Code|return wartosc, numer_metody}}. === Opis zwracanych elementów przez funkcję zwracaną - różne metody zwracania, jak je wykorzystać === Ta funkcja zwracana ma w swojej definicji inną jeszcze funkcję z tym samym parametrem, co jego rodzic, i to jest za każdym razem inna funkcja w zależności z jakim typem danych się posługujemy {{Code|frame}} i jakie podaliśmy parametry. Gdy warunkiem, gdy zmienna {{Code|frame}} jest tablicą, czyli te zmienne druga: {{Code|czy_frame_lub_parent}} (jeżeli funkcja jest uruchomiona w ramce w szablonie, jeżeli ma wartość {{Code|true}}, to ona wybiera raz parametr z: {{Code|frame.args[nazwa or 1]}}, a za innym razem z {{Code|pf.args[nazwa or 1]}}, gdzie {{Code|pf{{=}}frame:getParent()}}, tutaj jest zwracana wartość: {{Code|return wartosc,2}}). Czy trzecia: {{Code|czy_frame}} (która mówi, jeżeli funkcję uruchomiono w ramce, ale przy wartości prawdziwej tego pierwszego podanego parametru, czyli {{Code|true}}, wybierana jest zawsze wartość {{Code|frame.args[nazwa or 1]}}, w przeciwnym wypadku uruchamiana jest funkcja {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, tutaj zwracana jest wartość {{Code|return wartosc,1}}). Jeżeli wartością {{Code|frame}} jest wartość nietablicowa, ale niebędącą wartością {{Code|nil}}, wtedy ustawiana jest funkcja, która tylko za pierwszym razem zwraca nienilową wartość {{Code|return wartosc,0}}, a później zwraca wartość {{Code|return nil,0}}. Gdy wartością {{Code|frame}} jest {{Code|nil}}, to funkcja zawsze wraca tą wartość {{Code|return nil,0}}. Powyższy sposób działa również dobrze, gdy zdefiniujemy w parametrach funkcji fałszywą funkcję {{Code|frame.getParent}}. Gdy funkcja nie jest uruchamiana w ramce lub funkcja {{Code|frame.getParent}} nie jest zdefiniowana, to wtedy funkcja wchodzi zawsze w ten jej krok, jakby {{Code|czy_frame_lub_parent}} było {{Code|false}} według tego powyżej, to wtedy brana jest zmienna {{Code|czy_frame}}, i jaką wartość ona przyjmuje. === Nazwy alternatywne parametrów === Funkcję pisze się według sposobu, którą się wywołuje według: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame); local wartosc1=PobierzParametr("nazwa1") or PobierzParametr(1); local wartosc2=PobierzParametr("nazwa2") or PobierzParametr(2); local wartosc3=PobierzParametr("nazwa3") or PobierzParametr(3); </syntaxhighlight> Na wypadek wartości nietabelowej, tą wartość zapisuje się jako pierwszą w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a dla wartości tabelowych, jaka jest kolejność to jest obojętne, byle by to było sensowne. === Wywołania funkcji w ramce, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, z funkcją parametrów === Tę funkcję podobnie się wywołuje jak funkcję: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}. Wartością {{Code|frame}} nie musi być tablica ramki tablicy transportu, równie dobrze może być to dowolna tablica lub wartość nietablicowa. Weźmy ramkę, w której uruchamiamy funkcję ramki: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}} </syntaxhighlight> === Przykłady wykorzystania funkcji === ; Przykład pierwszy{{dk}} Ona musi być wywołana z parametrem {{Parametr|wyspecjalizowana|tak}}, jako podpowiedź, że liczą się parametry ramki dziecka, a nie jego rodzica, czyli szablonu. Wtedy funkcję {{Code|Nazwa funkcji}} definiujemy: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame,true); ... end; </syntaxhighlight> Wtedy parametr {{Parametr|wyspecjalizowana|tak}} jest ignorowany, a przy wartości {{Code|false}} drugiego parametru funkcji, czyli wywołania: {{Code|local PobierzParametr{{=}}parametry_modul.PobierzParametr(frame,false);}}, już nie, ale nie zawsze. W takim przypadku według powyższego przykładu raz jest brana wartość, jeżeli istnieje, z {{Code|frame.args}}, a jak ona nie istnieje, to wtedy z: {{Code|pf.args}}. ; Przykład drugi{{dk}} Weźmy inny przypadek: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame,false,true); ... end; </syntaxhighlight> Przy tym też parametr: {{Parametr|wyspecjalizowana|tak}}, jest ignorowany, wtedy jest zawsze wybierana do rozważań tablica: {{Code|frame.args}}. ; Przykład trzeci{{dk}} Znów w innym przypadku, gdzie parametr: {{Parametr|wyspecjalizowana|tak}}, jest zawsze rozważany w naszym wypadku: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame,false,false); ... end; </syntaxhighlight> To to wywołanie, wtedy dokładnie działa jak funkcja: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, a zwrócona funkcja: {{Code|PobierzParametr}} pobiera elementy z tak uzyskanej tablicy {{Code|args}} poprzez nią. === Przypadek nietablicowego charakteru parametrów funkcji === W przypadku, gdy {{Code|frame}} nie jest tablicą, wtedy parametry: {{Code|czy_frame_lub_parent}} i {{Code|czy_frame}}, są w takim przypadku zawsze ignorowane, ale muszą być ustawione na wypadek, gdyby do funkcji {{Code|Nazwa funkcji}} wsadzono tablicę, np. z ramki, tzn. tablicę ramki funkcji tablicy transportu. === Ogólny przypadek, często stosowany === Najprostszym często ogólnym przykładem, który prawie zawsze jest stosowany: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame); ... end; </syntaxhighlight> Wtedy parametr: {{Parametr|wyspecjalizowana|tak}}, jest prawie zawsze nieignorowany, ale nie zawsze. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> ke70kbv3rpf1r2r06pe4wl83j2ng6p9 555753 555752 2026-09-11T20:57:49Z Persino 2851 /* Opis zwracanych elementów przez funkcję zwracaną - różne metody zwracania, jak je wykorzystać */ 555753 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} Są tutaj przedstawione funkcje parametrów. == {{Code|p.PobierzFrameEwentualnieParent}} == Argument tej funkcji {{Code|frame}} koniecznie musi być tablicą, w przypadku przeciwnym wywoła to błąd języka {{lpg|Lua}}, że z wartości nietabelowej chcemy wyliczyć jego nieistniejący element {{Code|getParent}}, który ma prawo nie być. Funkcja pobiera parametry ramki szablonu rodzica, a nie dziecka, a jeżeli w dziecku w ramce w wikikodzie w szablonie podamy specjalny parametr {{Parametr|wyspecjalizowana|tak}}, to wtedy ta funkcja ściąga parametry ramki. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobierzFrameEwentualnieParent(frame)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu. }} === Sterowanie funkcją === Tą funkcją można sterować ze strony ramki tym właśnie specjalnym parametrem o wartości niepustej, którą jest {{Parametr|wyspecjalizowana|tak}}. ==== Przykłady wykorzystania z parametrem sterującym ==== W ramce podajemy argumenty wraz z tym specjalnym parametrem: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}} </syntaxhighlight> To wtedy w kodzie w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} w module o nazwie {{Code|Nazwa modułu}}, piszemy: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzFrameEwentualnieParent(frame).args; .... end; </syntaxhighlight> To wtedy w kodzie ściągane parametry ramki dziecka. === Pobieranie oryginalnej tablicy === Tę funkcję można równie dobrze wykorzystać do zwykłych tabel: <syntaxhighlight lang="lua"> local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzFrameEwentualnieParent(tabela); </syntaxhighlight> === Możliwość tej samej funkcji uruchomioną w ramce lub z podaniem do niej pewnego zestawu parametrów w postaci tablicy === A w tym przypadku ta funkcja nic nie robi, tylko zmienna {{Code|args}} referencyjnie wskazuje na tablicę {{Code|tablica}}. Ale można ją wykorzystać, gdy by funkcja {{Code|Nazwa funkcji}}, była uruchomiona ze zwykłą tablicą, ale z możliwością, że to może być tablicą ramki {{Code|frame}} tablicy transportu, np.: <syntaxhighlight lang="lua"> --- Pierwsza możliwość; local wartosc1=p["Nazwa funkcji"](frame); -- Druga możliwość local wartosc2=p["Nazwa funkcji"]{["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; </syntaxhighlight> === Niedogodności stosowania z funkcji === Dla obu jest taka niedogodność, że jedynie jest taka nieprawidłowość, że w przypadku parametru tablicy ramki tablicy transportu należy podawać uzyskany element {{Code|args}}, a w przypadku zwykłej tablicy już nie, tą niedokodność rozwiązuje funkcja: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}. == {{Code|p.PobierzArgsParametry}} == Argument tej funkcji {{Code|frame}} koniecznie nie musi być tablicą, bo wtedy nie wywoła to błędu języka {{lpg|Lua}}, że z wartości nietabelowej chcemy wyliczyć jego niepusty element {{Code|getParent}}, bo przedtem sprawdzana jest w tej funkcji, czy jest to tablica. W definicji tej funkcji zmienna uzyskana z funkcji: {{Code|{{sr|#p.PobierzFrameEwentualnieParent(frame)|p=Parametry}}}}, a jeśli jej składowa {{Code|args}} jest tablicą, to jest właśnie ona zwracana, a jeśli istnieje, ale nie jest tablicą, lub ona nie istnieje, to wtedy brana jest właśnie wartość tablicowa {{Code|frame}}, jeśli jest ona taka, a gdy nie, to wtedy z tej funkcji tutaj nie korzystamy. Funkcja pobiera parametry ramki szablonu rodzica, a nie dziecka, a jeżeli w dziecku w ramce w wikikodzie w szablonie podamy specjalny parametr {{Parametr|wyspecjalizowana|tak}}, to wtedy ta funkcja ściąga parametry ramki. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobierzArgsParametry(frame, czy_nie_tablica_jako_tablica)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica transportu ramki. | 2 = {{Code|czy_nie_tablica_jako_tablica}} | _2 = Czy wartości nietablicowe umieszczać w jednoelemenowej tabeli. }} === Opis działania === Funkcja wykorzystuje wspomnianą powyżej funkcję do swojego działania, ona jest wtedy aktywowana, gdy zmienna {{Code|frame}} jest tablicą, i jest sprawdzane, czy ona posiada nazwany element o kluczu {{Code|args}}, i czy jest on tablicowy. Jeżeli wartością zmiennej {{Code|frame}} nie jest tablica, ale nie przybiera wartości {{Code|nil}}, to ona jest umieszczana w tablicy, jeżeli zmiennej {{Code|czy_nie_tablica_jako_tablica}} przydzielimy wartość {{Code|true}}, w przeciwnym wypadku zwracana jest ona w postaci niezmienionej, a jeżeli wartość tej zmiennej nie istnieje, to zwracana jest zwykła tablica pusta. Tą funkcją można sterować ze strony ramki tym właśnie specjalnym parametrem o wartości niepustej. === Przykład wywołania funkcji z funkcją parametrów === W ramce podajemy argumenty wraz z tym specjalnym parametrem: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}} </syntaxhighlight> ==== Użycie funkcji parametrów ==== To wtedy w kodzie w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} w module o nazwie {{Code|Nazwa modułu}}, piszemy: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(frame); .... end; </syntaxhighlight> To wtedy w kodzie ściągane parametry ramki dziecka. === Wykorzystanie fukcji w różnych sytuacjach === ; Przypadek pierwszy{{dk}} Tę funkcję można równie dobrze wykorzystać do zwykłych tabel: <syntaxhighlight lang="lua"> local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(tabela); </syntaxhighlight> ; Drugi przypadek{{dk}} A w tym przypadku ta funkcja nic nie robi, tylko zmienna {{Code|args}} referencyjnie wskazuje na tablicę {{Code|tablica}}. Ale można ją wykorzystać, gdyby funkcja {{Code|Nazwa funkcji}}, była uruchomiona ze zwykłą tablicą, ale z możliwością, że to może być tablicą ramki {{Code|frame}} tablicy transportu, np.: <syntaxhighlight lang="lua"> --- Pierwsza możliwość; local wartosc1=p["Nazwa funkcji"](frame); -- Druga możliwość local wartosc2=p["Nazwa funkcji"]{["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; </syntaxhighlight> === Usunięcie niedogodności === Dla obu tych przypadków nie ma żadnej niedogodności, jak to występowała w {{Code|{{sr|#p.PobierzFrameEwentualnieParent(frame)|p=Parametry}}}}. === Parametr funkcji nietablicowy === Jeśliby do funkcji tablicy transportu dać wartość równą nie tablicy, to wtedy równoważnie możemy napisać: <syntaxhighlight lang="lua"> local wartosc="wartość"; local wynik=p["Nazwa funkcji"](wartosc); </syntaxhighlight> to wtedy definicję tej funkcji piszemy: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(frame,true); local wartosc=args[1]; end; </syntaxhighlight> lub równoważnie możemy zapisać: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); local wartosc=parametry_modul.PobierzArgsParametry(frame); end; </syntaxhighlight> === Brak parametrów funkcji === A jeżeli nie wsadziliśmy żadnej wartości do funkcji ramki tablicy transportu lub tą wartością jest {{Code|nil}}, wtedy: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"](); </syntaxhighlight> wtedy definicja tej funkcji wygląda: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); -- Zmienna: args, wskazuje na wartość, którą jest tablicą pustą, tzn. w tej tablicy nie ma wcale elementów; local args=parametry_modul.PobierzArgsParametry(frame); end; </syntaxhighlight> === Zmienna {{Code|args}} - alternatywny przypadek dla wartości tablicowych niż te bez drugiego parametru === Widzimy, że wtedy zmienna {{Code|args}} jest normalną, niekoniecznie niepusta, tablicą, i nie musimy wtedy wcale pisać drugiego parametru w tej fubkcji, bo wtedy wychodzi w tym przypadku na to samo: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(frame,true); </syntaxhighlight> === Różnica drugiego parametru w przypadku wartości nietablicowych === Argument drugi w {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, który w naszym przypadku musi mieć wartość {{Code|true}}, a wtedy jest jedynie sens, gdy {{Code|frame}} nie jest tablicą, i gdy chcemy tą wartość umieścić w tablicy, a nie powtórzyć wartość, tzn. chcemy napisać: {{Code|{{(}}frame,{{)}}}}, w przeciwnym wypadku musilibyśmy napisać coś w rodzaju, zamiast tak spreparowanej tablicy: {{Code|frame}}, czyli: <syntaxhighlight lang="lua"> -- Pierwszy przypadek, gdy frame jest wartością nietablicową; local parametry_modul=require("Module:Parametry"); ... -- Zwracana wartość: args, to nic innego niż: {frame,}; local args=parametry_modul.PobierzArgsParametry(frame,true); ... -- Zwracana wartość: args, to nic innego niż: frame, a nie {frame,}, jak poprzednio; local args=parametry_modul.PobierzArgsParametry(frame); </syntaxhighlight> == {{Code|p.PobierzParametryRamki}} == Funkcja służy do ustawienia pewnych domyślnych dwóch pewnych funkcji służących do pobieranie danych z tabelki z pierwszej tej funkcji: * Jeżeli ona posiada klucz o wartości {{Code|args}}, ** to zwracana jest ta właśnie tablica jako argument pierwszej tej funkcji, jeżeli jest w ogóle tablicą, ** w przeciwnym wypadku zwracana jest ta oryginalna tablica, też jako argument tej funkcji, * w przeciwnym dalszym wypadku zwracana jest zwracana wartość ta, jako argument tej drugiej funkcji, która zwraca prawdziwą wartość z argumentu tylko za pierwszym razem, z tej funkcji, za następnym i dalszym razem {{Code|nil}}. Z tak utworzonej ogólnie większej funkcji wykorzystywana jest w budowie omawianej funkcji, która jest zwracana przez omawianą funkcję, która względem jego budowy wywołuje raz pierwszą albo drugą poprzednią wspomnianą funkcję zależną od rodzaju zmiennej {{Code|frame}}, która może być tabelką, ale nie musi być. Ta funkcja zwracana przez funkcję w nagłówku przyjmuje argument, która jest kluczem do tych wspomnianych, może że, * tabel (dokładnie, która ta może tabelka to zależy od formatu tej naszej rozważanej zmiennej), * a jeżeli to nie tabelka, co jest zwracane, to już zostało powiedziane. Definicja skrótowa tej funkcji jest: <syntaxhighlight lang="lua"> function p.PobierzParametryRamki(frame)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu. }} Weźmy ramkę sformułowaną w wikikodzie jako dziecko w szablonie rodzicu: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5}} </syntaxhighlight> === Funkcje, z funkcją parametrów, z tablicą ramki lub one z podtablicą {{Code|args}} === To wtedy tablica ramki tablicy transportu posiada właśnie {{Code|frame}}, która jest tablicą, i na pewno posiada tablicę o nazwie {{Code|args}}, to wtedy tę funkcję wywołaną w ramce, która wywołuje funkcję w nagłówku, formułujemy: <syntaxhighlight lang="lua"> local p={}; local p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametryRamki=parametry_modul.PobierzParametryRamki(frame); ... end; </syntaxhighlight> ==== Przykład wywołania funkcji z funkcją parametrów z tablicą {{Code|args}} ==== Równie dobrze funkcję z ramki można wywołać w sposób, co wtedy ta funkcja też zostanie wywołana pozytywnie: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"]{args={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}}; </syntaxhighlight> W tej funkcji nie trzeba definiować funkcji fałszywej {{Code|getParent}}, w postaci: {{Code|getParent{{=}}function()end}}. Widzimi, że ta tablica posiada nazwę zmiennej tablicowej o nazwie {{Code|args}}, ale ona nie jest tablicą ramki tablicy transportu, ale tą tablicę możemy bezposrednio wsadzić w tą główną tablicę w samym argumencie funkcji. ==== Przykład wywołania z tablicą bez podtablicy {{Code|args}} ==== Równie dobrze możemy wywołać tę funkcję zdefiniowaną naszą w jakimś module w sposób: <syntaxhighlight lang="lua"> local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; local wynik=p["Nazwa funkcji"]{tabela); </syntaxhighlight> też ta funkcja prawidłowo się wywoła. W tym przypadku, jak i w przypadkach powyżej, wyniki uzyskuje się w następującym wywołaniach: <syntaxhighlight lang="lua"> --- Zmienna: wartosc1, przyjmuje wartość: "wartość1"; local wartosc1=PobierzParametryRamki("nazwa1"); --- Zmienna: wartosc2, przyjmuje wartość: "wartość2"; local wartosc2=PobierzParametryRamki("nazwa2"); --- Zmienna: wartosc3, przyjmuje wartość: "wartość3"; local wartosc3=PobierzParametryRamki(1); </syntaxhighlight> ==== Przykład wywołania funkcji z wartością nietablicową ==== W innym przypadku wywołań funkcji ramki jest wsadzenie do niej zwykłego nietablicowego elementu, może być też to wartość: {{Code|nil}}. A to wywołanie jest: <syntaxhighlight lang="lua"> local wartosc="wartość"; --Zmienna: wartosc, nie jest w tym przypadku tablicą; local wynik=p["Nazwa funkcji"](wartosc); </syntaxhighlight> === Wywołania funkcji parametrów bez argumentów - wiele kolejnych wywołań jednocześnie === Wtedy w tej ramce w celu uzyskania, jakikolwiek wartości jest przykład wywołania tej funkcji zwracanej przez funkcję w ramce z argumentem pustym. <syntaxhighlight lang="lua"> -- Zmienna: wartość1, przyjmuje wartość: "wartość"; Jeżeli ona, przyjmuje wartość: nil, to wywołanie rzuci: nil, i za każdym następny razem; local wartosc1=PobierzParametryRamki(); -- Zmienna: wartość2, przyjmuje wartość: nil; local wartosc2=PobierzParametryRamki(); </syntaxhighlight> W wywołaniach powinno dbać się o właściwą kolejność wywołań, bo argumentem funkcji z tablicy transportu może być zwykła tablicowa wartość. Najpierw uzyskujemy wartości nietablicowe, a później tablicowe, na wypadek niewiadomej {{Code|frame}} jakiego typu ma być wartość. === Dwa przypadki, parametr w tablicy, lub wartość nietablicowa funkcji === Też ta zmienna może istnieć pod kilkoma możliwymi kluczami, lub tą zmienną może być jedyny argument funkcji, która jest nietablicową wartością, wtedy ją się wywołuje jako dla przypadku, gdy parametr jest nietablicowy lub jest pod kluczem {{Code|tekst}}: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local tekst=parametry_modul.PobierzParametryRamki(frame)("tekst"); </syntaxhighlight> === Przypadek, gdy parametr funkcji nie jest tablicą === Lub chcemy tę funkcję wywołać bezparametrowo, gdy chcemy, by {{Code|frame}} nie była tablicą: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local tekst=parametry_modul.PobierzParametryRamki(frame)(); </syntaxhighlight> === Omówienie przypadku istnienia tego samego wariantu zmiennej raz podtablicą, a raz jako zmienna nietablicowa === * Wtedy ta zmienna w przedostatnim przykładzie jest pod wartością {{Code|tekst}}, gdy wartość {{Code|frame}} jest tablicą, * lub może być jedyną wartością, którą jest {{Code|frame}}, jako zmienna nietablicowa, wtedy ta zmienna też jest pod {{Code|tekst}}, ** ta funkcja uzyskana z: {{Code|{{sr|#p.PobierzParametryRamki(frame)|p=Parametry}}}}, wtedy może być wywołana tylko raz z nienilową wartością zwracaną, następnym razem zwraca wartość {{Code|nil}}, wtedy to dotyczy przedostatniego i ostatniego przykładu. === Jakma liczyć element funkcji w przypadku różnych jej parametrów === Jeżeli {{Code|frame}} jest nietablicowa, to wtedy wartość {{Code|tekst}} jest taka sama, co {{Code|frame}}. A jeżeli jest tablicą, to ta wartością jest {{Code|frame.args["tekst"]}}, lub gdy {{Code|args}} nie istnieje, lub istnieje, ale jest nietablicowa, to wtedy ta wartość jest {{Code|frame["tekst"]}}. === Parametry alternatywne funkcji - przykład wykorzystania funkcji parametrów === A gdy zmienne istnieją pod wieloma kluczami, lub gdy funkcję wywołano ze zmienną nietablicową, wtedy ogólnie możemy dla przykładu powiedzieć: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local PobierzParametryRamki=parametry_modul.PobierzParametryRamki(frame); local wartosc1=PobierzParametryRamki("nazwa1") or PobierzParametryRamki(1); local wartosc2=PobierzParametryRamki("nazwa2") or PobierzParametryRamki(2); local wartosc3=PobierzParametryRamki("nazwa3") or PobierzParametryRamki(3); </syntaxhighlight> * Wtedy ta zmienna jest pod kluczem, np.: {{Code|nazwa1}} lub {{Code|1}}, tablicy ramki {{Code|frame}} tablicy transportu, następne wywołania dla następnych kluczy też zrzucą pewne wartości, * lub jest ona zwykłą nietablicową wartością mogącą być równą, nawet {{Code|nil}}. ---- * Następne wywołania uzyskanej tak funkcji w przypadku, gdy {{Code|frame}} jest nietablicowy, rzucać będzie z samej definicji funkcji wartości {{Code|nil}}, czyli {{Code|wartosc2{{=}}wartosc3{{=}}nil}}, ale za to wartość {{Code|wartosc1}} nie musi być, ale może, wartością {{Code|nil}}, jeśli tą wartością jest, gdy {{Code|frame{{=}}nil}}, * w przeciwnym wypadku za pierwszym razem tej wartości nietablicowej uzyskamy wartość nie {{Code|nil}}, a za drugim i dalszym zawsze wartość {{Code|nil}}. == {{Code|p.PobierzElementNumerowanyZFrameLubTablicy}} == Definicja skrótowa funkcji jest z parametrem charakteryzującym pewien zestaw zmiennych {{Code|frame}}, * które nie musi być tablicą ramki tablicy transportu, tylko moze być innym parametrem, który jest tablicą parametrów podanych do funkcji, * nawet gdy parametrem podanym do funkcji, w której wykorzystujemy tą funkcję, jest jedyna zmienna będąca tablicą ramki. Ale z drugiej strony, tak nie musi być, może być to rozbudowany zestaw zmiennych, np. nazwanych i nienazwanych, którego wszystkie sposoby podawania łączymy jednym sposobem podawania. Mimo że parametry funkcji są parametrami nienazwanymi, mogą być one ponumerowane, ale zmienna w tablicy może przyjmować wartość tą samą na różne sposoby, raz w sposób nazwany, a za innym sposobem jako nienazwany. Ogólnie ostateczne parametry łączymy w dane parametry za pomocą jednego sposobu, tzn. za pomocą tej funkcji, i dla tak uzyskanej tablicy tworzymy funkcję zwracaną przez funkcję w nagłówku, która przyjmuje parametr, który jest kluczem tej uzyskanej tablicy. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobierzElementNumerowanyZFrameLubTablicy(frame)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu. }} Weźmy najprostszy sposób realizacji tej funkcji, w realizacji: {{Code|1-1, 2-2, 3-3}}, czyli ten opis jest zaraz poniżej. === Sposoby wywołania funkcji === ; Pierwszy sposób{{dk}} Weźmy funkcję, którą można wywoływać z wieloma parametrami, jak i w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, którą przykładowo piszemy jego wywołanie wewnątrz innej funkcji na pięć sposobów, czyli teraz pierwszy sposób z tylko z parametrem, więc tablicą ramki tablicy transportu wywodzącą się z ramki uruchomioną w wikikodzie w jakimś szablonie rodzicu: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"](frame); </syntaxhighlight> ; Drugi sposób{{dk}} A teraz drugi sposób, pisząc, bezpośrednio inaczej, formułując wywołanie tej funkcji, używając zmiennych tablicowych tablicy ramki, ale to nie jest tak naprawdę tablica ramka tablicy transportu, tylko parametr podany bezpośrednio do funkcji, tak jak się to robi w języku {{lpg|Lua}}, nie jak w przykładzie powyżej, więc: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"]{args={"wartość1","wartość2","wartość3",},}; </syntaxhighlight> ; Trzeci sposób{{dk}} Lub równoważnie, pisząc, nie używając zmiennej {{Code|args}}: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"]{"wartość1","wartość2","wartość3",}; </syntaxhighlight> ; Czwarty sposób{{dk}} Albo te parametry wsadzając do funkcji: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"]("wartość1","wartość2","wartość3"); </syntaxhighlight> ; Piąty spssób{{dk}} Można też wywołać to wszystko w ramce, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w wikikpdzie, wtedy wsadzając parametry do ramki: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|wartość1|wartość2|wartość3}} </syntaxhighlight> === Omówienie pobierania takich parmetrów === A jak połączyć wszystkie te pięć sposobów, posługiwać się tymi sposobami wewnątrz funkcji {{Code|Nazwa funkcji}} w sposób jednolity, jedynie wtedy należy skorzystać z funkcji z definiowaną w jakimś module w sposób: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(...) local tablica_prametrow_funkcji={...}; local parametry_modul=require("Module:Parametry"); local PobierzElementNumerowanyZFrameLubTablicy=parametry_modul.PobierzElementNumerowanyZFrameLubTablicy(tablica_prametrow_funkcji); ... end; </syntaxhighlight> Wtedy za pomocą zmiennej {{Code|PobierzElementNumerowanyZFrameLubTablicy}} dostaliśmy się do funkcji, która przyjmuje jedyny parametr, aby dostać się do elementów tablicy uzyskanej w wewnątrz tej funkcji, zdefiniowaną w tablicy {{Code|tablica_prametrow_funkcji}}, która jest nic innym jak zestawem parametrów w funkcji: {{Code|Nazwa funkcji}}. === Omówienie sposobów wykorzystywania, robienia tego samego, na różne warianty === * W pierwszym i drugim sposobem zmienną tą nazwijmy to jako {{Code|args}}, jest zmienną z podtablicy innego {{Code|args}} przekazanych jako parametr tablicy do funkcji, * w trzecim sposobie tą zmienną jest cała tablica, * a czwartym jest zestaw parametrów ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. A czym się różnią się te sposoby, a więc te sposoby można powiązać jedną tylko funkcją powiedzianą w nagłówku według przykładu podaną zaraz powyżej, wtedy możemy dostawać się do tych samych zmiennych o takich samych nazwach i wartościach, ale w różnych reprezentacjach na różne sposoby, wtedy można powiedzieć, że: <syntaxhighlight lang="lua"> args[1]="wartość1"; args[2]="wartość2"; args[3]="wartość3"; </syntaxhighlight> === Ogólny opis stosowania funkcji === Czyli w wyniku działania funkcji w nagłówku, otrzymamy funkcję zwracającą te wartości, która operuje na tej tablicy, której wynikiem jest zestaw zmiennych ponumerowanych, ogólnie nienazwanych, której wartości odpowiadają te podane w ramce ostatniej powyżej. Na podstawie tego wiemy, jak działa funkcja ta z nagłówka. === Nazwy alternatywne danych parametrów funkcji ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}} === Pisząc w inny sposób, można też wskazywać: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(...) local tablica_prametrow_funkcji={...}; local parametry_modul=require("Module:Parametry"); local PobierzElementNumerowanyZFrameLubTablicy=parametry_modul.PobierzElementNumerowanyZFrameLubTablicy(tablica_prametrow_funkcji); local wartosc1=PobierzElementNumerowanyZFrameLubTablicy("nazwa1") or PobierzElementNumerowanyZFrameLubTablicy(1); local wartosc2=PobierzElementNumerowanyZFrameLubTablicy("nazwa2") or PobierzElementNumerowanyZFrameLubTablicy(2); local wartosc3=PobierzElementNumerowanyZFrameLubTablicy("nazwa3") or PobierzElementNumerowanyZFrameLubTablicy(3); end; </syntaxhighlight> Zmienne w przykładzie o kluczach: {{Code|nazwa1}}, {{Code|nazwa2}} i {{Code|nazwa3}}, posiadające pewne swoje wartości, to są zmienne w tablicy {{Code|tablica_prametrow_funkcji}}, podane też jako zmienne, jako pewne argumenty tablicy, który są w tej funkcji zwracanej jako argument (parametr) funkcji: * jeżeli argumenty podano w postaci jednego parametru funkcji w postaci pewnej tablicy z np. elementami nazwanymi, * lub jako wiele argumentów w ramce, w wikikodzie, w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w pewnym szablonie, * a rozpatrując dalej elementy względem ich nazw, np. alternatywnych, to te numery mogą być kolejo do nazw ich odpowiedników nazwanych, które w przykładzie powyżej, mają pierwszeństwo, ale tak nie musi być, te parametry: {{Code|1}}, {{Code|2}} i {{Code|3}}, to jest numer parametru. To stosujemy, jeżeli argumenty do funkcji podano w postaci wielu jego parametrów. == {{Code|p.PobierzParametr}} == Ta funkcja zwraca znów inną funkcję, która ma jedyny parametr, mówiący jakiego parametru poszukujemy, co jest wyjaśnione w definicji funkcji z nagłówka, że ona zwraca tą właśnie funkcje. Definicja skrótowa dunkcji: <syntaxhighlight lang="lua"> function p.PobierzParametr(frame,czy_frame_lub_parent,czy_frame) ... return function(nazwa) return __pobierz_parametr_table_args(nazwa); end; end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu. | 2 = {{Code|czy_frame_lub_parent}} i {{Code|czy_frame}} | _2 = Parametry logiczne dodatkowe funkcji. }} === Wartość zwracana i jego druga wartośc w postaci numeru metody === Funkcja zwraca jednocześnie dwie wartości, ta zwrócona z funkcji z nagłówka, prawdziwą wartość, i numer metody w postaci: {{Code|return wartosc, numer_metody}}. === Opis zwracanych elementów przez funkcję zwracaną - różne metody zwracania, jak je wykorzystać === Ta funkcja zwracana ma w swojej definicji jeszcze inną funkcję, wykorzystaną w nim. To jest za każdym razem inna funkcja w zależności z jakim typem danych się posługujemy {{Code|frame}}, i jakie podaliśmy parametry, tzn. czy ona jest tablicą. ==== Gdy funkcja ramki {{Code|pf.getParent}} istnieje lub posiada jego fałszywą definicję ==== Gdy warunkiem, gdy zmienna {{Code|frame}} jest tablicą, czyli te zmienne druga: {{Code|czy_frame_lub_parent}} (jeżeli funkcja jest uruchomiona w ramce w szablonie, jeżeli ma wartość {{Code|true}}, to ona wybiera raz parametr z: {{Code|frame.args[nazwa or 1]}}, a za innym razem z {{Code|pf.args[nazwa or 1]}}, gdzie {{Code|pf{{=}}frame:getParent()}}, tutaj jest zwracana wartość: {{Code|return wartosc,2}}). ==== Gdy funkcja ramki istnieje, i gdy: {{Code|czy_frame_lub_parent}}, jest fałszywe, albo ta tablica nie jest ramką, nawet bez fałszywej definicji funkcji parametrów rodzica ==== Czy trzecia: {{Code|czy_frame}} (która mówi, jeżeli funkcję uruchomiono w ramce, ale przy wartości prawdziwej tego pierwszego podanego parametru, czyli {{Code|true}}, wybierana jest zawsze wartość {{Code|frame.args[nazwa or 1]}}, w przeciwnym wypadku uruchamiana jest funkcja {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, tutaj zwracana jest wartość {{Code|return wartosc,1}}). ==== Wartość nietablicowa funkcji parametrów ==== Jeżeli wartością {{Code|frame}} jest wartość nietablicowa, ale niebędącą wartością {{Code|nil}}, wtedy ustawiana jest funkcja, która tylko za pierwszym razem zwraca nienilową wartość {{Code|return wartosc,0}}, a później zwraca wartość {{Code|return nil,0}}. ==== Przypadek nietablicowa wartości, ale nilowej funkcji parametrów ==== Gdy wartością {{Code|frame}} jest {{Code|nil}}, to funkcja zawsze wraca tą wartość {{Code|return nil,0}}. ==== Fałszywa funkcja ramki parametrów rodzica ==== Ta funkcja parametrów działa dobrze, gdy zdefiniujemy w parametrach funkcji fałszywą funkcję {{Code|frame.getParent}}. ==== Brak definicji funkcji ramki parametrów rodzica ==== Gdy funkcja nie jest uruchamiana w ramce lub funkcja {{Code|frame.getParent}} nie jest zdefiniowana, to wtedy funkcja wchodzi zawsze w ten jej krok, jakby {{Code|czy_frame_lub_parent}} było {{Code|false}} według tego powyżej, to wtedy brana jest zmienna {{Code|czy_frame}}, i jaką wartość ona przyjmuje. === Nazwy alternatywne parametrów === Funkcję pisze się według sposobu, którą się wywołuje według: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame); local wartosc1=PobierzParametr("nazwa1") or PobierzParametr(1); local wartosc2=PobierzParametr("nazwa2") or PobierzParametr(2); local wartosc3=PobierzParametr("nazwa3") or PobierzParametr(3); </syntaxhighlight> Na wypadek wartości nietabelowej, tą wartość zapisuje się jako pierwszą w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a dla wartości tabelowych, jaka jest kolejność to jest obojętne, byle by to było sensowne. === Wywołania funkcji w ramce, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, z funkcją parametrów === Tę funkcję podobnie się wywołuje jak funkcję: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}. Wartością {{Code|frame}} nie musi być tablica ramki tablicy transportu, równie dobrze może być to dowolna tablica lub wartość nietablicowa. Weźmy ramkę, w której uruchamiamy funkcję ramki: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}} </syntaxhighlight> === Przykłady wykorzystania funkcji === ; Przykład pierwszy{{dk}} Ona musi być wywołana z parametrem {{Parametr|wyspecjalizowana|tak}}, jako podpowiedź, że liczą się parametry ramki dziecka, a nie jego rodzica, czyli szablonu. Wtedy funkcję {{Code|Nazwa funkcji}} definiujemy: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame,true); ... end; </syntaxhighlight> Wtedy parametr {{Parametr|wyspecjalizowana|tak}} jest ignorowany, a przy wartości {{Code|false}} drugiego parametru funkcji, czyli wywołania: {{Code|local PobierzParametr{{=}}parametry_modul.PobierzParametr(frame,false);}}, już nie, ale nie zawsze. W takim przypadku według powyższego przykładu raz jest brana wartość, jeżeli istnieje, z {{Code|frame.args}}, a jak ona nie istnieje, to wtedy z: {{Code|pf.args}}. ; Przykład drugi{{dk}} Weźmy inny przypadek: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame,false,true); ... end; </syntaxhighlight> Przy tym też parametr: {{Parametr|wyspecjalizowana|tak}}, jest ignorowany, wtedy jest zawsze wybierana do rozważań tablica: {{Code|frame.args}}. ; Przykład trzeci{{dk}} Znów w innym przypadku, gdzie parametr: {{Parametr|wyspecjalizowana|tak}}, jest zawsze rozważany w naszym wypadku: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame,false,false); ... end; </syntaxhighlight> To to wywołanie, wtedy dokładnie działa jak funkcja: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, a zwrócona funkcja: {{Code|PobierzParametr}} pobiera elementy z tak uzyskanej tablicy {{Code|args}} poprzez nią. === Przypadek nietablicowego charakteru parametrów funkcji === W przypadku, gdy {{Code|frame}} nie jest tablicą, wtedy parametry: {{Code|czy_frame_lub_parent}} i {{Code|czy_frame}}, są w takim przypadku zawsze ignorowane, ale muszą być ustawione na wypadek, gdyby do funkcji {{Code|Nazwa funkcji}} wsadzono tablicę, np. z ramki, tzn. tablicę ramki funkcji tablicy transportu. === Ogólny przypadek, często stosowany === Najprostszym często ogólnym przykładem, który prawie zawsze jest stosowany: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame); ... end; </syntaxhighlight> Wtedy parametr: {{Parametr|wyspecjalizowana|tak}}, jest prawie zawsze nieignorowany, ale nie zawsze. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> gw3e8ujimwxruccmqrzoo86t0vapvac 555754 555753 2026-09-11T20:59:51Z Persino 2851 /* Gdy funkcja ramki istnieje, i gdy: czy_frame_lub_parent, jest fałszywe, albo ta tablica nie jest ramką, nawet bez fałszywej definicji funkcji ramki parametrów rodzica */ 555754 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} Są tutaj przedstawione funkcje parametrów. == {{Code|p.PobierzFrameEwentualnieParent}} == Argument tej funkcji {{Code|frame}} koniecznie musi być tablicą, w przypadku przeciwnym wywoła to błąd języka {{lpg|Lua}}, że z wartości nietabelowej chcemy wyliczyć jego nieistniejący element {{Code|getParent}}, który ma prawo nie być. Funkcja pobiera parametry ramki szablonu rodzica, a nie dziecka, a jeżeli w dziecku w ramce w wikikodzie w szablonie podamy specjalny parametr {{Parametr|wyspecjalizowana|tak}}, to wtedy ta funkcja ściąga parametry ramki. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobierzFrameEwentualnieParent(frame)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu. }} === Sterowanie funkcją === Tą funkcją można sterować ze strony ramki tym właśnie specjalnym parametrem o wartości niepustej, którą jest {{Parametr|wyspecjalizowana|tak}}. ==== Przykłady wykorzystania z parametrem sterującym ==== W ramce podajemy argumenty wraz z tym specjalnym parametrem: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}} </syntaxhighlight> To wtedy w kodzie w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} w module o nazwie {{Code|Nazwa modułu}}, piszemy: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzFrameEwentualnieParent(frame).args; .... end; </syntaxhighlight> To wtedy w kodzie ściągane parametry ramki dziecka. === Pobieranie oryginalnej tablicy === Tę funkcję można równie dobrze wykorzystać do zwykłych tabel: <syntaxhighlight lang="lua"> local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzFrameEwentualnieParent(tabela); </syntaxhighlight> === Możliwość tej samej funkcji uruchomioną w ramce lub z podaniem do niej pewnego zestawu parametrów w postaci tablicy === A w tym przypadku ta funkcja nic nie robi, tylko zmienna {{Code|args}} referencyjnie wskazuje na tablicę {{Code|tablica}}. Ale można ją wykorzystać, gdy by funkcja {{Code|Nazwa funkcji}}, była uruchomiona ze zwykłą tablicą, ale z możliwością, że to może być tablicą ramki {{Code|frame}} tablicy transportu, np.: <syntaxhighlight lang="lua"> --- Pierwsza możliwość; local wartosc1=p["Nazwa funkcji"](frame); -- Druga możliwość local wartosc2=p["Nazwa funkcji"]{["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; </syntaxhighlight> === Niedogodności stosowania z funkcji === Dla obu jest taka niedogodność, że jedynie jest taka nieprawidłowość, że w przypadku parametru tablicy ramki tablicy transportu należy podawać uzyskany element {{Code|args}}, a w przypadku zwykłej tablicy już nie, tą niedokodność rozwiązuje funkcja: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}. == {{Code|p.PobierzArgsParametry}} == Argument tej funkcji {{Code|frame}} koniecznie nie musi być tablicą, bo wtedy nie wywoła to błędu języka {{lpg|Lua}}, że z wartości nietabelowej chcemy wyliczyć jego niepusty element {{Code|getParent}}, bo przedtem sprawdzana jest w tej funkcji, czy jest to tablica. W definicji tej funkcji zmienna uzyskana z funkcji: {{Code|{{sr|#p.PobierzFrameEwentualnieParent(frame)|p=Parametry}}}}, a jeśli jej składowa {{Code|args}} jest tablicą, to jest właśnie ona zwracana, a jeśli istnieje, ale nie jest tablicą, lub ona nie istnieje, to wtedy brana jest właśnie wartość tablicowa {{Code|frame}}, jeśli jest ona taka, a gdy nie, to wtedy z tej funkcji tutaj nie korzystamy. Funkcja pobiera parametry ramki szablonu rodzica, a nie dziecka, a jeżeli w dziecku w ramce w wikikodzie w szablonie podamy specjalny parametr {{Parametr|wyspecjalizowana|tak}}, to wtedy ta funkcja ściąga parametry ramki. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobierzArgsParametry(frame, czy_nie_tablica_jako_tablica)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica transportu ramki. | 2 = {{Code|czy_nie_tablica_jako_tablica}} | _2 = Czy wartości nietablicowe umieszczać w jednoelemenowej tabeli. }} === Opis działania === Funkcja wykorzystuje wspomnianą powyżej funkcję do swojego działania, ona jest wtedy aktywowana, gdy zmienna {{Code|frame}} jest tablicą, i jest sprawdzane, czy ona posiada nazwany element o kluczu {{Code|args}}, i czy jest on tablicowy. Jeżeli wartością zmiennej {{Code|frame}} nie jest tablica, ale nie przybiera wartości {{Code|nil}}, to ona jest umieszczana w tablicy, jeżeli zmiennej {{Code|czy_nie_tablica_jako_tablica}} przydzielimy wartość {{Code|true}}, w przeciwnym wypadku zwracana jest ona w postaci niezmienionej, a jeżeli wartość tej zmiennej nie istnieje, to zwracana jest zwykła tablica pusta. Tą funkcją można sterować ze strony ramki tym właśnie specjalnym parametrem o wartości niepustej. === Przykład wywołania funkcji z funkcją parametrów === W ramce podajemy argumenty wraz z tym specjalnym parametrem: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}} </syntaxhighlight> ==== Użycie funkcji parametrów ==== To wtedy w kodzie w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} w module o nazwie {{Code|Nazwa modułu}}, piszemy: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(frame); .... end; </syntaxhighlight> To wtedy w kodzie ściągane parametry ramki dziecka. === Wykorzystanie fukcji w różnych sytuacjach === ; Przypadek pierwszy{{dk}} Tę funkcję można równie dobrze wykorzystać do zwykłych tabel: <syntaxhighlight lang="lua"> local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(tabela); </syntaxhighlight> ; Drugi przypadek{{dk}} A w tym przypadku ta funkcja nic nie robi, tylko zmienna {{Code|args}} referencyjnie wskazuje na tablicę {{Code|tablica}}. Ale można ją wykorzystać, gdyby funkcja {{Code|Nazwa funkcji}}, była uruchomiona ze zwykłą tablicą, ale z możliwością, że to może być tablicą ramki {{Code|frame}} tablicy transportu, np.: <syntaxhighlight lang="lua"> --- Pierwsza możliwość; local wartosc1=p["Nazwa funkcji"](frame); -- Druga możliwość local wartosc2=p["Nazwa funkcji"]{["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; </syntaxhighlight> === Usunięcie niedogodności === Dla obu tych przypadków nie ma żadnej niedogodności, jak to występowała w {{Code|{{sr|#p.PobierzFrameEwentualnieParent(frame)|p=Parametry}}}}. === Parametr funkcji nietablicowy === Jeśliby do funkcji tablicy transportu dać wartość równą nie tablicy, to wtedy równoważnie możemy napisać: <syntaxhighlight lang="lua"> local wartosc="wartość"; local wynik=p["Nazwa funkcji"](wartosc); </syntaxhighlight> to wtedy definicję tej funkcji piszemy: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(frame,true); local wartosc=args[1]; end; </syntaxhighlight> lub równoważnie możemy zapisać: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); local wartosc=parametry_modul.PobierzArgsParametry(frame); end; </syntaxhighlight> === Brak parametrów funkcji === A jeżeli nie wsadziliśmy żadnej wartości do funkcji ramki tablicy transportu lub tą wartością jest {{Code|nil}}, wtedy: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"](); </syntaxhighlight> wtedy definicja tej funkcji wygląda: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); -- Zmienna: args, wskazuje na wartość, którą jest tablicą pustą, tzn. w tej tablicy nie ma wcale elementów; local args=parametry_modul.PobierzArgsParametry(frame); end; </syntaxhighlight> === Zmienna {{Code|args}} - alternatywny przypadek dla wartości tablicowych niż te bez drugiego parametru === Widzimy, że wtedy zmienna {{Code|args}} jest normalną, niekoniecznie niepusta, tablicą, i nie musimy wtedy wcale pisać drugiego parametru w tej fubkcji, bo wtedy wychodzi w tym przypadku na to samo: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(frame,true); </syntaxhighlight> === Różnica drugiego parametru w przypadku wartości nietablicowych === Argument drugi w {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, który w naszym przypadku musi mieć wartość {{Code|true}}, a wtedy jest jedynie sens, gdy {{Code|frame}} nie jest tablicą, i gdy chcemy tą wartość umieścić w tablicy, a nie powtórzyć wartość, tzn. chcemy napisać: {{Code|{{(}}frame,{{)}}}}, w przeciwnym wypadku musilibyśmy napisać coś w rodzaju, zamiast tak spreparowanej tablicy: {{Code|frame}}, czyli: <syntaxhighlight lang="lua"> -- Pierwszy przypadek, gdy frame jest wartością nietablicową; local parametry_modul=require("Module:Parametry"); ... -- Zwracana wartość: args, to nic innego niż: {frame,}; local args=parametry_modul.PobierzArgsParametry(frame,true); ... -- Zwracana wartość: args, to nic innego niż: frame, a nie {frame,}, jak poprzednio; local args=parametry_modul.PobierzArgsParametry(frame); </syntaxhighlight> == {{Code|p.PobierzParametryRamki}} == Funkcja służy do ustawienia pewnych domyślnych dwóch pewnych funkcji służących do pobieranie danych z tabelki z pierwszej tej funkcji: * Jeżeli ona posiada klucz o wartości {{Code|args}}, ** to zwracana jest ta właśnie tablica jako argument pierwszej tej funkcji, jeżeli jest w ogóle tablicą, ** w przeciwnym wypadku zwracana jest ta oryginalna tablica, też jako argument tej funkcji, * w przeciwnym dalszym wypadku zwracana jest zwracana wartość ta, jako argument tej drugiej funkcji, która zwraca prawdziwą wartość z argumentu tylko za pierwszym razem, z tej funkcji, za następnym i dalszym razem {{Code|nil}}. Z tak utworzonej ogólnie większej funkcji wykorzystywana jest w budowie omawianej funkcji, która jest zwracana przez omawianą funkcję, która względem jego budowy wywołuje raz pierwszą albo drugą poprzednią wspomnianą funkcję zależną od rodzaju zmiennej {{Code|frame}}, która może być tabelką, ale nie musi być. Ta funkcja zwracana przez funkcję w nagłówku przyjmuje argument, która jest kluczem do tych wspomnianych, może że, * tabel (dokładnie, która ta może tabelka to zależy od formatu tej naszej rozważanej zmiennej), * a jeżeli to nie tabelka, co jest zwracane, to już zostało powiedziane. Definicja skrótowa tej funkcji jest: <syntaxhighlight lang="lua"> function p.PobierzParametryRamki(frame)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu. }} Weźmy ramkę sformułowaną w wikikodzie jako dziecko w szablonie rodzicu: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5}} </syntaxhighlight> === Funkcje, z funkcją parametrów, z tablicą ramki lub one z podtablicą {{Code|args}} === To wtedy tablica ramki tablicy transportu posiada właśnie {{Code|frame}}, która jest tablicą, i na pewno posiada tablicę o nazwie {{Code|args}}, to wtedy tę funkcję wywołaną w ramce, która wywołuje funkcję w nagłówku, formułujemy: <syntaxhighlight lang="lua"> local p={}; local p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametryRamki=parametry_modul.PobierzParametryRamki(frame); ... end; </syntaxhighlight> ==== Przykład wywołania funkcji z funkcją parametrów z tablicą {{Code|args}} ==== Równie dobrze funkcję z ramki można wywołać w sposób, co wtedy ta funkcja też zostanie wywołana pozytywnie: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"]{args={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}}; </syntaxhighlight> W tej funkcji nie trzeba definiować funkcji fałszywej {{Code|getParent}}, w postaci: {{Code|getParent{{=}}function()end}}. Widzimi, że ta tablica posiada nazwę zmiennej tablicowej o nazwie {{Code|args}}, ale ona nie jest tablicą ramki tablicy transportu, ale tą tablicę możemy bezposrednio wsadzić w tą główną tablicę w samym argumencie funkcji. ==== Przykład wywołania z tablicą bez podtablicy {{Code|args}} ==== Równie dobrze możemy wywołać tę funkcję zdefiniowaną naszą w jakimś module w sposób: <syntaxhighlight lang="lua"> local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; local wynik=p["Nazwa funkcji"]{tabela); </syntaxhighlight> też ta funkcja prawidłowo się wywoła. W tym przypadku, jak i w przypadkach powyżej, wyniki uzyskuje się w następującym wywołaniach: <syntaxhighlight lang="lua"> --- Zmienna: wartosc1, przyjmuje wartość: "wartość1"; local wartosc1=PobierzParametryRamki("nazwa1"); --- Zmienna: wartosc2, przyjmuje wartość: "wartość2"; local wartosc2=PobierzParametryRamki("nazwa2"); --- Zmienna: wartosc3, przyjmuje wartość: "wartość3"; local wartosc3=PobierzParametryRamki(1); </syntaxhighlight> ==== Przykład wywołania funkcji z wartością nietablicową ==== W innym przypadku wywołań funkcji ramki jest wsadzenie do niej zwykłego nietablicowego elementu, może być też to wartość: {{Code|nil}}. A to wywołanie jest: <syntaxhighlight lang="lua"> local wartosc="wartość"; --Zmienna: wartosc, nie jest w tym przypadku tablicą; local wynik=p["Nazwa funkcji"](wartosc); </syntaxhighlight> === Wywołania funkcji parametrów bez argumentów - wiele kolejnych wywołań jednocześnie === Wtedy w tej ramce w celu uzyskania, jakikolwiek wartości jest przykład wywołania tej funkcji zwracanej przez funkcję w ramce z argumentem pustym. <syntaxhighlight lang="lua"> -- Zmienna: wartość1, przyjmuje wartość: "wartość"; Jeżeli ona, przyjmuje wartość: nil, to wywołanie rzuci: nil, i za każdym następny razem; local wartosc1=PobierzParametryRamki(); -- Zmienna: wartość2, przyjmuje wartość: nil; local wartosc2=PobierzParametryRamki(); </syntaxhighlight> W wywołaniach powinno dbać się o właściwą kolejność wywołań, bo argumentem funkcji z tablicy transportu może być zwykła tablicowa wartość. Najpierw uzyskujemy wartości nietablicowe, a później tablicowe, na wypadek niewiadomej {{Code|frame}} jakiego typu ma być wartość. === Dwa przypadki, parametr w tablicy, lub wartość nietablicowa funkcji === Też ta zmienna może istnieć pod kilkoma możliwymi kluczami, lub tą zmienną może być jedyny argument funkcji, która jest nietablicową wartością, wtedy ją się wywołuje jako dla przypadku, gdy parametr jest nietablicowy lub jest pod kluczem {{Code|tekst}}: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local tekst=parametry_modul.PobierzParametryRamki(frame)("tekst"); </syntaxhighlight> === Przypadek, gdy parametr funkcji nie jest tablicą === Lub chcemy tę funkcję wywołać bezparametrowo, gdy chcemy, by {{Code|frame}} nie była tablicą: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local tekst=parametry_modul.PobierzParametryRamki(frame)(); </syntaxhighlight> === Omówienie przypadku istnienia tego samego wariantu zmiennej raz podtablicą, a raz jako zmienna nietablicowa === * Wtedy ta zmienna w przedostatnim przykładzie jest pod wartością {{Code|tekst}}, gdy wartość {{Code|frame}} jest tablicą, * lub może być jedyną wartością, którą jest {{Code|frame}}, jako zmienna nietablicowa, wtedy ta zmienna też jest pod {{Code|tekst}}, ** ta funkcja uzyskana z: {{Code|{{sr|#p.PobierzParametryRamki(frame)|p=Parametry}}}}, wtedy może być wywołana tylko raz z nienilową wartością zwracaną, następnym razem zwraca wartość {{Code|nil}}, wtedy to dotyczy przedostatniego i ostatniego przykładu. === Jakma liczyć element funkcji w przypadku różnych jej parametrów === Jeżeli {{Code|frame}} jest nietablicowa, to wtedy wartość {{Code|tekst}} jest taka sama, co {{Code|frame}}. A jeżeli jest tablicą, to ta wartością jest {{Code|frame.args["tekst"]}}, lub gdy {{Code|args}} nie istnieje, lub istnieje, ale jest nietablicowa, to wtedy ta wartość jest {{Code|frame["tekst"]}}. === Parametry alternatywne funkcji - przykład wykorzystania funkcji parametrów === A gdy zmienne istnieją pod wieloma kluczami, lub gdy funkcję wywołano ze zmienną nietablicową, wtedy ogólnie możemy dla przykładu powiedzieć: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local PobierzParametryRamki=parametry_modul.PobierzParametryRamki(frame); local wartosc1=PobierzParametryRamki("nazwa1") or PobierzParametryRamki(1); local wartosc2=PobierzParametryRamki("nazwa2") or PobierzParametryRamki(2); local wartosc3=PobierzParametryRamki("nazwa3") or PobierzParametryRamki(3); </syntaxhighlight> * Wtedy ta zmienna jest pod kluczem, np.: {{Code|nazwa1}} lub {{Code|1}}, tablicy ramki {{Code|frame}} tablicy transportu, następne wywołania dla następnych kluczy też zrzucą pewne wartości, * lub jest ona zwykłą nietablicową wartością mogącą być równą, nawet {{Code|nil}}. ---- * Następne wywołania uzyskanej tak funkcji w przypadku, gdy {{Code|frame}} jest nietablicowy, rzucać będzie z samej definicji funkcji wartości {{Code|nil}}, czyli {{Code|wartosc2{{=}}wartosc3{{=}}nil}}, ale za to wartość {{Code|wartosc1}} nie musi być, ale może, wartością {{Code|nil}}, jeśli tą wartością jest, gdy {{Code|frame{{=}}nil}}, * w przeciwnym wypadku za pierwszym razem tej wartości nietablicowej uzyskamy wartość nie {{Code|nil}}, a za drugim i dalszym zawsze wartość {{Code|nil}}. == {{Code|p.PobierzElementNumerowanyZFrameLubTablicy}} == Definicja skrótowa funkcji jest z parametrem charakteryzującym pewien zestaw zmiennych {{Code|frame}}, * które nie musi być tablicą ramki tablicy transportu, tylko moze być innym parametrem, który jest tablicą parametrów podanych do funkcji, * nawet gdy parametrem podanym do funkcji, w której wykorzystujemy tą funkcję, jest jedyna zmienna będąca tablicą ramki. Ale z drugiej strony, tak nie musi być, może być to rozbudowany zestaw zmiennych, np. nazwanych i nienazwanych, którego wszystkie sposoby podawania łączymy jednym sposobem podawania. Mimo że parametry funkcji są parametrami nienazwanymi, mogą być one ponumerowane, ale zmienna w tablicy może przyjmować wartość tą samą na różne sposoby, raz w sposób nazwany, a za innym sposobem jako nienazwany. Ogólnie ostateczne parametry łączymy w dane parametry za pomocą jednego sposobu, tzn. za pomocą tej funkcji, i dla tak uzyskanej tablicy tworzymy funkcję zwracaną przez funkcję w nagłówku, która przyjmuje parametr, który jest kluczem tej uzyskanej tablicy. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobierzElementNumerowanyZFrameLubTablicy(frame)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu. }} Weźmy najprostszy sposób realizacji tej funkcji, w realizacji: {{Code|1-1, 2-2, 3-3}}, czyli ten opis jest zaraz poniżej. === Sposoby wywołania funkcji === ; Pierwszy sposób{{dk}} Weźmy funkcję, którą można wywoływać z wieloma parametrami, jak i w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, którą przykładowo piszemy jego wywołanie wewnątrz innej funkcji na pięć sposobów, czyli teraz pierwszy sposób z tylko z parametrem, więc tablicą ramki tablicy transportu wywodzącą się z ramki uruchomioną w wikikodzie w jakimś szablonie rodzicu: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"](frame); </syntaxhighlight> ; Drugi sposób{{dk}} A teraz drugi sposób, pisząc, bezpośrednio inaczej, formułując wywołanie tej funkcji, używając zmiennych tablicowych tablicy ramki, ale to nie jest tak naprawdę tablica ramka tablicy transportu, tylko parametr podany bezpośrednio do funkcji, tak jak się to robi w języku {{lpg|Lua}}, nie jak w przykładzie powyżej, więc: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"]{args={"wartość1","wartość2","wartość3",},}; </syntaxhighlight> ; Trzeci sposób{{dk}} Lub równoważnie, pisząc, nie używając zmiennej {{Code|args}}: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"]{"wartość1","wartość2","wartość3",}; </syntaxhighlight> ; Czwarty sposób{{dk}} Albo te parametry wsadzając do funkcji: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"]("wartość1","wartość2","wartość3"); </syntaxhighlight> ; Piąty spssób{{dk}} Można też wywołać to wszystko w ramce, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w wikikpdzie, wtedy wsadzając parametry do ramki: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|wartość1|wartość2|wartość3}} </syntaxhighlight> === Omówienie pobierania takich parmetrów === A jak połączyć wszystkie te pięć sposobów, posługiwać się tymi sposobami wewnątrz funkcji {{Code|Nazwa funkcji}} w sposób jednolity, jedynie wtedy należy skorzystać z funkcji z definiowaną w jakimś module w sposób: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(...) local tablica_prametrow_funkcji={...}; local parametry_modul=require("Module:Parametry"); local PobierzElementNumerowanyZFrameLubTablicy=parametry_modul.PobierzElementNumerowanyZFrameLubTablicy(tablica_prametrow_funkcji); ... end; </syntaxhighlight> Wtedy za pomocą zmiennej {{Code|PobierzElementNumerowanyZFrameLubTablicy}} dostaliśmy się do funkcji, która przyjmuje jedyny parametr, aby dostać się do elementów tablicy uzyskanej w wewnątrz tej funkcji, zdefiniowaną w tablicy {{Code|tablica_prametrow_funkcji}}, która jest nic innym jak zestawem parametrów w funkcji: {{Code|Nazwa funkcji}}. === Omówienie sposobów wykorzystywania, robienia tego samego, na różne warianty === * W pierwszym i drugim sposobem zmienną tą nazwijmy to jako {{Code|args}}, jest zmienną z podtablicy innego {{Code|args}} przekazanych jako parametr tablicy do funkcji, * w trzecim sposobie tą zmienną jest cała tablica, * a czwartym jest zestaw parametrów ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. A czym się różnią się te sposoby, a więc te sposoby można powiązać jedną tylko funkcją powiedzianą w nagłówku według przykładu podaną zaraz powyżej, wtedy możemy dostawać się do tych samych zmiennych o takich samych nazwach i wartościach, ale w różnych reprezentacjach na różne sposoby, wtedy można powiedzieć, że: <syntaxhighlight lang="lua"> args[1]="wartość1"; args[2]="wartość2"; args[3]="wartość3"; </syntaxhighlight> === Ogólny opis stosowania funkcji === Czyli w wyniku działania funkcji w nagłówku, otrzymamy funkcję zwracającą te wartości, która operuje na tej tablicy, której wynikiem jest zestaw zmiennych ponumerowanych, ogólnie nienazwanych, której wartości odpowiadają te podane w ramce ostatniej powyżej. Na podstawie tego wiemy, jak działa funkcja ta z nagłówka. === Nazwy alternatywne danych parametrów funkcji ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}} === Pisząc w inny sposób, można też wskazywać: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(...) local tablica_prametrow_funkcji={...}; local parametry_modul=require("Module:Parametry"); local PobierzElementNumerowanyZFrameLubTablicy=parametry_modul.PobierzElementNumerowanyZFrameLubTablicy(tablica_prametrow_funkcji); local wartosc1=PobierzElementNumerowanyZFrameLubTablicy("nazwa1") or PobierzElementNumerowanyZFrameLubTablicy(1); local wartosc2=PobierzElementNumerowanyZFrameLubTablicy("nazwa2") or PobierzElementNumerowanyZFrameLubTablicy(2); local wartosc3=PobierzElementNumerowanyZFrameLubTablicy("nazwa3") or PobierzElementNumerowanyZFrameLubTablicy(3); end; </syntaxhighlight> Zmienne w przykładzie o kluczach: {{Code|nazwa1}}, {{Code|nazwa2}} i {{Code|nazwa3}}, posiadające pewne swoje wartości, to są zmienne w tablicy {{Code|tablica_prametrow_funkcji}}, podane też jako zmienne, jako pewne argumenty tablicy, który są w tej funkcji zwracanej jako argument (parametr) funkcji: * jeżeli argumenty podano w postaci jednego parametru funkcji w postaci pewnej tablicy z np. elementami nazwanymi, * lub jako wiele argumentów w ramce, w wikikodzie, w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w pewnym szablonie, * a rozpatrując dalej elementy względem ich nazw, np. alternatywnych, to te numery mogą być kolejo do nazw ich odpowiedników nazwanych, które w przykładzie powyżej, mają pierwszeństwo, ale tak nie musi być, te parametry: {{Code|1}}, {{Code|2}} i {{Code|3}}, to jest numer parametru. To stosujemy, jeżeli argumenty do funkcji podano w postaci wielu jego parametrów. == {{Code|p.PobierzParametr}} == Ta funkcja zwraca znów inną funkcję, która ma jedyny parametr, mówiący jakiego parametru poszukujemy, co jest wyjaśnione w definicji funkcji z nagłówka, że ona zwraca tą właśnie funkcje. Definicja skrótowa dunkcji: <syntaxhighlight lang="lua"> function p.PobierzParametr(frame,czy_frame_lub_parent,czy_frame) ... return function(nazwa) return __pobierz_parametr_table_args(nazwa); end; end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu. | 2 = {{Code|czy_frame_lub_parent}} i {{Code|czy_frame}} | _2 = Parametry logiczne dodatkowe funkcji. }} === Wartość zwracana i jego druga wartośc w postaci numeru metody === Funkcja zwraca jednocześnie dwie wartości, ta zwrócona z funkcji z nagłówka, prawdziwą wartość, i numer metody w postaci: {{Code|return wartosc, numer_metody}}. === Opis zwracanych elementów przez funkcję zwracaną - różne metody zwracania, jak je wykorzystać === Ta funkcja zwracana ma w swojej definicji jeszcze inną funkcję, wykorzystaną w nim. To jest za każdym razem inna funkcja w zależności z jakim typem danych się posługujemy {{Code|frame}}, i jakie podaliśmy parametry, tzn. czy ona jest tablicą. ==== Gdy funkcja ramki {{Code|pf.getParent}} istnieje lub posiada jego fałszywą definicję ==== Gdy warunkiem, gdy zmienna {{Code|frame}} jest tablicą, czyli te zmienne druga: {{Code|czy_frame_lub_parent}} (jeżeli funkcja jest uruchomiona w ramce w szablonie, jeżeli ma wartość {{Code|true}}, to ona wybiera raz parametr z: {{Code|frame.args[nazwa or 1]}}, a za innym razem z {{Code|pf.args[nazwa or 1]}}, gdzie {{Code|pf{{=}}frame:getParent()}}, tutaj jest zwracana wartość: {{Code|return wartosc,2}}). ==== Gdy funkcja ramki istnieje, i gdy: {{Code|czy_frame_lub_parent}}, jest fałszywe, albo ta tablica nie jest ramką, nawet bez fałszywej definicji funkcji ramki parametrów rodzica ==== Czy trzecia: {{Code|czy_frame}} (która mówi, jeżeli funkcję uruchomiono w ramce, ale przy wartości prawdziwej tego pierwszego podanego parametru, czyli {{Code|true}}, wybierana jest zawsze wartość {{Code|frame.args[nazwa or 1]}}, w przeciwnym wypadku uruchamiana jest funkcja {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, tutaj zwracana jest wartość {{Code|return wartosc,1}}). ==== Wartość nietablicowa funkcji parametrów ==== Jeżeli wartością {{Code|frame}} jest wartość nietablicowa, ale niebędącą wartością {{Code|nil}}, wtedy ustawiana jest funkcja, która tylko za pierwszym razem zwraca nienilową wartość {{Code|return wartosc,0}}, a później zwraca wartość {{Code|return nil,0}}. ==== Przypadek nietablicowa wartości, ale nilowej funkcji parametrów ==== Gdy wartością {{Code|frame}} jest {{Code|nil}}, to funkcja zawsze wraca tą wartość {{Code|return nil,0}}. ==== Fałszywa funkcja ramki parametrów rodzica ==== Ta funkcja parametrów działa dobrze, gdy zdefiniujemy w parametrach funkcji fałszywą funkcję {{Code|frame.getParent}}. ==== Brak definicji funkcji ramki parametrów rodzica ==== Gdy funkcja nie jest uruchamiana w ramce lub funkcja {{Code|frame.getParent}} nie jest zdefiniowana, to wtedy funkcja wchodzi zawsze w ten jej krok, jakby {{Code|czy_frame_lub_parent}} było {{Code|false}} według tego powyżej, to wtedy brana jest zmienna {{Code|czy_frame}}, i jaką wartość ona przyjmuje. === Nazwy alternatywne parametrów === Funkcję pisze się według sposobu, którą się wywołuje według: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame); local wartosc1=PobierzParametr("nazwa1") or PobierzParametr(1); local wartosc2=PobierzParametr("nazwa2") or PobierzParametr(2); local wartosc3=PobierzParametr("nazwa3") or PobierzParametr(3); </syntaxhighlight> Na wypadek wartości nietabelowej, tą wartość zapisuje się jako pierwszą w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a dla wartości tabelowych, jaka jest kolejność to jest obojętne, byle by to było sensowne. === Wywołania funkcji w ramce, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, z funkcją parametrów === Tę funkcję podobnie się wywołuje jak funkcję: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}. Wartością {{Code|frame}} nie musi być tablica ramki tablicy transportu, równie dobrze może być to dowolna tablica lub wartość nietablicowa. Weźmy ramkę, w której uruchamiamy funkcję ramki: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}} </syntaxhighlight> === Przykłady wykorzystania funkcji === ; Przykład pierwszy{{dk}} Ona musi być wywołana z parametrem {{Parametr|wyspecjalizowana|tak}}, jako podpowiedź, że liczą się parametry ramki dziecka, a nie jego rodzica, czyli szablonu. Wtedy funkcję {{Code|Nazwa funkcji}} definiujemy: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame,true); ... end; </syntaxhighlight> Wtedy parametr {{Parametr|wyspecjalizowana|tak}} jest ignorowany, a przy wartości {{Code|false}} drugiego parametru funkcji, czyli wywołania: {{Code|local PobierzParametr{{=}}parametry_modul.PobierzParametr(frame,false);}}, już nie, ale nie zawsze. W takim przypadku według powyższego przykładu raz jest brana wartość, jeżeli istnieje, z {{Code|frame.args}}, a jak ona nie istnieje, to wtedy z: {{Code|pf.args}}. ; Przykład drugi{{dk}} Weźmy inny przypadek: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame,false,true); ... end; </syntaxhighlight> Przy tym też parametr: {{Parametr|wyspecjalizowana|tak}}, jest ignorowany, wtedy jest zawsze wybierana do rozważań tablica: {{Code|frame.args}}. ; Przykład trzeci{{dk}} Znów w innym przypadku, gdzie parametr: {{Parametr|wyspecjalizowana|tak}}, jest zawsze rozważany w naszym wypadku: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame,false,false); ... end; </syntaxhighlight> To to wywołanie, wtedy dokładnie działa jak funkcja: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, a zwrócona funkcja: {{Code|PobierzParametr}} pobiera elementy z tak uzyskanej tablicy {{Code|args}} poprzez nią. === Przypadek nietablicowego charakteru parametrów funkcji === W przypadku, gdy {{Code|frame}} nie jest tablicą, wtedy parametry: {{Code|czy_frame_lub_parent}} i {{Code|czy_frame}}, są w takim przypadku zawsze ignorowane, ale muszą być ustawione na wypadek, gdyby do funkcji {{Code|Nazwa funkcji}} wsadzono tablicę, np. z ramki, tzn. tablicę ramki funkcji tablicy transportu. === Ogólny przypadek, często stosowany === Najprostszym często ogólnym przykładem, który prawie zawsze jest stosowany: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame); ... end; </syntaxhighlight> Wtedy parametr: {{Parametr|wyspecjalizowana|tak}}, jest prawie zawsze nieignorowany, ale nie zawsze. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> rpsfm4hunjwst3cuteo0na5zhzbylx7 555755 555754 2026-09-11T21:03:13Z Persino 2851 /* Gdy funkcja ramki istnieje, i gdy: czy_frame_lub_parent, jest fałszywe, albo ta tablica nie jest ramką, nawet bez fałszywej definicji funkcji fałszywej ramki parametrów rodzica */ 555755 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} Są tutaj przedstawione funkcje parametrów. == {{Code|p.PobierzFrameEwentualnieParent}} == Argument tej funkcji {{Code|frame}} koniecznie musi być tablicą, w przypadku przeciwnym wywoła to błąd języka {{lpg|Lua}}, że z wartości nietabelowej chcemy wyliczyć jego nieistniejący element {{Code|getParent}}, który ma prawo nie być. Funkcja pobiera parametry ramki szablonu rodzica, a nie dziecka, a jeżeli w dziecku w ramce w wikikodzie w szablonie podamy specjalny parametr {{Parametr|wyspecjalizowana|tak}}, to wtedy ta funkcja ściąga parametry ramki. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobierzFrameEwentualnieParent(frame)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu. }} === Sterowanie funkcją === Tą funkcją można sterować ze strony ramki tym właśnie specjalnym parametrem o wartości niepustej, którą jest {{Parametr|wyspecjalizowana|tak}}. ==== Przykłady wykorzystania z parametrem sterującym ==== W ramce podajemy argumenty wraz z tym specjalnym parametrem: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}} </syntaxhighlight> To wtedy w kodzie w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} w module o nazwie {{Code|Nazwa modułu}}, piszemy: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzFrameEwentualnieParent(frame).args; .... end; </syntaxhighlight> To wtedy w kodzie ściągane parametry ramki dziecka. === Pobieranie oryginalnej tablicy === Tę funkcję można równie dobrze wykorzystać do zwykłych tabel: <syntaxhighlight lang="lua"> local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzFrameEwentualnieParent(tabela); </syntaxhighlight> === Możliwość tej samej funkcji uruchomioną w ramce lub z podaniem do niej pewnego zestawu parametrów w postaci tablicy === A w tym przypadku ta funkcja nic nie robi, tylko zmienna {{Code|args}} referencyjnie wskazuje na tablicę {{Code|tablica}}. Ale można ją wykorzystać, gdy by funkcja {{Code|Nazwa funkcji}}, była uruchomiona ze zwykłą tablicą, ale z możliwością, że to może być tablicą ramki {{Code|frame}} tablicy transportu, np.: <syntaxhighlight lang="lua"> --- Pierwsza możliwość; local wartosc1=p["Nazwa funkcji"](frame); -- Druga możliwość local wartosc2=p["Nazwa funkcji"]{["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; </syntaxhighlight> === Niedogodności stosowania z funkcji === Dla obu jest taka niedogodność, że jedynie jest taka nieprawidłowość, że w przypadku parametru tablicy ramki tablicy transportu należy podawać uzyskany element {{Code|args}}, a w przypadku zwykłej tablicy już nie, tą niedokodność rozwiązuje funkcja: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}. == {{Code|p.PobierzArgsParametry}} == Argument tej funkcji {{Code|frame}} koniecznie nie musi być tablicą, bo wtedy nie wywoła to błędu języka {{lpg|Lua}}, że z wartości nietabelowej chcemy wyliczyć jego niepusty element {{Code|getParent}}, bo przedtem sprawdzana jest w tej funkcji, czy jest to tablica. W definicji tej funkcji zmienna uzyskana z funkcji: {{Code|{{sr|#p.PobierzFrameEwentualnieParent(frame)|p=Parametry}}}}, a jeśli jej składowa {{Code|args}} jest tablicą, to jest właśnie ona zwracana, a jeśli istnieje, ale nie jest tablicą, lub ona nie istnieje, to wtedy brana jest właśnie wartość tablicowa {{Code|frame}}, jeśli jest ona taka, a gdy nie, to wtedy z tej funkcji tutaj nie korzystamy. Funkcja pobiera parametry ramki szablonu rodzica, a nie dziecka, a jeżeli w dziecku w ramce w wikikodzie w szablonie podamy specjalny parametr {{Parametr|wyspecjalizowana|tak}}, to wtedy ta funkcja ściąga parametry ramki. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobierzArgsParametry(frame, czy_nie_tablica_jako_tablica)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica transportu ramki. | 2 = {{Code|czy_nie_tablica_jako_tablica}} | _2 = Czy wartości nietablicowe umieszczać w jednoelemenowej tabeli. }} === Opis działania === Funkcja wykorzystuje wspomnianą powyżej funkcję do swojego działania, ona jest wtedy aktywowana, gdy zmienna {{Code|frame}} jest tablicą, i jest sprawdzane, czy ona posiada nazwany element o kluczu {{Code|args}}, i czy jest on tablicowy. Jeżeli wartością zmiennej {{Code|frame}} nie jest tablica, ale nie przybiera wartości {{Code|nil}}, to ona jest umieszczana w tablicy, jeżeli zmiennej {{Code|czy_nie_tablica_jako_tablica}} przydzielimy wartość {{Code|true}}, w przeciwnym wypadku zwracana jest ona w postaci niezmienionej, a jeżeli wartość tej zmiennej nie istnieje, to zwracana jest zwykła tablica pusta. Tą funkcją można sterować ze strony ramki tym właśnie specjalnym parametrem o wartości niepustej. === Przykład wywołania funkcji z funkcją parametrów === W ramce podajemy argumenty wraz z tym specjalnym parametrem: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}} </syntaxhighlight> ==== Użycie funkcji parametrów ==== To wtedy w kodzie w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} w module o nazwie {{Code|Nazwa modułu}}, piszemy: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(frame); .... end; </syntaxhighlight> To wtedy w kodzie ściągane parametry ramki dziecka. === Wykorzystanie fukcji w różnych sytuacjach === ; Przypadek pierwszy{{dk}} Tę funkcję można równie dobrze wykorzystać do zwykłych tabel: <syntaxhighlight lang="lua"> local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(tabela); </syntaxhighlight> ; Drugi przypadek{{dk}} A w tym przypadku ta funkcja nic nie robi, tylko zmienna {{Code|args}} referencyjnie wskazuje na tablicę {{Code|tablica}}. Ale można ją wykorzystać, gdyby funkcja {{Code|Nazwa funkcji}}, była uruchomiona ze zwykłą tablicą, ale z możliwością, że to może być tablicą ramki {{Code|frame}} tablicy transportu, np.: <syntaxhighlight lang="lua"> --- Pierwsza możliwość; local wartosc1=p["Nazwa funkcji"](frame); -- Druga możliwość local wartosc2=p["Nazwa funkcji"]{["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; </syntaxhighlight> === Usunięcie niedogodności === Dla obu tych przypadków nie ma żadnej niedogodności, jak to występowała w {{Code|{{sr|#p.PobierzFrameEwentualnieParent(frame)|p=Parametry}}}}. === Parametr funkcji nietablicowy === Jeśliby do funkcji tablicy transportu dać wartość równą nie tablicy, to wtedy równoważnie możemy napisać: <syntaxhighlight lang="lua"> local wartosc="wartość"; local wynik=p["Nazwa funkcji"](wartosc); </syntaxhighlight> to wtedy definicję tej funkcji piszemy: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(frame,true); local wartosc=args[1]; end; </syntaxhighlight> lub równoważnie możemy zapisać: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); local wartosc=parametry_modul.PobierzArgsParametry(frame); end; </syntaxhighlight> === Brak parametrów funkcji === A jeżeli nie wsadziliśmy żadnej wartości do funkcji ramki tablicy transportu lub tą wartością jest {{Code|nil}}, wtedy: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"](); </syntaxhighlight> wtedy definicja tej funkcji wygląda: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); -- Zmienna: args, wskazuje na wartość, którą jest tablicą pustą, tzn. w tej tablicy nie ma wcale elementów; local args=parametry_modul.PobierzArgsParametry(frame); end; </syntaxhighlight> === Zmienna {{Code|args}} - alternatywny przypadek dla wartości tablicowych niż te bez drugiego parametru === Widzimy, że wtedy zmienna {{Code|args}} jest normalną, niekoniecznie niepusta, tablicą, i nie musimy wtedy wcale pisać drugiego parametru w tej fubkcji, bo wtedy wychodzi w tym przypadku na to samo: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(frame,true); </syntaxhighlight> === Różnica drugiego parametru w przypadku wartości nietablicowych === Argument drugi w {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, który w naszym przypadku musi mieć wartość {{Code|true}}, a wtedy jest jedynie sens, gdy {{Code|frame}} nie jest tablicą, i gdy chcemy tą wartość umieścić w tablicy, a nie powtórzyć wartość, tzn. chcemy napisać: {{Code|{{(}}frame,{{)}}}}, w przeciwnym wypadku musilibyśmy napisać coś w rodzaju, zamiast tak spreparowanej tablicy: {{Code|frame}}, czyli: <syntaxhighlight lang="lua"> -- Pierwszy przypadek, gdy frame jest wartością nietablicową; local parametry_modul=require("Module:Parametry"); ... -- Zwracana wartość: args, to nic innego niż: {frame,}; local args=parametry_modul.PobierzArgsParametry(frame,true); ... -- Zwracana wartość: args, to nic innego niż: frame, a nie {frame,}, jak poprzednio; local args=parametry_modul.PobierzArgsParametry(frame); </syntaxhighlight> == {{Code|p.PobierzParametryRamki}} == Funkcja służy do ustawienia pewnych domyślnych dwóch pewnych funkcji służących do pobieranie danych z tabelki z pierwszej tej funkcji: * Jeżeli ona posiada klucz o wartości {{Code|args}}, ** to zwracana jest ta właśnie tablica jako argument pierwszej tej funkcji, jeżeli jest w ogóle tablicą, ** w przeciwnym wypadku zwracana jest ta oryginalna tablica, też jako argument tej funkcji, * w przeciwnym dalszym wypadku zwracana jest zwracana wartość ta, jako argument tej drugiej funkcji, która zwraca prawdziwą wartość z argumentu tylko za pierwszym razem, z tej funkcji, za następnym i dalszym razem {{Code|nil}}. Z tak utworzonej ogólnie większej funkcji wykorzystywana jest w budowie omawianej funkcji, która jest zwracana przez omawianą funkcję, która względem jego budowy wywołuje raz pierwszą albo drugą poprzednią wspomnianą funkcję zależną od rodzaju zmiennej {{Code|frame}}, która może być tabelką, ale nie musi być. Ta funkcja zwracana przez funkcję w nagłówku przyjmuje argument, która jest kluczem do tych wspomnianych, może że, * tabel (dokładnie, która ta może tabelka to zależy od formatu tej naszej rozważanej zmiennej), * a jeżeli to nie tabelka, co jest zwracane, to już zostało powiedziane. Definicja skrótowa tej funkcji jest: <syntaxhighlight lang="lua"> function p.PobierzParametryRamki(frame)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu. }} Weźmy ramkę sformułowaną w wikikodzie jako dziecko w szablonie rodzicu: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5}} </syntaxhighlight> === Funkcje, z funkcją parametrów, z tablicą ramki lub one z podtablicą {{Code|args}} === To wtedy tablica ramki tablicy transportu posiada właśnie {{Code|frame}}, która jest tablicą, i na pewno posiada tablicę o nazwie {{Code|args}}, to wtedy tę funkcję wywołaną w ramce, która wywołuje funkcję w nagłówku, formułujemy: <syntaxhighlight lang="lua"> local p={}; local p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametryRamki=parametry_modul.PobierzParametryRamki(frame); ... end; </syntaxhighlight> ==== Przykład wywołania funkcji z funkcją parametrów z tablicą {{Code|args}} ==== Równie dobrze funkcję z ramki można wywołać w sposób, co wtedy ta funkcja też zostanie wywołana pozytywnie: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"]{args={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}}; </syntaxhighlight> W tej funkcji nie trzeba definiować funkcji fałszywej {{Code|getParent}}, w postaci: {{Code|getParent{{=}}function()end}}. Widzimi, że ta tablica posiada nazwę zmiennej tablicowej o nazwie {{Code|args}}, ale ona nie jest tablicą ramki tablicy transportu, ale tą tablicę możemy bezposrednio wsadzić w tą główną tablicę w samym argumencie funkcji. ==== Przykład wywołania z tablicą bez podtablicy {{Code|args}} ==== Równie dobrze możemy wywołać tę funkcję zdefiniowaną naszą w jakimś module w sposób: <syntaxhighlight lang="lua"> local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; local wynik=p["Nazwa funkcji"]{tabela); </syntaxhighlight> też ta funkcja prawidłowo się wywoła. W tym przypadku, jak i w przypadkach powyżej, wyniki uzyskuje się w następującym wywołaniach: <syntaxhighlight lang="lua"> --- Zmienna: wartosc1, przyjmuje wartość: "wartość1"; local wartosc1=PobierzParametryRamki("nazwa1"); --- Zmienna: wartosc2, przyjmuje wartość: "wartość2"; local wartosc2=PobierzParametryRamki("nazwa2"); --- Zmienna: wartosc3, przyjmuje wartość: "wartość3"; local wartosc3=PobierzParametryRamki(1); </syntaxhighlight> ==== Przykład wywołania funkcji z wartością nietablicową ==== W innym przypadku wywołań funkcji ramki jest wsadzenie do niej zwykłego nietablicowego elementu, może być też to wartość: {{Code|nil}}. A to wywołanie jest: <syntaxhighlight lang="lua"> local wartosc="wartość"; --Zmienna: wartosc, nie jest w tym przypadku tablicą; local wynik=p["Nazwa funkcji"](wartosc); </syntaxhighlight> === Wywołania funkcji parametrów bez argumentów - wiele kolejnych wywołań jednocześnie === Wtedy w tej ramce w celu uzyskania, jakikolwiek wartości jest przykład wywołania tej funkcji zwracanej przez funkcję w ramce z argumentem pustym. <syntaxhighlight lang="lua"> -- Zmienna: wartość1, przyjmuje wartość: "wartość"; Jeżeli ona, przyjmuje wartość: nil, to wywołanie rzuci: nil, i za każdym następny razem; local wartosc1=PobierzParametryRamki(); -- Zmienna: wartość2, przyjmuje wartość: nil; local wartosc2=PobierzParametryRamki(); </syntaxhighlight> W wywołaniach powinno dbać się o właściwą kolejność wywołań, bo argumentem funkcji z tablicy transportu może być zwykła tablicowa wartość. Najpierw uzyskujemy wartości nietablicowe, a później tablicowe, na wypadek niewiadomej {{Code|frame}} jakiego typu ma być wartość. === Dwa przypadki, parametr w tablicy, lub wartość nietablicowa funkcji === Też ta zmienna może istnieć pod kilkoma możliwymi kluczami, lub tą zmienną może być jedyny argument funkcji, która jest nietablicową wartością, wtedy ją się wywołuje jako dla przypadku, gdy parametr jest nietablicowy lub jest pod kluczem {{Code|tekst}}: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local tekst=parametry_modul.PobierzParametryRamki(frame)("tekst"); </syntaxhighlight> === Przypadek, gdy parametr funkcji nie jest tablicą === Lub chcemy tę funkcję wywołać bezparametrowo, gdy chcemy, by {{Code|frame}} nie była tablicą: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local tekst=parametry_modul.PobierzParametryRamki(frame)(); </syntaxhighlight> === Omówienie przypadku istnienia tego samego wariantu zmiennej raz podtablicą, a raz jako zmienna nietablicowa === * Wtedy ta zmienna w przedostatnim przykładzie jest pod wartością {{Code|tekst}}, gdy wartość {{Code|frame}} jest tablicą, * lub może być jedyną wartością, którą jest {{Code|frame}}, jako zmienna nietablicowa, wtedy ta zmienna też jest pod {{Code|tekst}}, ** ta funkcja uzyskana z: {{Code|{{sr|#p.PobierzParametryRamki(frame)|p=Parametry}}}}, wtedy może być wywołana tylko raz z nienilową wartością zwracaną, następnym razem zwraca wartość {{Code|nil}}, wtedy to dotyczy przedostatniego i ostatniego przykładu. === Jakma liczyć element funkcji w przypadku różnych jej parametrów === Jeżeli {{Code|frame}} jest nietablicowa, to wtedy wartość {{Code|tekst}} jest taka sama, co {{Code|frame}}. A jeżeli jest tablicą, to ta wartością jest {{Code|frame.args["tekst"]}}, lub gdy {{Code|args}} nie istnieje, lub istnieje, ale jest nietablicowa, to wtedy ta wartość jest {{Code|frame["tekst"]}}. === Parametry alternatywne funkcji - przykład wykorzystania funkcji parametrów === A gdy zmienne istnieją pod wieloma kluczami, lub gdy funkcję wywołano ze zmienną nietablicową, wtedy ogólnie możemy dla przykładu powiedzieć: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local PobierzParametryRamki=parametry_modul.PobierzParametryRamki(frame); local wartosc1=PobierzParametryRamki("nazwa1") or PobierzParametryRamki(1); local wartosc2=PobierzParametryRamki("nazwa2") or PobierzParametryRamki(2); local wartosc3=PobierzParametryRamki("nazwa3") or PobierzParametryRamki(3); </syntaxhighlight> * Wtedy ta zmienna jest pod kluczem, np.: {{Code|nazwa1}} lub {{Code|1}}, tablicy ramki {{Code|frame}} tablicy transportu, następne wywołania dla następnych kluczy też zrzucą pewne wartości, * lub jest ona zwykłą nietablicową wartością mogącą być równą, nawet {{Code|nil}}. ---- * Następne wywołania uzyskanej tak funkcji w przypadku, gdy {{Code|frame}} jest nietablicowy, rzucać będzie z samej definicji funkcji wartości {{Code|nil}}, czyli {{Code|wartosc2{{=}}wartosc3{{=}}nil}}, ale za to wartość {{Code|wartosc1}} nie musi być, ale może, wartością {{Code|nil}}, jeśli tą wartością jest, gdy {{Code|frame{{=}}nil}}, * w przeciwnym wypadku za pierwszym razem tej wartości nietablicowej uzyskamy wartość nie {{Code|nil}}, a za drugim i dalszym zawsze wartość {{Code|nil}}. == {{Code|p.PobierzElementNumerowanyZFrameLubTablicy}} == Definicja skrótowa funkcji jest z parametrem charakteryzującym pewien zestaw zmiennych {{Code|frame}}, * które nie musi być tablicą ramki tablicy transportu, tylko moze być innym parametrem, który jest tablicą parametrów podanych do funkcji, * nawet gdy parametrem podanym do funkcji, w której wykorzystujemy tą funkcję, jest jedyna zmienna będąca tablicą ramki. Ale z drugiej strony, tak nie musi być, może być to rozbudowany zestaw zmiennych, np. nazwanych i nienazwanych, którego wszystkie sposoby podawania łączymy jednym sposobem podawania. Mimo że parametry funkcji są parametrami nienazwanymi, mogą być one ponumerowane, ale zmienna w tablicy może przyjmować wartość tą samą na różne sposoby, raz w sposób nazwany, a za innym sposobem jako nienazwany. Ogólnie ostateczne parametry łączymy w dane parametry za pomocą jednego sposobu, tzn. za pomocą tej funkcji, i dla tak uzyskanej tablicy tworzymy funkcję zwracaną przez funkcję w nagłówku, która przyjmuje parametr, który jest kluczem tej uzyskanej tablicy. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobierzElementNumerowanyZFrameLubTablicy(frame)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu. }} Weźmy najprostszy sposób realizacji tej funkcji, w realizacji: {{Code|1-1, 2-2, 3-3}}, czyli ten opis jest zaraz poniżej. === Sposoby wywołania funkcji === ; Pierwszy sposób{{dk}} Weźmy funkcję, którą można wywoływać z wieloma parametrami, jak i w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, którą przykładowo piszemy jego wywołanie wewnątrz innej funkcji na pięć sposobów, czyli teraz pierwszy sposób z tylko z parametrem, więc tablicą ramki tablicy transportu wywodzącą się z ramki uruchomioną w wikikodzie w jakimś szablonie rodzicu: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"](frame); </syntaxhighlight> ; Drugi sposób{{dk}} A teraz drugi sposób, pisząc, bezpośrednio inaczej, formułując wywołanie tej funkcji, używając zmiennych tablicowych tablicy ramki, ale to nie jest tak naprawdę tablica ramka tablicy transportu, tylko parametr podany bezpośrednio do funkcji, tak jak się to robi w języku {{lpg|Lua}}, nie jak w przykładzie powyżej, więc: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"]{args={"wartość1","wartość2","wartość3",},}; </syntaxhighlight> ; Trzeci sposób{{dk}} Lub równoważnie, pisząc, nie używając zmiennej {{Code|args}}: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"]{"wartość1","wartość2","wartość3",}; </syntaxhighlight> ; Czwarty sposób{{dk}} Albo te parametry wsadzając do funkcji: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"]("wartość1","wartość2","wartość3"); </syntaxhighlight> ; Piąty spssób{{dk}} Można też wywołać to wszystko w ramce, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w wikikpdzie, wtedy wsadzając parametry do ramki: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|wartość1|wartość2|wartość3}} </syntaxhighlight> === Omówienie pobierania takich parmetrów === A jak połączyć wszystkie te pięć sposobów, posługiwać się tymi sposobami wewnątrz funkcji {{Code|Nazwa funkcji}} w sposób jednolity, jedynie wtedy należy skorzystać z funkcji z definiowaną w jakimś module w sposób: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(...) local tablica_prametrow_funkcji={...}; local parametry_modul=require("Module:Parametry"); local PobierzElementNumerowanyZFrameLubTablicy=parametry_modul.PobierzElementNumerowanyZFrameLubTablicy(tablica_prametrow_funkcji); ... end; </syntaxhighlight> Wtedy za pomocą zmiennej {{Code|PobierzElementNumerowanyZFrameLubTablicy}} dostaliśmy się do funkcji, która przyjmuje jedyny parametr, aby dostać się do elementów tablicy uzyskanej w wewnątrz tej funkcji, zdefiniowaną w tablicy {{Code|tablica_prametrow_funkcji}}, która jest nic innym jak zestawem parametrów w funkcji: {{Code|Nazwa funkcji}}. === Omówienie sposobów wykorzystywania, robienia tego samego, na różne warianty === * W pierwszym i drugim sposobem zmienną tą nazwijmy to jako {{Code|args}}, jest zmienną z podtablicy innego {{Code|args}} przekazanych jako parametr tablicy do funkcji, * w trzecim sposobie tą zmienną jest cała tablica, * a czwartym jest zestaw parametrów ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. A czym się różnią się te sposoby, a więc te sposoby można powiązać jedną tylko funkcją powiedzianą w nagłówku według przykładu podaną zaraz powyżej, wtedy możemy dostawać się do tych samych zmiennych o takich samych nazwach i wartościach, ale w różnych reprezentacjach na różne sposoby, wtedy można powiedzieć, że: <syntaxhighlight lang="lua"> args[1]="wartość1"; args[2]="wartość2"; args[3]="wartość3"; </syntaxhighlight> === Ogólny opis stosowania funkcji === Czyli w wyniku działania funkcji w nagłówku, otrzymamy funkcję zwracającą te wartości, która operuje na tej tablicy, której wynikiem jest zestaw zmiennych ponumerowanych, ogólnie nienazwanych, której wartości odpowiadają te podane w ramce ostatniej powyżej. Na podstawie tego wiemy, jak działa funkcja ta z nagłówka. === Nazwy alternatywne danych parametrów funkcji ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}} === Pisząc w inny sposób, można też wskazywać: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(...) local tablica_prametrow_funkcji={...}; local parametry_modul=require("Module:Parametry"); local PobierzElementNumerowanyZFrameLubTablicy=parametry_modul.PobierzElementNumerowanyZFrameLubTablicy(tablica_prametrow_funkcji); local wartosc1=PobierzElementNumerowanyZFrameLubTablicy("nazwa1") or PobierzElementNumerowanyZFrameLubTablicy(1); local wartosc2=PobierzElementNumerowanyZFrameLubTablicy("nazwa2") or PobierzElementNumerowanyZFrameLubTablicy(2); local wartosc3=PobierzElementNumerowanyZFrameLubTablicy("nazwa3") or PobierzElementNumerowanyZFrameLubTablicy(3); end; </syntaxhighlight> Zmienne w przykładzie o kluczach: {{Code|nazwa1}}, {{Code|nazwa2}} i {{Code|nazwa3}}, posiadające pewne swoje wartości, to są zmienne w tablicy {{Code|tablica_prametrow_funkcji}}, podane też jako zmienne, jako pewne argumenty tablicy, który są w tej funkcji zwracanej jako argument (parametr) funkcji: * jeżeli argumenty podano w postaci jednego parametru funkcji w postaci pewnej tablicy z np. elementami nazwanymi, * lub jako wiele argumentów w ramce, w wikikodzie, w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w pewnym szablonie, * a rozpatrując dalej elementy względem ich nazw, np. alternatywnych, to te numery mogą być kolejo do nazw ich odpowiedników nazwanych, które w przykładzie powyżej, mają pierwszeństwo, ale tak nie musi być, te parametry: {{Code|1}}, {{Code|2}} i {{Code|3}}, to jest numer parametru. To stosujemy, jeżeli argumenty do funkcji podano w postaci wielu jego parametrów. == {{Code|p.PobierzParametr}} == Ta funkcja zwraca znów inną funkcję, która ma jedyny parametr, mówiący jakiego parametru poszukujemy, co jest wyjaśnione w definicji funkcji z nagłówka, że ona zwraca tą właśnie funkcje. Definicja skrótowa dunkcji: <syntaxhighlight lang="lua"> function p.PobierzParametr(frame,czy_frame_lub_parent,czy_frame) ... return function(nazwa) return __pobierz_parametr_table_args(nazwa); end; end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu. | 2 = {{Code|czy_frame_lub_parent}} i {{Code|czy_frame}} | _2 = Parametry logiczne dodatkowe funkcji. }} === Wartość zwracana i jego druga wartośc w postaci numeru metody === Funkcja zwraca jednocześnie dwie wartości, ta zwrócona z funkcji z nagłówka, prawdziwą wartość, i numer metody w postaci: {{Code|return wartosc, numer_metody}}. === Opis zwracanych elementów przez funkcję zwracaną - różne metody zwracania, jak je wykorzystać === Ta funkcja zwracana ma w swojej definicji jeszcze inną funkcję, wykorzystaną w nim. To jest za każdym razem inna funkcja w zależności z jakim typem danych się posługujemy {{Code|frame}}, i jakie podaliśmy parametry, tzn. czy ona jest tablicą. ==== Gdy funkcja ramki {{Code|pf.getParent}} istnieje lub posiada jego fałszywą definicję ==== Gdy warunkiem, gdy zmienna {{Code|frame}} jest tablicą, czyli te zmienne druga: {{Code|czy_frame_lub_parent}} (jeżeli funkcja jest uruchomiona w ramce w szablonie, jeżeli ma wartość {{Code|true}}, to ona wybiera raz parametr z: {{Code|frame.args[nazwa or 1]}}, a za innym razem z {{Code|pf.args[nazwa or 1]}}, gdzie {{Code|pf{{=}}frame:getParent()}}, tutaj jest zwracana wartość: {{Code|return wartosc,2}}). ==== Gdy funkcja ramki istnieje, i gdy: {{Code|czy_frame_lub_parent}}, jest fałszywe, albo ta tablica nie jest ramką, nawet bez fałszywej definicji funkcji fałszywej ramki parametrów rodzica ==== Czy trzecia: {{Code|czy_frame}} (która mówi, jeżeli funkcję uruchomiono w ramce, ale przy wartości prawdziwej tego pierwszego podanego parametru, czyli {{Code|true}}, wybierana jest zawsze wartość {{Code|frame.args[nazwa or 1]}}, w przeciwnym wypadku uruchamiana jest funkcja {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, tutaj zwracana jest wartość {{Code|return wartosc,1}}). ==== Wartość nietablicowa funkcji parametrów ==== Jeżeli wartością {{Code|frame}} jest wartość nietablicowa, ale niebędącą wartością {{Code|nil}}, wtedy ustawiana jest funkcja, która tylko za pierwszym razem zwraca nienilową wartość {{Code|return wartosc,0}}, a później zwraca wartość {{Code|return nil,0}}. ==== Przypadek nietablicowa wartości, ale nilowej funkcji parametrów ==== Gdy wartością {{Code|frame}} jest {{Code|nil}}, to funkcja zawsze wraca tą wartość {{Code|return nil,0}}. ==== Fałszywa funkcja ramki parametrów rodzica ==== Ta funkcja parametrów działa dobrze, gdy zdefiniujemy w parametrach funkcji fałszywą funkcję {{Code|frame.getParent}}. ==== Brak definicji funkcji ramki parametrów rodzica ==== Gdy funkcja nie jest uruchamiana w ramce lub funkcja {{Code|frame.getParent}} nie jest zdefiniowana, to wtedy funkcja wchodzi zawsze w ten jej krok, jakby {{Code|czy_frame_lub_parent}} było {{Code|false}} według tego powyżej, to wtedy brana jest zmienna {{Code|czy_frame}}, i jaką wartość ona przyjmuje. === Nazwy alternatywne parametrów === Funkcję pisze się według sposobu, którą się wywołuje według: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame); local wartosc1=PobierzParametr("nazwa1") or PobierzParametr(1); local wartosc2=PobierzParametr("nazwa2") or PobierzParametr(2); local wartosc3=PobierzParametr("nazwa3") or PobierzParametr(3); </syntaxhighlight> Na wypadek wartości nietabelowej, tą wartość zapisuje się jako pierwszą w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a dla wartości tabelowych, jaka jest kolejność to jest obojętne, byle by to było sensowne. === Wywołania funkcji w ramce, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, z funkcją parametrów === Tę funkcję podobnie się wywołuje jak funkcję: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}. Wartością {{Code|frame}} nie musi być tablica ramki tablicy transportu, równie dobrze może być to dowolna tablica lub wartość nietablicowa. Weźmy ramkę, w której uruchamiamy funkcję ramki: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}} </syntaxhighlight> === Przykłady wykorzystania funkcji === ; Przykład pierwszy{{dk}} Ona musi być wywołana z parametrem {{Parametr|wyspecjalizowana|tak}}, jako podpowiedź, że liczą się parametry ramki dziecka, a nie jego rodzica, czyli szablonu. Wtedy funkcję {{Code|Nazwa funkcji}} definiujemy: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame,true); ... end; </syntaxhighlight> Wtedy parametr {{Parametr|wyspecjalizowana|tak}} jest ignorowany, a przy wartości {{Code|false}} drugiego parametru funkcji, czyli wywołania: {{Code|local PobierzParametr{{=}}parametry_modul.PobierzParametr(frame,false);}}, już nie, ale nie zawsze. W takim przypadku według powyższego przykładu raz jest brana wartość, jeżeli istnieje, z {{Code|frame.args}}, a jak ona nie istnieje, to wtedy z: {{Code|pf.args}}. ; Przykład drugi{{dk}} Weźmy inny przypadek: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame,false,true); ... end; </syntaxhighlight> Przy tym też parametr: {{Parametr|wyspecjalizowana|tak}}, jest ignorowany, wtedy jest zawsze wybierana do rozważań tablica: {{Code|frame.args}}. ; Przykład trzeci{{dk}} Znów w innym przypadku, gdzie parametr: {{Parametr|wyspecjalizowana|tak}}, jest zawsze rozważany w naszym wypadku: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame,false,false); ... end; </syntaxhighlight> To to wywołanie, wtedy dokładnie działa jak funkcja: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, a zwrócona funkcja: {{Code|PobierzParametr}} pobiera elementy z tak uzyskanej tablicy {{Code|args}} poprzez nią. === Przypadek nietablicowego charakteru parametrów funkcji === W przypadku, gdy {{Code|frame}} nie jest tablicą, wtedy parametry: {{Code|czy_frame_lub_parent}} i {{Code|czy_frame}}, są w takim przypadku zawsze ignorowane, ale muszą być ustawione na wypadek, gdyby do funkcji {{Code|Nazwa funkcji}} wsadzono tablicę, np. z ramki, tzn. tablicę ramki funkcji tablicy transportu. === Ogólny przypadek, często stosowany === Najprostszym często ogólnym przykładem, który prawie zawsze jest stosowany: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame); ... end; </syntaxhighlight> Wtedy parametr: {{Parametr|wyspecjalizowana|tak}}, jest prawie zawsze nieignorowany, ale nie zawsze. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> hrp8kll5mmsyvsxtwi43pcpfd3cilui 555756 555755 2026-09-11T21:10:09Z Persino 2851 /* Przykład wywołania z tablicą bez podtablicy args */ 555756 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} Są tutaj przedstawione funkcje parametrów. == {{Code|p.PobierzFrameEwentualnieParent}} == Argument tej funkcji {{Code|frame}} koniecznie musi być tablicą, w przypadku przeciwnym wywoła to błąd języka {{lpg|Lua}}, że z wartości nietabelowej chcemy wyliczyć jego nieistniejący element {{Code|getParent}}, który ma prawo nie być. Funkcja pobiera parametry ramki szablonu rodzica, a nie dziecka, a jeżeli w dziecku w ramce w wikikodzie w szablonie podamy specjalny parametr {{Parametr|wyspecjalizowana|tak}}, to wtedy ta funkcja ściąga parametry ramki. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobierzFrameEwentualnieParent(frame)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu. }} === Sterowanie funkcją === Tą funkcją można sterować ze strony ramki tym właśnie specjalnym parametrem o wartości niepustej, którą jest {{Parametr|wyspecjalizowana|tak}}. ==== Przykłady wykorzystania z parametrem sterującym ==== W ramce podajemy argumenty wraz z tym specjalnym parametrem: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}} </syntaxhighlight> To wtedy w kodzie w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} w module o nazwie {{Code|Nazwa modułu}}, piszemy: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzFrameEwentualnieParent(frame).args; .... end; </syntaxhighlight> To wtedy w kodzie ściągane parametry ramki dziecka. === Pobieranie oryginalnej tablicy === Tę funkcję można równie dobrze wykorzystać do zwykłych tabel: <syntaxhighlight lang="lua"> local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzFrameEwentualnieParent(tabela); </syntaxhighlight> === Możliwość tej samej funkcji uruchomioną w ramce lub z podaniem do niej pewnego zestawu parametrów w postaci tablicy === A w tym przypadku ta funkcja nic nie robi, tylko zmienna {{Code|args}} referencyjnie wskazuje na tablicę {{Code|tablica}}. Ale można ją wykorzystać, gdy by funkcja {{Code|Nazwa funkcji}}, była uruchomiona ze zwykłą tablicą, ale z możliwością, że to może być tablicą ramki {{Code|frame}} tablicy transportu, np.: <syntaxhighlight lang="lua"> --- Pierwsza możliwość; local wartosc1=p["Nazwa funkcji"](frame); -- Druga możliwość local wartosc2=p["Nazwa funkcji"]{["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; </syntaxhighlight> === Niedogodności stosowania z funkcji === Dla obu jest taka niedogodność, że jedynie jest taka nieprawidłowość, że w przypadku parametru tablicy ramki tablicy transportu należy podawać uzyskany element {{Code|args}}, a w przypadku zwykłej tablicy już nie, tą niedokodność rozwiązuje funkcja: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}. == {{Code|p.PobierzArgsParametry}} == Argument tej funkcji {{Code|frame}} koniecznie nie musi być tablicą, bo wtedy nie wywoła to błędu języka {{lpg|Lua}}, że z wartości nietabelowej chcemy wyliczyć jego niepusty element {{Code|getParent}}, bo przedtem sprawdzana jest w tej funkcji, czy jest to tablica. W definicji tej funkcji zmienna uzyskana z funkcji: {{Code|{{sr|#p.PobierzFrameEwentualnieParent(frame)|p=Parametry}}}}, a jeśli jej składowa {{Code|args}} jest tablicą, to jest właśnie ona zwracana, a jeśli istnieje, ale nie jest tablicą, lub ona nie istnieje, to wtedy brana jest właśnie wartość tablicowa {{Code|frame}}, jeśli jest ona taka, a gdy nie, to wtedy z tej funkcji tutaj nie korzystamy. Funkcja pobiera parametry ramki szablonu rodzica, a nie dziecka, a jeżeli w dziecku w ramce w wikikodzie w szablonie podamy specjalny parametr {{Parametr|wyspecjalizowana|tak}}, to wtedy ta funkcja ściąga parametry ramki. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobierzArgsParametry(frame, czy_nie_tablica_jako_tablica)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica transportu ramki. | 2 = {{Code|czy_nie_tablica_jako_tablica}} | _2 = Czy wartości nietablicowe umieszczać w jednoelemenowej tabeli. }} === Opis działania === Funkcja wykorzystuje wspomnianą powyżej funkcję do swojego działania, ona jest wtedy aktywowana, gdy zmienna {{Code|frame}} jest tablicą, i jest sprawdzane, czy ona posiada nazwany element o kluczu {{Code|args}}, i czy jest on tablicowy. Jeżeli wartością zmiennej {{Code|frame}} nie jest tablica, ale nie przybiera wartości {{Code|nil}}, to ona jest umieszczana w tablicy, jeżeli zmiennej {{Code|czy_nie_tablica_jako_tablica}} przydzielimy wartość {{Code|true}}, w przeciwnym wypadku zwracana jest ona w postaci niezmienionej, a jeżeli wartość tej zmiennej nie istnieje, to zwracana jest zwykła tablica pusta. Tą funkcją można sterować ze strony ramki tym właśnie specjalnym parametrem o wartości niepustej. === Przykład wywołania funkcji z funkcją parametrów === W ramce podajemy argumenty wraz z tym specjalnym parametrem: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}} </syntaxhighlight> ==== Użycie funkcji parametrów ==== To wtedy w kodzie w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} w module o nazwie {{Code|Nazwa modułu}}, piszemy: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(frame); .... end; </syntaxhighlight> To wtedy w kodzie ściągane parametry ramki dziecka. === Wykorzystanie fukcji w różnych sytuacjach === ; Przypadek pierwszy{{dk}} Tę funkcję można równie dobrze wykorzystać do zwykłych tabel: <syntaxhighlight lang="lua"> local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(tabela); </syntaxhighlight> ; Drugi przypadek{{dk}} A w tym przypadku ta funkcja nic nie robi, tylko zmienna {{Code|args}} referencyjnie wskazuje na tablicę {{Code|tablica}}. Ale można ją wykorzystać, gdyby funkcja {{Code|Nazwa funkcji}}, była uruchomiona ze zwykłą tablicą, ale z możliwością, że to może być tablicą ramki {{Code|frame}} tablicy transportu, np.: <syntaxhighlight lang="lua"> --- Pierwsza możliwość; local wartosc1=p["Nazwa funkcji"](frame); -- Druga możliwość local wartosc2=p["Nazwa funkcji"]{["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; </syntaxhighlight> === Usunięcie niedogodności === Dla obu tych przypadków nie ma żadnej niedogodności, jak to występowała w {{Code|{{sr|#p.PobierzFrameEwentualnieParent(frame)|p=Parametry}}}}. === Parametr funkcji nietablicowy === Jeśliby do funkcji tablicy transportu dać wartość równą nie tablicy, to wtedy równoważnie możemy napisać: <syntaxhighlight lang="lua"> local wartosc="wartość"; local wynik=p["Nazwa funkcji"](wartosc); </syntaxhighlight> to wtedy definicję tej funkcji piszemy: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(frame,true); local wartosc=args[1]; end; </syntaxhighlight> lub równoważnie możemy zapisać: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); local wartosc=parametry_modul.PobierzArgsParametry(frame); end; </syntaxhighlight> === Brak parametrów funkcji === A jeżeli nie wsadziliśmy żadnej wartości do funkcji ramki tablicy transportu lub tą wartością jest {{Code|nil}}, wtedy: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"](); </syntaxhighlight> wtedy definicja tej funkcji wygląda: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); -- Zmienna: args, wskazuje na wartość, którą jest tablicą pustą, tzn. w tej tablicy nie ma wcale elementów; local args=parametry_modul.PobierzArgsParametry(frame); end; </syntaxhighlight> === Zmienna {{Code|args}} - alternatywny przypadek dla wartości tablicowych niż te bez drugiego parametru === Widzimy, że wtedy zmienna {{Code|args}} jest normalną, niekoniecznie niepusta, tablicą, i nie musimy wtedy wcale pisać drugiego parametru w tej fubkcji, bo wtedy wychodzi w tym przypadku na to samo: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(frame,true); </syntaxhighlight> === Różnica drugiego parametru w przypadku wartości nietablicowych === Argument drugi w {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, który w naszym przypadku musi mieć wartość {{Code|true}}, a wtedy jest jedynie sens, gdy {{Code|frame}} nie jest tablicą, i gdy chcemy tą wartość umieścić w tablicy, a nie powtórzyć wartość, tzn. chcemy napisać: {{Code|{{(}}frame,{{)}}}}, w przeciwnym wypadku musilibyśmy napisać coś w rodzaju, zamiast tak spreparowanej tablicy: {{Code|frame}}, czyli: <syntaxhighlight lang="lua"> -- Pierwszy przypadek, gdy frame jest wartością nietablicową; local parametry_modul=require("Module:Parametry"); ... -- Zwracana wartość: args, to nic innego niż: {frame,}; local args=parametry_modul.PobierzArgsParametry(frame,true); ... -- Zwracana wartość: args, to nic innego niż: frame, a nie {frame,}, jak poprzednio; local args=parametry_modul.PobierzArgsParametry(frame); </syntaxhighlight> == {{Code|p.PobierzParametryRamki}} == Funkcja służy do ustawienia pewnych domyślnych dwóch pewnych funkcji służących do pobieranie danych z tabelki z pierwszej tej funkcji: * Jeżeli ona posiada klucz o wartości {{Code|args}}, ** to zwracana jest ta właśnie tablica jako argument pierwszej tej funkcji, jeżeli jest w ogóle tablicą, ** w przeciwnym wypadku zwracana jest ta oryginalna tablica, też jako argument tej funkcji, * w przeciwnym dalszym wypadku zwracana jest zwracana wartość ta, jako argument tej drugiej funkcji, która zwraca prawdziwą wartość z argumentu tylko za pierwszym razem, z tej funkcji, za następnym i dalszym razem {{Code|nil}}. Z tak utworzonej ogólnie większej funkcji wykorzystywana jest w budowie omawianej funkcji, która jest zwracana przez omawianą funkcję, która względem jego budowy wywołuje raz pierwszą albo drugą poprzednią wspomnianą funkcję zależną od rodzaju zmiennej {{Code|frame}}, która może być tabelką, ale nie musi być. Ta funkcja zwracana przez funkcję w nagłówku przyjmuje argument, która jest kluczem do tych wspomnianych, może że, * tabel (dokładnie, która ta może tabelka to zależy od formatu tej naszej rozważanej zmiennej), * a jeżeli to nie tabelka, co jest zwracane, to już zostało powiedziane. Definicja skrótowa tej funkcji jest: <syntaxhighlight lang="lua"> function p.PobierzParametryRamki(frame)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu. }} Weźmy ramkę sformułowaną w wikikodzie jako dziecko w szablonie rodzicu: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5}} </syntaxhighlight> === Funkcje, z funkcją parametrów, z tablicą ramki lub one z podtablicą {{Code|args}} === To wtedy tablica ramki tablicy transportu posiada właśnie {{Code|frame}}, która jest tablicą, i na pewno posiada tablicę o nazwie {{Code|args}}, to wtedy tę funkcję wywołaną w ramce, która wywołuje funkcję w nagłówku, formułujemy: <syntaxhighlight lang="lua"> local p={}; local p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametryRamki=parametry_modul.PobierzParametryRamki(frame); ... end; </syntaxhighlight> ==== Przykład wywołania funkcji z funkcją parametrów z tablicą {{Code|args}} ==== Równie dobrze funkcję z ramki można wywołać w sposób, co wtedy ta funkcja też zostanie wywołana pozytywnie: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"]{args={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}}; </syntaxhighlight> W tej funkcji nie trzeba definiować funkcji fałszywej {{Code|getParent}}, w postaci: {{Code|getParent{{=}}function()end}}. Widzimi, że ta tablica posiada nazwę zmiennej tablicowej o nazwie {{Code|args}}, ale ona nie jest tablicą ramki tablicy transportu, ale tą tablicę możemy bezposrednio wsadzić w tą główną tablicę w samym argumencie funkcji. ==== Przykład wywołania z tablicą bez podtablicy {{Code|args}} ==== Równie dobrze możemy wywołać tę funkcję zdefiniowaną naszą w jakimś module w sposób: <syntaxhighlight lang="lua"> local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; local wynik=p["Nazwa funkcji"]{tabela); </syntaxhighlight> Też ta funkcja prawidłowo się wywoła. W tym przypadku, jak i w przypadkach powyżej, wyniki uzyskuje się w następującym wywołaniach: <syntaxhighlight lang="lua"> --- Zmienna: wartosc1, przyjmuje wartość: "wartość1"; local wartosc1=PobierzParametryRamki("nazwa1"); --- Zmienna: wartosc2, przyjmuje wartość: "wartość2"; local wartosc2=PobierzParametryRamki("nazwa2"); --- Zmienna: wartosc3, przyjmuje wartość: "wartość3"; local wartosc3=PobierzParametryRamki(1); </syntaxhighlight> ==== Przykład wywołania funkcji z wartością nietablicową ==== W innym przypadku wywołań funkcji ramki jest wsadzenie do niej zwykłego nietablicowego elementu, może być też to wartość: {{Code|nil}}. A to wywołanie jest: <syntaxhighlight lang="lua"> local wartosc="wartość"; --Zmienna: wartosc, nie jest w tym przypadku tablicą; local wynik=p["Nazwa funkcji"](wartosc); </syntaxhighlight> === Wywołania funkcji parametrów bez argumentów - wiele kolejnych wywołań jednocześnie === Wtedy w tej ramce w celu uzyskania, jakikolwiek wartości jest przykład wywołania tej funkcji zwracanej przez funkcję w ramce z argumentem pustym. <syntaxhighlight lang="lua"> -- Zmienna: wartość1, przyjmuje wartość: "wartość"; Jeżeli ona, przyjmuje wartość: nil, to wywołanie rzuci: nil, i za każdym następny razem; local wartosc1=PobierzParametryRamki(); -- Zmienna: wartość2, przyjmuje wartość: nil; local wartosc2=PobierzParametryRamki(); </syntaxhighlight> W wywołaniach powinno dbać się o właściwą kolejność wywołań, bo argumentem funkcji z tablicy transportu może być zwykła tablicowa wartość. Najpierw uzyskujemy wartości nietablicowe, a później tablicowe, na wypadek niewiadomej {{Code|frame}} jakiego typu ma być wartość. === Dwa przypadki, parametr w tablicy, lub wartość nietablicowa funkcji === Też ta zmienna może istnieć pod kilkoma możliwymi kluczami, lub tą zmienną może być jedyny argument funkcji, która jest nietablicową wartością, wtedy ją się wywołuje jako dla przypadku, gdy parametr jest nietablicowy lub jest pod kluczem {{Code|tekst}}: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local tekst=parametry_modul.PobierzParametryRamki(frame)("tekst"); </syntaxhighlight> === Przypadek, gdy parametr funkcji nie jest tablicą === Lub chcemy tę funkcję wywołać bezparametrowo, gdy chcemy, by {{Code|frame}} nie była tablicą: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local tekst=parametry_modul.PobierzParametryRamki(frame)(); </syntaxhighlight> === Omówienie przypadku istnienia tego samego wariantu zmiennej raz podtablicą, a raz jako zmienna nietablicowa === * Wtedy ta zmienna w przedostatnim przykładzie jest pod wartością {{Code|tekst}}, gdy wartość {{Code|frame}} jest tablicą, * lub może być jedyną wartością, którą jest {{Code|frame}}, jako zmienna nietablicowa, wtedy ta zmienna też jest pod {{Code|tekst}}, ** ta funkcja uzyskana z: {{Code|{{sr|#p.PobierzParametryRamki(frame)|p=Parametry}}}}, wtedy może być wywołana tylko raz z nienilową wartością zwracaną, następnym razem zwraca wartość {{Code|nil}}, wtedy to dotyczy przedostatniego i ostatniego przykładu. === Jakma liczyć element funkcji w przypadku różnych jej parametrów === Jeżeli {{Code|frame}} jest nietablicowa, to wtedy wartość {{Code|tekst}} jest taka sama, co {{Code|frame}}. A jeżeli jest tablicą, to ta wartością jest {{Code|frame.args["tekst"]}}, lub gdy {{Code|args}} nie istnieje, lub istnieje, ale jest nietablicowa, to wtedy ta wartość jest {{Code|frame["tekst"]}}. === Parametry alternatywne funkcji - przykład wykorzystania funkcji parametrów === A gdy zmienne istnieją pod wieloma kluczami, lub gdy funkcję wywołano ze zmienną nietablicową, wtedy ogólnie możemy dla przykładu powiedzieć: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local PobierzParametryRamki=parametry_modul.PobierzParametryRamki(frame); local wartosc1=PobierzParametryRamki("nazwa1") or PobierzParametryRamki(1); local wartosc2=PobierzParametryRamki("nazwa2") or PobierzParametryRamki(2); local wartosc3=PobierzParametryRamki("nazwa3") or PobierzParametryRamki(3); </syntaxhighlight> * Wtedy ta zmienna jest pod kluczem, np.: {{Code|nazwa1}} lub {{Code|1}}, tablicy ramki {{Code|frame}} tablicy transportu, następne wywołania dla następnych kluczy też zrzucą pewne wartości, * lub jest ona zwykłą nietablicową wartością mogącą być równą, nawet {{Code|nil}}. ---- * Następne wywołania uzyskanej tak funkcji w przypadku, gdy {{Code|frame}} jest nietablicowy, rzucać będzie z samej definicji funkcji wartości {{Code|nil}}, czyli {{Code|wartosc2{{=}}wartosc3{{=}}nil}}, ale za to wartość {{Code|wartosc1}} nie musi być, ale może, wartością {{Code|nil}}, jeśli tą wartością jest, gdy {{Code|frame{{=}}nil}}, * w przeciwnym wypadku za pierwszym razem tej wartości nietablicowej uzyskamy wartość nie {{Code|nil}}, a za drugim i dalszym zawsze wartość {{Code|nil}}. == {{Code|p.PobierzElementNumerowanyZFrameLubTablicy}} == Definicja skrótowa funkcji jest z parametrem charakteryzującym pewien zestaw zmiennych {{Code|frame}}, * które nie musi być tablicą ramki tablicy transportu, tylko moze być innym parametrem, który jest tablicą parametrów podanych do funkcji, * nawet gdy parametrem podanym do funkcji, w której wykorzystujemy tą funkcję, jest jedyna zmienna będąca tablicą ramki. Ale z drugiej strony, tak nie musi być, może być to rozbudowany zestaw zmiennych, np. nazwanych i nienazwanych, którego wszystkie sposoby podawania łączymy jednym sposobem podawania. Mimo że parametry funkcji są parametrami nienazwanymi, mogą być one ponumerowane, ale zmienna w tablicy może przyjmować wartość tą samą na różne sposoby, raz w sposób nazwany, a za innym sposobem jako nienazwany. Ogólnie ostateczne parametry łączymy w dane parametry za pomocą jednego sposobu, tzn. za pomocą tej funkcji, i dla tak uzyskanej tablicy tworzymy funkcję zwracaną przez funkcję w nagłówku, która przyjmuje parametr, który jest kluczem tej uzyskanej tablicy. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobierzElementNumerowanyZFrameLubTablicy(frame)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu. }} Weźmy najprostszy sposób realizacji tej funkcji, w realizacji: {{Code|1-1, 2-2, 3-3}}, czyli ten opis jest zaraz poniżej. === Sposoby wywołania funkcji === ; Pierwszy sposób{{dk}} Weźmy funkcję, którą można wywoływać z wieloma parametrami, jak i w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, którą przykładowo piszemy jego wywołanie wewnątrz innej funkcji na pięć sposobów, czyli teraz pierwszy sposób z tylko z parametrem, więc tablicą ramki tablicy transportu wywodzącą się z ramki uruchomioną w wikikodzie w jakimś szablonie rodzicu: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"](frame); </syntaxhighlight> ; Drugi sposób{{dk}} A teraz drugi sposób, pisząc, bezpośrednio inaczej, formułując wywołanie tej funkcji, używając zmiennych tablicowych tablicy ramki, ale to nie jest tak naprawdę tablica ramka tablicy transportu, tylko parametr podany bezpośrednio do funkcji, tak jak się to robi w języku {{lpg|Lua}}, nie jak w przykładzie powyżej, więc: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"]{args={"wartość1","wartość2","wartość3",},}; </syntaxhighlight> ; Trzeci sposób{{dk}} Lub równoważnie, pisząc, nie używając zmiennej {{Code|args}}: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"]{"wartość1","wartość2","wartość3",}; </syntaxhighlight> ; Czwarty sposób{{dk}} Albo te parametry wsadzając do funkcji: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"]("wartość1","wartość2","wartość3"); </syntaxhighlight> ; Piąty spssób{{dk}} Można też wywołać to wszystko w ramce, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w wikikpdzie, wtedy wsadzając parametry do ramki: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|wartość1|wartość2|wartość3}} </syntaxhighlight> === Omówienie pobierania takich parmetrów === A jak połączyć wszystkie te pięć sposobów, posługiwać się tymi sposobami wewnątrz funkcji {{Code|Nazwa funkcji}} w sposób jednolity, jedynie wtedy należy skorzystać z funkcji z definiowaną w jakimś module w sposób: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(...) local tablica_prametrow_funkcji={...}; local parametry_modul=require("Module:Parametry"); local PobierzElementNumerowanyZFrameLubTablicy=parametry_modul.PobierzElementNumerowanyZFrameLubTablicy(tablica_prametrow_funkcji); ... end; </syntaxhighlight> Wtedy za pomocą zmiennej {{Code|PobierzElementNumerowanyZFrameLubTablicy}} dostaliśmy się do funkcji, która przyjmuje jedyny parametr, aby dostać się do elementów tablicy uzyskanej w wewnątrz tej funkcji, zdefiniowaną w tablicy {{Code|tablica_prametrow_funkcji}}, która jest nic innym jak zestawem parametrów w funkcji: {{Code|Nazwa funkcji}}. === Omówienie sposobów wykorzystywania, robienia tego samego, na różne warianty === * W pierwszym i drugim sposobem zmienną tą nazwijmy to jako {{Code|args}}, jest zmienną z podtablicy innego {{Code|args}} przekazanych jako parametr tablicy do funkcji, * w trzecim sposobie tą zmienną jest cała tablica, * a czwartym jest zestaw parametrów ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. A czym się różnią się te sposoby, a więc te sposoby można powiązać jedną tylko funkcją powiedzianą w nagłówku według przykładu podaną zaraz powyżej, wtedy możemy dostawać się do tych samych zmiennych o takich samych nazwach i wartościach, ale w różnych reprezentacjach na różne sposoby, wtedy można powiedzieć, że: <syntaxhighlight lang="lua"> args[1]="wartość1"; args[2]="wartość2"; args[3]="wartość3"; </syntaxhighlight> === Ogólny opis stosowania funkcji === Czyli w wyniku działania funkcji w nagłówku, otrzymamy funkcję zwracającą te wartości, która operuje na tej tablicy, której wynikiem jest zestaw zmiennych ponumerowanych, ogólnie nienazwanych, której wartości odpowiadają te podane w ramce ostatniej powyżej. Na podstawie tego wiemy, jak działa funkcja ta z nagłówka. === Nazwy alternatywne danych parametrów funkcji ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}} === Pisząc w inny sposób, można też wskazywać: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(...) local tablica_prametrow_funkcji={...}; local parametry_modul=require("Module:Parametry"); local PobierzElementNumerowanyZFrameLubTablicy=parametry_modul.PobierzElementNumerowanyZFrameLubTablicy(tablica_prametrow_funkcji); local wartosc1=PobierzElementNumerowanyZFrameLubTablicy("nazwa1") or PobierzElementNumerowanyZFrameLubTablicy(1); local wartosc2=PobierzElementNumerowanyZFrameLubTablicy("nazwa2") or PobierzElementNumerowanyZFrameLubTablicy(2); local wartosc3=PobierzElementNumerowanyZFrameLubTablicy("nazwa3") or PobierzElementNumerowanyZFrameLubTablicy(3); end; </syntaxhighlight> Zmienne w przykładzie o kluczach: {{Code|nazwa1}}, {{Code|nazwa2}} i {{Code|nazwa3}}, posiadające pewne swoje wartości, to są zmienne w tablicy {{Code|tablica_prametrow_funkcji}}, podane też jako zmienne, jako pewne argumenty tablicy, który są w tej funkcji zwracanej jako argument (parametr) funkcji: * jeżeli argumenty podano w postaci jednego parametru funkcji w postaci pewnej tablicy z np. elementami nazwanymi, * lub jako wiele argumentów w ramce, w wikikodzie, w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w pewnym szablonie, * a rozpatrując dalej elementy względem ich nazw, np. alternatywnych, to te numery mogą być kolejo do nazw ich odpowiedników nazwanych, które w przykładzie powyżej, mają pierwszeństwo, ale tak nie musi być, te parametry: {{Code|1}}, {{Code|2}} i {{Code|3}}, to jest numer parametru. To stosujemy, jeżeli argumenty do funkcji podano w postaci wielu jego parametrów. == {{Code|p.PobierzParametr}} == Ta funkcja zwraca znów inną funkcję, która ma jedyny parametr, mówiący jakiego parametru poszukujemy, co jest wyjaśnione w definicji funkcji z nagłówka, że ona zwraca tą właśnie funkcje. Definicja skrótowa dunkcji: <syntaxhighlight lang="lua"> function p.PobierzParametr(frame,czy_frame_lub_parent,czy_frame) ... return function(nazwa) return __pobierz_parametr_table_args(nazwa); end; end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu. | 2 = {{Code|czy_frame_lub_parent}} i {{Code|czy_frame}} | _2 = Parametry logiczne dodatkowe funkcji. }} === Wartość zwracana i jego druga wartośc w postaci numeru metody === Funkcja zwraca jednocześnie dwie wartości, ta zwrócona z funkcji z nagłówka, prawdziwą wartość, i numer metody w postaci: {{Code|return wartosc, numer_metody}}. === Opis zwracanych elementów przez funkcję zwracaną - różne metody zwracania, jak je wykorzystać === Ta funkcja zwracana ma w swojej definicji jeszcze inną funkcję, wykorzystaną w nim. To jest za każdym razem inna funkcja w zależności z jakim typem danych się posługujemy {{Code|frame}}, i jakie podaliśmy parametry, tzn. czy ona jest tablicą. ==== Gdy funkcja ramki {{Code|pf.getParent}} istnieje lub posiada jego fałszywą definicję ==== Gdy warunkiem, gdy zmienna {{Code|frame}} jest tablicą, czyli te zmienne druga: {{Code|czy_frame_lub_parent}} (jeżeli funkcja jest uruchomiona w ramce w szablonie, jeżeli ma wartość {{Code|true}}, to ona wybiera raz parametr z: {{Code|frame.args[nazwa or 1]}}, a za innym razem z {{Code|pf.args[nazwa or 1]}}, gdzie {{Code|pf{{=}}frame:getParent()}}, tutaj jest zwracana wartość: {{Code|return wartosc,2}}). ==== Gdy funkcja ramki istnieje, i gdy: {{Code|czy_frame_lub_parent}}, jest fałszywe, albo ta tablica nie jest ramką, nawet bez fałszywej definicji funkcji fałszywej ramki parametrów rodzica ==== Czy trzecia: {{Code|czy_frame}} (która mówi, jeżeli funkcję uruchomiono w ramce, ale przy wartości prawdziwej tego pierwszego podanego parametru, czyli {{Code|true}}, wybierana jest zawsze wartość {{Code|frame.args[nazwa or 1]}}, w przeciwnym wypadku uruchamiana jest funkcja {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, tutaj zwracana jest wartość {{Code|return wartosc,1}}). ==== Wartość nietablicowa funkcji parametrów ==== Jeżeli wartością {{Code|frame}} jest wartość nietablicowa, ale niebędącą wartością {{Code|nil}}, wtedy ustawiana jest funkcja, która tylko za pierwszym razem zwraca nienilową wartość {{Code|return wartosc,0}}, a później zwraca wartość {{Code|return nil,0}}. ==== Przypadek nietablicowa wartości, ale nilowej funkcji parametrów ==== Gdy wartością {{Code|frame}} jest {{Code|nil}}, to funkcja zawsze wraca tą wartość {{Code|return nil,0}}. ==== Fałszywa funkcja ramki parametrów rodzica ==== Ta funkcja parametrów działa dobrze, gdy zdefiniujemy w parametrach funkcji fałszywą funkcję {{Code|frame.getParent}}. ==== Brak definicji funkcji ramki parametrów rodzica ==== Gdy funkcja nie jest uruchamiana w ramce lub funkcja {{Code|frame.getParent}} nie jest zdefiniowana, to wtedy funkcja wchodzi zawsze w ten jej krok, jakby {{Code|czy_frame_lub_parent}} było {{Code|false}} według tego powyżej, to wtedy brana jest zmienna {{Code|czy_frame}}, i jaką wartość ona przyjmuje. === Nazwy alternatywne parametrów === Funkcję pisze się według sposobu, którą się wywołuje według: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame); local wartosc1=PobierzParametr("nazwa1") or PobierzParametr(1); local wartosc2=PobierzParametr("nazwa2") or PobierzParametr(2); local wartosc3=PobierzParametr("nazwa3") or PobierzParametr(3); </syntaxhighlight> Na wypadek wartości nietabelowej, tą wartość zapisuje się jako pierwszą w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a dla wartości tabelowych, jaka jest kolejność to jest obojętne, byle by to było sensowne. === Wywołania funkcji w ramce, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, z funkcją parametrów === Tę funkcję podobnie się wywołuje jak funkcję: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}. Wartością {{Code|frame}} nie musi być tablica ramki tablicy transportu, równie dobrze może być to dowolna tablica lub wartość nietablicowa. Weźmy ramkę, w której uruchamiamy funkcję ramki: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}} </syntaxhighlight> === Przykłady wykorzystania funkcji === ; Przykład pierwszy{{dk}} Ona musi być wywołana z parametrem {{Parametr|wyspecjalizowana|tak}}, jako podpowiedź, że liczą się parametry ramki dziecka, a nie jego rodzica, czyli szablonu. Wtedy funkcję {{Code|Nazwa funkcji}} definiujemy: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame,true); ... end; </syntaxhighlight> Wtedy parametr {{Parametr|wyspecjalizowana|tak}} jest ignorowany, a przy wartości {{Code|false}} drugiego parametru funkcji, czyli wywołania: {{Code|local PobierzParametr{{=}}parametry_modul.PobierzParametr(frame,false);}}, już nie, ale nie zawsze. W takim przypadku według powyższego przykładu raz jest brana wartość, jeżeli istnieje, z {{Code|frame.args}}, a jak ona nie istnieje, to wtedy z: {{Code|pf.args}}. ; Przykład drugi{{dk}} Weźmy inny przypadek: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame,false,true); ... end; </syntaxhighlight> Przy tym też parametr: {{Parametr|wyspecjalizowana|tak}}, jest ignorowany, wtedy jest zawsze wybierana do rozważań tablica: {{Code|frame.args}}. ; Przykład trzeci{{dk}} Znów w innym przypadku, gdzie parametr: {{Parametr|wyspecjalizowana|tak}}, jest zawsze rozważany w naszym wypadku: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame,false,false); ... end; </syntaxhighlight> To to wywołanie, wtedy dokładnie działa jak funkcja: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, a zwrócona funkcja: {{Code|PobierzParametr}} pobiera elementy z tak uzyskanej tablicy {{Code|args}} poprzez nią. === Przypadek nietablicowego charakteru parametrów funkcji === W przypadku, gdy {{Code|frame}} nie jest tablicą, wtedy parametry: {{Code|czy_frame_lub_parent}} i {{Code|czy_frame}}, są w takim przypadku zawsze ignorowane, ale muszą być ustawione na wypadek, gdyby do funkcji {{Code|Nazwa funkcji}} wsadzono tablicę, np. z ramki, tzn. tablicę ramki funkcji tablicy transportu. === Ogólny przypadek, często stosowany === Najprostszym często ogólnym przykładem, który prawie zawsze jest stosowany: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame); ... end; </syntaxhighlight> Wtedy parametr: {{Parametr|wyspecjalizowana|tak}}, jest prawie zawsze nieignorowany, ale nie zawsze. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> pjcpdb29c0dbyctz198trb4pr074sja 555757 555756 2026-09-11T21:14:39Z Persino 2851 /* p.PobierzParametryRamki */ 555757 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} Są tutaj przedstawione funkcje parametrów. == {{Code|p.PobierzFrameEwentualnieParent}} == Argument tej funkcji {{Code|frame}} koniecznie musi być tablicą, w przypadku przeciwnym wywoła to błąd języka {{lpg|Lua}}, że z wartości nietabelowej chcemy wyliczyć jego nieistniejący element {{Code|getParent}}, który ma prawo nie być. Funkcja pobiera parametry ramki szablonu rodzica, a nie dziecka, a jeżeli w dziecku w ramce w wikikodzie w szablonie podamy specjalny parametr {{Parametr|wyspecjalizowana|tak}}, to wtedy ta funkcja ściąga parametry ramki. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobierzFrameEwentualnieParent(frame)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu. }} === Sterowanie funkcją === Tą funkcją można sterować ze strony ramki tym właśnie specjalnym parametrem o wartości niepustej, którą jest {{Parametr|wyspecjalizowana|tak}}. ==== Przykłady wykorzystania z parametrem sterującym ==== W ramce podajemy argumenty wraz z tym specjalnym parametrem: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}} </syntaxhighlight> To wtedy w kodzie w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} w module o nazwie {{Code|Nazwa modułu}}, piszemy: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzFrameEwentualnieParent(frame).args; .... end; </syntaxhighlight> To wtedy w kodzie ściągane parametry ramki dziecka. === Pobieranie oryginalnej tablicy === Tę funkcję można równie dobrze wykorzystać do zwykłych tabel: <syntaxhighlight lang="lua"> local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzFrameEwentualnieParent(tabela); </syntaxhighlight> === Możliwość tej samej funkcji uruchomioną w ramce lub z podaniem do niej pewnego zestawu parametrów w postaci tablicy === A w tym przypadku ta funkcja nic nie robi, tylko zmienna {{Code|args}} referencyjnie wskazuje na tablicę {{Code|tablica}}. Ale można ją wykorzystać, gdy by funkcja {{Code|Nazwa funkcji}}, była uruchomiona ze zwykłą tablicą, ale z możliwością, że to może być tablicą ramki {{Code|frame}} tablicy transportu, np.: <syntaxhighlight lang="lua"> --- Pierwsza możliwość; local wartosc1=p["Nazwa funkcji"](frame); -- Druga możliwość local wartosc2=p["Nazwa funkcji"]{["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; </syntaxhighlight> === Niedogodności stosowania z funkcji === Dla obu jest taka niedogodność, że jedynie jest taka nieprawidłowość, że w przypadku parametru tablicy ramki tablicy transportu należy podawać uzyskany element {{Code|args}}, a w przypadku zwykłej tablicy już nie, tą niedokodność rozwiązuje funkcja: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}. == {{Code|p.PobierzArgsParametry}} == Argument tej funkcji {{Code|frame}} koniecznie nie musi być tablicą, bo wtedy nie wywoła to błędu języka {{lpg|Lua}}, że z wartości nietabelowej chcemy wyliczyć jego niepusty element {{Code|getParent}}, bo przedtem sprawdzana jest w tej funkcji, czy jest to tablica. W definicji tej funkcji zmienna uzyskana z funkcji: {{Code|{{sr|#p.PobierzFrameEwentualnieParent(frame)|p=Parametry}}}}, a jeśli jej składowa {{Code|args}} jest tablicą, to jest właśnie ona zwracana, a jeśli istnieje, ale nie jest tablicą, lub ona nie istnieje, to wtedy brana jest właśnie wartość tablicowa {{Code|frame}}, jeśli jest ona taka, a gdy nie, to wtedy z tej funkcji tutaj nie korzystamy. Funkcja pobiera parametry ramki szablonu rodzica, a nie dziecka, a jeżeli w dziecku w ramce w wikikodzie w szablonie podamy specjalny parametr {{Parametr|wyspecjalizowana|tak}}, to wtedy ta funkcja ściąga parametry ramki. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobierzArgsParametry(frame, czy_nie_tablica_jako_tablica)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica transportu ramki. | 2 = {{Code|czy_nie_tablica_jako_tablica}} | _2 = Czy wartości nietablicowe umieszczać w jednoelemenowej tabeli. }} === Opis działania === Funkcja wykorzystuje wspomnianą powyżej funkcję do swojego działania, ona jest wtedy aktywowana, gdy zmienna {{Code|frame}} jest tablicą, i jest sprawdzane, czy ona posiada nazwany element o kluczu {{Code|args}}, i czy jest on tablicowy. Jeżeli wartością zmiennej {{Code|frame}} nie jest tablica, ale nie przybiera wartości {{Code|nil}}, to ona jest umieszczana w tablicy, jeżeli zmiennej {{Code|czy_nie_tablica_jako_tablica}} przydzielimy wartość {{Code|true}}, w przeciwnym wypadku zwracana jest ona w postaci niezmienionej, a jeżeli wartość tej zmiennej nie istnieje, to zwracana jest zwykła tablica pusta. Tą funkcją można sterować ze strony ramki tym właśnie specjalnym parametrem o wartości niepustej. === Przykład wywołania funkcji z funkcją parametrów === W ramce podajemy argumenty wraz z tym specjalnym parametrem: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}} </syntaxhighlight> ==== Użycie funkcji parametrów ==== To wtedy w kodzie w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} w module o nazwie {{Code|Nazwa modułu}}, piszemy: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(frame); .... end; </syntaxhighlight> To wtedy w kodzie ściągane parametry ramki dziecka. === Wykorzystanie fukcji w różnych sytuacjach === ; Przypadek pierwszy{{dk}} Tę funkcję można równie dobrze wykorzystać do zwykłych tabel: <syntaxhighlight lang="lua"> local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(tabela); </syntaxhighlight> ; Drugi przypadek{{dk}} A w tym przypadku ta funkcja nic nie robi, tylko zmienna {{Code|args}} referencyjnie wskazuje na tablicę {{Code|tablica}}. Ale można ją wykorzystać, gdyby funkcja {{Code|Nazwa funkcji}}, była uruchomiona ze zwykłą tablicą, ale z możliwością, że to może być tablicą ramki {{Code|frame}} tablicy transportu, np.: <syntaxhighlight lang="lua"> --- Pierwsza możliwość; local wartosc1=p["Nazwa funkcji"](frame); -- Druga możliwość local wartosc2=p["Nazwa funkcji"]{["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; </syntaxhighlight> === Usunięcie niedogodności === Dla obu tych przypadków nie ma żadnej niedogodności, jak to występowała w {{Code|{{sr|#p.PobierzFrameEwentualnieParent(frame)|p=Parametry}}}}. === Parametr funkcji nietablicowy === Jeśliby do funkcji tablicy transportu dać wartość równą nie tablicy, to wtedy równoważnie możemy napisać: <syntaxhighlight lang="lua"> local wartosc="wartość"; local wynik=p["Nazwa funkcji"](wartosc); </syntaxhighlight> to wtedy definicję tej funkcji piszemy: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(frame,true); local wartosc=args[1]; end; </syntaxhighlight> lub równoważnie możemy zapisać: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); local wartosc=parametry_modul.PobierzArgsParametry(frame); end; </syntaxhighlight> === Brak parametrów funkcji === A jeżeli nie wsadziliśmy żadnej wartości do funkcji ramki tablicy transportu lub tą wartością jest {{Code|nil}}, wtedy: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"](); </syntaxhighlight> wtedy definicja tej funkcji wygląda: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); -- Zmienna: args, wskazuje na wartość, którą jest tablicą pustą, tzn. w tej tablicy nie ma wcale elementów; local args=parametry_modul.PobierzArgsParametry(frame); end; </syntaxhighlight> === Zmienna {{Code|args}} - alternatywny przypadek dla wartości tablicowych niż te bez drugiego parametru === Widzimy, że wtedy zmienna {{Code|args}} jest normalną, niekoniecznie niepusta, tablicą, i nie musimy wtedy wcale pisać drugiego parametru w tej fubkcji, bo wtedy wychodzi w tym przypadku na to samo: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(frame,true); </syntaxhighlight> === Różnica drugiego parametru w przypadku wartości nietablicowych === Argument drugi w {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, który w naszym przypadku musi mieć wartość {{Code|true}}, a wtedy jest jedynie sens, gdy {{Code|frame}} nie jest tablicą, i gdy chcemy tą wartość umieścić w tablicy, a nie powtórzyć wartość, tzn. chcemy napisać: {{Code|{{(}}frame,{{)}}}}, w przeciwnym wypadku musilibyśmy napisać coś w rodzaju, zamiast tak spreparowanej tablicy: {{Code|frame}}, czyli: <syntaxhighlight lang="lua"> -- Pierwszy przypadek, gdy frame jest wartością nietablicową; local parametry_modul=require("Module:Parametry"); ... -- Zwracana wartość: args, to nic innego niż: {frame,}; local args=parametry_modul.PobierzArgsParametry(frame,true); ... -- Zwracana wartość: args, to nic innego niż: frame, a nie {frame,}, jak poprzednio; local args=parametry_modul.PobierzArgsParametry(frame); </syntaxhighlight> == {{Code|p.PobierzParametryRamki}} == Funkcja służy do pobierania parametrów ramki dziecka, nie rodzica. Funkcja służy do ustawienia pewnych domyślnych dwóch pewnych funkcji służących do pobieranie danych z tabelki z pierwszej tej funkcji: * Jeżeli ona posiada klucz o wartości {{Code|args}}, ** to zwracana jest ta właśnie tablica jako argument pierwszej tej funkcji, jeżeli jest w ogóle tablicą, ** w przeciwnym wypadku zwracana jest ta oryginalna tablica, też jako argument tej funkcji, * w przeciwnym dalszym wypadku zwracana jest zwracana wartość ta, jako argument tej drugiej funkcji, która zwraca prawdziwą wartość z argumentu tylko za pierwszym razem, z tej funkcji, za następnym i dalszym razem {{Code|nil}}. Z tak utworzonej ogólnie większej funkcji wykorzystywana jest w budowie omawianej funkcji, która jest zwracana przez omawianą funkcję, która względem jego budowy wywołuje raz pierwszą albo drugą poprzednią wspomnianą funkcję zależną od rodzaju zmiennej {{Code|frame}}, która może być tabelką, ale nie musi być. Ta funkcja zwracana przez funkcję w nagłówku przyjmuje argument, która jest kluczem do tych wspomnianych, może że, * tabel (dokładnie, która ta może tabelka to zależy od formatu tej naszej rozważanej zmiennej), * a jeżeli to nie tabelka, co jest zwracane, to już zostało powiedziane. Definicja skrótowa tej funkcji jest: <syntaxhighlight lang="lua"> function p.PobierzParametryRamki(frame)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu. }} Weźmy ramkę sformułowaną w wikikodzie jako dziecko w szablonie rodzicu: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5}} </syntaxhighlight> === Funkcje, z funkcją parametrów, z tablicą ramki lub one z podtablicą {{Code|args}} === To wtedy tablica ramki tablicy transportu posiada właśnie {{Code|frame}}, która jest tablicą, i na pewno posiada tablicę o nazwie {{Code|args}}, to wtedy tę funkcję wywołaną w ramce, która wywołuje funkcję w nagłówku, formułujemy: <syntaxhighlight lang="lua"> local p={}; local p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametryRamki=parametry_modul.PobierzParametryRamki(frame); ... end; </syntaxhighlight> ==== Przykład wywołania funkcji z funkcją parametrów z tablicą {{Code|args}} ==== Równie dobrze funkcję z ramki można wywołać w sposób, co wtedy ta funkcja też zostanie wywołana pozytywnie: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"]{args={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}}; </syntaxhighlight> W tej funkcji nie trzeba definiować funkcji fałszywej {{Code|getParent}}, w postaci: {{Code|getParent{{=}}function()end}}. Widzimi, że ta tablica posiada nazwę zmiennej tablicowej o nazwie {{Code|args}}, ale ona nie jest tablicą ramki tablicy transportu, ale tą tablicę możemy bezposrednio wsadzić w tą główną tablicę w samym argumencie funkcji. ==== Przykład wywołania z tablicą bez podtablicy {{Code|args}} ==== Równie dobrze możemy wywołać tę funkcję zdefiniowaną naszą w jakimś module w sposób: <syntaxhighlight lang="lua"> local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; local wynik=p["Nazwa funkcji"]{tabela); </syntaxhighlight> Też ta funkcja prawidłowo się wywoła. W tym przypadku, jak i w przypadkach powyżej, wyniki uzyskuje się w następującym wywołaniach: <syntaxhighlight lang="lua"> --- Zmienna: wartosc1, przyjmuje wartość: "wartość1"; local wartosc1=PobierzParametryRamki("nazwa1"); --- Zmienna: wartosc2, przyjmuje wartość: "wartość2"; local wartosc2=PobierzParametryRamki("nazwa2"); --- Zmienna: wartosc3, przyjmuje wartość: "wartość3"; local wartosc3=PobierzParametryRamki(1); </syntaxhighlight> ==== Przykład wywołania funkcji z wartością nietablicową ==== W innym przypadku wywołań funkcji ramki jest wsadzenie do niej zwykłego nietablicowego elementu, może być też to wartość: {{Code|nil}}. A to wywołanie jest: <syntaxhighlight lang="lua"> local wartosc="wartość"; --Zmienna: wartosc, nie jest w tym przypadku tablicą; local wynik=p["Nazwa funkcji"](wartosc); </syntaxhighlight> === Wywołania funkcji parametrów bez argumentów - wiele kolejnych wywołań jednocześnie === Wtedy w tej ramce w celu uzyskania, jakikolwiek wartości jest przykład wywołania tej funkcji zwracanej przez funkcję w ramce z argumentem pustym. <syntaxhighlight lang="lua"> -- Zmienna: wartość1, przyjmuje wartość: "wartość"; Jeżeli ona, przyjmuje wartość: nil, to wywołanie rzuci: nil, i za każdym następny razem; local wartosc1=PobierzParametryRamki(); -- Zmienna: wartość2, przyjmuje wartość: nil; local wartosc2=PobierzParametryRamki(); </syntaxhighlight> W wywołaniach powinno dbać się o właściwą kolejność wywołań, bo argumentem funkcji z tablicy transportu może być zwykła tablicowa wartość. Najpierw uzyskujemy wartości nietablicowe, a później tablicowe, na wypadek niewiadomej {{Code|frame}} jakiego typu ma być wartość. === Dwa przypadki, parametr w tablicy, lub wartość nietablicowa funkcji === Też ta zmienna może istnieć pod kilkoma możliwymi kluczami, lub tą zmienną może być jedyny argument funkcji, która jest nietablicową wartością, wtedy ją się wywołuje jako dla przypadku, gdy parametr jest nietablicowy lub jest pod kluczem {{Code|tekst}}: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local tekst=parametry_modul.PobierzParametryRamki(frame)("tekst"); </syntaxhighlight> === Przypadek, gdy parametr funkcji nie jest tablicą === Lub chcemy tę funkcję wywołać bezparametrowo, gdy chcemy, by {{Code|frame}} nie była tablicą: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local tekst=parametry_modul.PobierzParametryRamki(frame)(); </syntaxhighlight> === Omówienie przypadku istnienia tego samego wariantu zmiennej raz podtablicą, a raz jako zmienna nietablicowa === * Wtedy ta zmienna w przedostatnim przykładzie jest pod wartością {{Code|tekst}}, gdy wartość {{Code|frame}} jest tablicą, * lub może być jedyną wartością, którą jest {{Code|frame}}, jako zmienna nietablicowa, wtedy ta zmienna też jest pod {{Code|tekst}}, ** ta funkcja uzyskana z: {{Code|{{sr|#p.PobierzParametryRamki(frame)|p=Parametry}}}}, wtedy może być wywołana tylko raz z nienilową wartością zwracaną, następnym razem zwraca wartość {{Code|nil}}, wtedy to dotyczy przedostatniego i ostatniego przykładu. === Jakma liczyć element funkcji w przypadku różnych jej parametrów === Jeżeli {{Code|frame}} jest nietablicowa, to wtedy wartość {{Code|tekst}} jest taka sama, co {{Code|frame}}. A jeżeli jest tablicą, to ta wartością jest {{Code|frame.args["tekst"]}}, lub gdy {{Code|args}} nie istnieje, lub istnieje, ale jest nietablicowa, to wtedy ta wartość jest {{Code|frame["tekst"]}}. === Parametry alternatywne funkcji - przykład wykorzystania funkcji parametrów === A gdy zmienne istnieją pod wieloma kluczami, lub gdy funkcję wywołano ze zmienną nietablicową, wtedy ogólnie możemy dla przykładu powiedzieć: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local PobierzParametryRamki=parametry_modul.PobierzParametryRamki(frame); local wartosc1=PobierzParametryRamki("nazwa1") or PobierzParametryRamki(1); local wartosc2=PobierzParametryRamki("nazwa2") or PobierzParametryRamki(2); local wartosc3=PobierzParametryRamki("nazwa3") or PobierzParametryRamki(3); </syntaxhighlight> * Wtedy ta zmienna jest pod kluczem, np.: {{Code|nazwa1}} lub {{Code|1}}, tablicy ramki {{Code|frame}} tablicy transportu, następne wywołania dla następnych kluczy też zrzucą pewne wartości, * lub jest ona zwykłą nietablicową wartością mogącą być równą, nawet {{Code|nil}}. ---- * Następne wywołania uzyskanej tak funkcji w przypadku, gdy {{Code|frame}} jest nietablicowy, rzucać będzie z samej definicji funkcji wartości {{Code|nil}}, czyli {{Code|wartosc2{{=}}wartosc3{{=}}nil}}, ale za to wartość {{Code|wartosc1}} nie musi być, ale może, wartością {{Code|nil}}, jeśli tą wartością jest, gdy {{Code|frame{{=}}nil}}, * w przeciwnym wypadku za pierwszym razem tej wartości nietablicowej uzyskamy wartość nie {{Code|nil}}, a za drugim i dalszym zawsze wartość {{Code|nil}}. == {{Code|p.PobierzElementNumerowanyZFrameLubTablicy}} == Definicja skrótowa funkcji jest z parametrem charakteryzującym pewien zestaw zmiennych {{Code|frame}}, * które nie musi być tablicą ramki tablicy transportu, tylko moze być innym parametrem, który jest tablicą parametrów podanych do funkcji, * nawet gdy parametrem podanym do funkcji, w której wykorzystujemy tą funkcję, jest jedyna zmienna będąca tablicą ramki. Ale z drugiej strony, tak nie musi być, może być to rozbudowany zestaw zmiennych, np. nazwanych i nienazwanych, którego wszystkie sposoby podawania łączymy jednym sposobem podawania. Mimo że parametry funkcji są parametrami nienazwanymi, mogą być one ponumerowane, ale zmienna w tablicy może przyjmować wartość tą samą na różne sposoby, raz w sposób nazwany, a za innym sposobem jako nienazwany. Ogólnie ostateczne parametry łączymy w dane parametry za pomocą jednego sposobu, tzn. za pomocą tej funkcji, i dla tak uzyskanej tablicy tworzymy funkcję zwracaną przez funkcję w nagłówku, która przyjmuje parametr, który jest kluczem tej uzyskanej tablicy. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobierzElementNumerowanyZFrameLubTablicy(frame)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu. }} Weźmy najprostszy sposób realizacji tej funkcji, w realizacji: {{Code|1-1, 2-2, 3-3}}, czyli ten opis jest zaraz poniżej. === Sposoby wywołania funkcji === ; Pierwszy sposób{{dk}} Weźmy funkcję, którą można wywoływać z wieloma parametrami, jak i w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, którą przykładowo piszemy jego wywołanie wewnątrz innej funkcji na pięć sposobów, czyli teraz pierwszy sposób z tylko z parametrem, więc tablicą ramki tablicy transportu wywodzącą się z ramki uruchomioną w wikikodzie w jakimś szablonie rodzicu: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"](frame); </syntaxhighlight> ; Drugi sposób{{dk}} A teraz drugi sposób, pisząc, bezpośrednio inaczej, formułując wywołanie tej funkcji, używając zmiennych tablicowych tablicy ramki, ale to nie jest tak naprawdę tablica ramka tablicy transportu, tylko parametr podany bezpośrednio do funkcji, tak jak się to robi w języku {{lpg|Lua}}, nie jak w przykładzie powyżej, więc: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"]{args={"wartość1","wartość2","wartość3",},}; </syntaxhighlight> ; Trzeci sposób{{dk}} Lub równoważnie, pisząc, nie używając zmiennej {{Code|args}}: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"]{"wartość1","wartość2","wartość3",}; </syntaxhighlight> ; Czwarty sposób{{dk}} Albo te parametry wsadzając do funkcji: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"]("wartość1","wartość2","wartość3"); </syntaxhighlight> ; Piąty spssób{{dk}} Można też wywołać to wszystko w ramce, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w wikikpdzie, wtedy wsadzając parametry do ramki: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|wartość1|wartość2|wartość3}} </syntaxhighlight> === Omówienie pobierania takich parmetrów === A jak połączyć wszystkie te pięć sposobów, posługiwać się tymi sposobami wewnątrz funkcji {{Code|Nazwa funkcji}} w sposób jednolity, jedynie wtedy należy skorzystać z funkcji z definiowaną w jakimś module w sposób: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(...) local tablica_prametrow_funkcji={...}; local parametry_modul=require("Module:Parametry"); local PobierzElementNumerowanyZFrameLubTablicy=parametry_modul.PobierzElementNumerowanyZFrameLubTablicy(tablica_prametrow_funkcji); ... end; </syntaxhighlight> Wtedy za pomocą zmiennej {{Code|PobierzElementNumerowanyZFrameLubTablicy}} dostaliśmy się do funkcji, która przyjmuje jedyny parametr, aby dostać się do elementów tablicy uzyskanej w wewnątrz tej funkcji, zdefiniowaną w tablicy {{Code|tablica_prametrow_funkcji}}, która jest nic innym jak zestawem parametrów w funkcji: {{Code|Nazwa funkcji}}. === Omówienie sposobów wykorzystywania, robienia tego samego, na różne warianty === * W pierwszym i drugim sposobem zmienną tą nazwijmy to jako {{Code|args}}, jest zmienną z podtablicy innego {{Code|args}} przekazanych jako parametr tablicy do funkcji, * w trzecim sposobie tą zmienną jest cała tablica, * a czwartym jest zestaw parametrów ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. A czym się różnią się te sposoby, a więc te sposoby można powiązać jedną tylko funkcją powiedzianą w nagłówku według przykładu podaną zaraz powyżej, wtedy możemy dostawać się do tych samych zmiennych o takich samych nazwach i wartościach, ale w różnych reprezentacjach na różne sposoby, wtedy można powiedzieć, że: <syntaxhighlight lang="lua"> args[1]="wartość1"; args[2]="wartość2"; args[3]="wartość3"; </syntaxhighlight> === Ogólny opis stosowania funkcji === Czyli w wyniku działania funkcji w nagłówku, otrzymamy funkcję zwracającą te wartości, która operuje na tej tablicy, której wynikiem jest zestaw zmiennych ponumerowanych, ogólnie nienazwanych, której wartości odpowiadają te podane w ramce ostatniej powyżej. Na podstawie tego wiemy, jak działa funkcja ta z nagłówka. === Nazwy alternatywne danych parametrów funkcji ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}} === Pisząc w inny sposób, można też wskazywać: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(...) local tablica_prametrow_funkcji={...}; local parametry_modul=require("Module:Parametry"); local PobierzElementNumerowanyZFrameLubTablicy=parametry_modul.PobierzElementNumerowanyZFrameLubTablicy(tablica_prametrow_funkcji); local wartosc1=PobierzElementNumerowanyZFrameLubTablicy("nazwa1") or PobierzElementNumerowanyZFrameLubTablicy(1); local wartosc2=PobierzElementNumerowanyZFrameLubTablicy("nazwa2") or PobierzElementNumerowanyZFrameLubTablicy(2); local wartosc3=PobierzElementNumerowanyZFrameLubTablicy("nazwa3") or PobierzElementNumerowanyZFrameLubTablicy(3); end; </syntaxhighlight> Zmienne w przykładzie o kluczach: {{Code|nazwa1}}, {{Code|nazwa2}} i {{Code|nazwa3}}, posiadające pewne swoje wartości, to są zmienne w tablicy {{Code|tablica_prametrow_funkcji}}, podane też jako zmienne, jako pewne argumenty tablicy, który są w tej funkcji zwracanej jako argument (parametr) funkcji: * jeżeli argumenty podano w postaci jednego parametru funkcji w postaci pewnej tablicy z np. elementami nazwanymi, * lub jako wiele argumentów w ramce, w wikikodzie, w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w pewnym szablonie, * a rozpatrując dalej elementy względem ich nazw, np. alternatywnych, to te numery mogą być kolejo do nazw ich odpowiedników nazwanych, które w przykładzie powyżej, mają pierwszeństwo, ale tak nie musi być, te parametry: {{Code|1}}, {{Code|2}} i {{Code|3}}, to jest numer parametru. To stosujemy, jeżeli argumenty do funkcji podano w postaci wielu jego parametrów. == {{Code|p.PobierzParametr}} == Ta funkcja zwraca znów inną funkcję, która ma jedyny parametr, mówiący jakiego parametru poszukujemy, co jest wyjaśnione w definicji funkcji z nagłówka, że ona zwraca tą właśnie funkcje. Definicja skrótowa dunkcji: <syntaxhighlight lang="lua"> function p.PobierzParametr(frame,czy_frame_lub_parent,czy_frame) ... return function(nazwa) return __pobierz_parametr_table_args(nazwa); end; end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu. | 2 = {{Code|czy_frame_lub_parent}} i {{Code|czy_frame}} | _2 = Parametry logiczne dodatkowe funkcji. }} === Wartość zwracana i jego druga wartośc w postaci numeru metody === Funkcja zwraca jednocześnie dwie wartości, ta zwrócona z funkcji z nagłówka, prawdziwą wartość, i numer metody w postaci: {{Code|return wartosc, numer_metody}}. === Opis zwracanych elementów przez funkcję zwracaną - różne metody zwracania, jak je wykorzystać === Ta funkcja zwracana ma w swojej definicji jeszcze inną funkcję, wykorzystaną w nim. To jest za każdym razem inna funkcja w zależności z jakim typem danych się posługujemy {{Code|frame}}, i jakie podaliśmy parametry, tzn. czy ona jest tablicą. ==== Gdy funkcja ramki {{Code|pf.getParent}} istnieje lub posiada jego fałszywą definicję ==== Gdy warunkiem, gdy zmienna {{Code|frame}} jest tablicą, czyli te zmienne druga: {{Code|czy_frame_lub_parent}} (jeżeli funkcja jest uruchomiona w ramce w szablonie, jeżeli ma wartość {{Code|true}}, to ona wybiera raz parametr z: {{Code|frame.args[nazwa or 1]}}, a za innym razem z {{Code|pf.args[nazwa or 1]}}, gdzie {{Code|pf{{=}}frame:getParent()}}, tutaj jest zwracana wartość: {{Code|return wartosc,2}}). ==== Gdy funkcja ramki istnieje, i gdy: {{Code|czy_frame_lub_parent}}, jest fałszywe, albo ta tablica nie jest ramką, nawet bez fałszywej definicji funkcji fałszywej ramki parametrów rodzica ==== Czy trzecia: {{Code|czy_frame}} (która mówi, jeżeli funkcję uruchomiono w ramce, ale przy wartości prawdziwej tego pierwszego podanego parametru, czyli {{Code|true}}, wybierana jest zawsze wartość {{Code|frame.args[nazwa or 1]}}, w przeciwnym wypadku uruchamiana jest funkcja {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, tutaj zwracana jest wartość {{Code|return wartosc,1}}). ==== Wartość nietablicowa funkcji parametrów ==== Jeżeli wartością {{Code|frame}} jest wartość nietablicowa, ale niebędącą wartością {{Code|nil}}, wtedy ustawiana jest funkcja, która tylko za pierwszym razem zwraca nienilową wartość {{Code|return wartosc,0}}, a później zwraca wartość {{Code|return nil,0}}. ==== Przypadek nietablicowa wartości, ale nilowej funkcji parametrów ==== Gdy wartością {{Code|frame}} jest {{Code|nil}}, to funkcja zawsze wraca tą wartość {{Code|return nil,0}}. ==== Fałszywa funkcja ramki parametrów rodzica ==== Ta funkcja parametrów działa dobrze, gdy zdefiniujemy w parametrach funkcji fałszywą funkcję {{Code|frame.getParent}}. ==== Brak definicji funkcji ramki parametrów rodzica ==== Gdy funkcja nie jest uruchamiana w ramce lub funkcja {{Code|frame.getParent}} nie jest zdefiniowana, to wtedy funkcja wchodzi zawsze w ten jej krok, jakby {{Code|czy_frame_lub_parent}} było {{Code|false}} według tego powyżej, to wtedy brana jest zmienna {{Code|czy_frame}}, i jaką wartość ona przyjmuje. === Nazwy alternatywne parametrów === Funkcję pisze się według sposobu, którą się wywołuje według: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame); local wartosc1=PobierzParametr("nazwa1") or PobierzParametr(1); local wartosc2=PobierzParametr("nazwa2") or PobierzParametr(2); local wartosc3=PobierzParametr("nazwa3") or PobierzParametr(3); </syntaxhighlight> Na wypadek wartości nietabelowej, tą wartość zapisuje się jako pierwszą w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a dla wartości tabelowych, jaka jest kolejność to jest obojętne, byle by to było sensowne. === Wywołania funkcji w ramce, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, z funkcją parametrów === Tę funkcję podobnie się wywołuje jak funkcję: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}. Wartością {{Code|frame}} nie musi być tablica ramki tablicy transportu, równie dobrze może być to dowolna tablica lub wartość nietablicowa. Weźmy ramkę, w której uruchamiamy funkcję ramki: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}} </syntaxhighlight> === Przykłady wykorzystania funkcji === ; Przykład pierwszy{{dk}} Ona musi być wywołana z parametrem {{Parametr|wyspecjalizowana|tak}}, jako podpowiedź, że liczą się parametry ramki dziecka, a nie jego rodzica, czyli szablonu. Wtedy funkcję {{Code|Nazwa funkcji}} definiujemy: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame,true); ... end; </syntaxhighlight> Wtedy parametr {{Parametr|wyspecjalizowana|tak}} jest ignorowany, a przy wartości {{Code|false}} drugiego parametru funkcji, czyli wywołania: {{Code|local PobierzParametr{{=}}parametry_modul.PobierzParametr(frame,false);}}, już nie, ale nie zawsze. W takim przypadku według powyższego przykładu raz jest brana wartość, jeżeli istnieje, z {{Code|frame.args}}, a jak ona nie istnieje, to wtedy z: {{Code|pf.args}}. ; Przykład drugi{{dk}} Weźmy inny przypadek: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame,false,true); ... end; </syntaxhighlight> Przy tym też parametr: {{Parametr|wyspecjalizowana|tak}}, jest ignorowany, wtedy jest zawsze wybierana do rozważań tablica: {{Code|frame.args}}. ; Przykład trzeci{{dk}} Znów w innym przypadku, gdzie parametr: {{Parametr|wyspecjalizowana|tak}}, jest zawsze rozważany w naszym wypadku: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame,false,false); ... end; </syntaxhighlight> To to wywołanie, wtedy dokładnie działa jak funkcja: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, a zwrócona funkcja: {{Code|PobierzParametr}} pobiera elementy z tak uzyskanej tablicy {{Code|args}} poprzez nią. === Przypadek nietablicowego charakteru parametrów funkcji === W przypadku, gdy {{Code|frame}} nie jest tablicą, wtedy parametry: {{Code|czy_frame_lub_parent}} i {{Code|czy_frame}}, są w takim przypadku zawsze ignorowane, ale muszą być ustawione na wypadek, gdyby do funkcji {{Code|Nazwa funkcji}} wsadzono tablicę, np. z ramki, tzn. tablicę ramki funkcji tablicy transportu. === Ogólny przypadek, często stosowany === Najprostszym często ogólnym przykładem, który prawie zawsze jest stosowany: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame); ... end; </syntaxhighlight> Wtedy parametr: {{Parametr|wyspecjalizowana|tak}}, jest prawie zawsze nieignorowany, ale nie zawsze. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 08x9uugwr9uapgb20xqcp9z1qksbuv3 555758 555757 2026-09-11T21:17:34Z Persino 2851 /* p.PobierzElementNumerowanyZFrameLubTablicy */ 555758 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} Są tutaj przedstawione funkcje parametrów. == {{Code|p.PobierzFrameEwentualnieParent}} == Argument tej funkcji {{Code|frame}} koniecznie musi być tablicą, w przypadku przeciwnym wywoła to błąd języka {{lpg|Lua}}, że z wartości nietabelowej chcemy wyliczyć jego nieistniejący element {{Code|getParent}}, który ma prawo nie być. Funkcja pobiera parametry ramki szablonu rodzica, a nie dziecka, a jeżeli w dziecku w ramce w wikikodzie w szablonie podamy specjalny parametr {{Parametr|wyspecjalizowana|tak}}, to wtedy ta funkcja ściąga parametry ramki. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobierzFrameEwentualnieParent(frame)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu. }} === Sterowanie funkcją === Tą funkcją można sterować ze strony ramki tym właśnie specjalnym parametrem o wartości niepustej, którą jest {{Parametr|wyspecjalizowana|tak}}. ==== Przykłady wykorzystania z parametrem sterującym ==== W ramce podajemy argumenty wraz z tym specjalnym parametrem: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}} </syntaxhighlight> To wtedy w kodzie w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} w module o nazwie {{Code|Nazwa modułu}}, piszemy: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzFrameEwentualnieParent(frame).args; .... end; </syntaxhighlight> To wtedy w kodzie ściągane parametry ramki dziecka. === Pobieranie oryginalnej tablicy === Tę funkcję można równie dobrze wykorzystać do zwykłych tabel: <syntaxhighlight lang="lua"> local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzFrameEwentualnieParent(tabela); </syntaxhighlight> === Możliwość tej samej funkcji uruchomioną w ramce lub z podaniem do niej pewnego zestawu parametrów w postaci tablicy === A w tym przypadku ta funkcja nic nie robi, tylko zmienna {{Code|args}} referencyjnie wskazuje na tablicę {{Code|tablica}}. Ale można ją wykorzystać, gdy by funkcja {{Code|Nazwa funkcji}}, była uruchomiona ze zwykłą tablicą, ale z możliwością, że to może być tablicą ramki {{Code|frame}} tablicy transportu, np.: <syntaxhighlight lang="lua"> --- Pierwsza możliwość; local wartosc1=p["Nazwa funkcji"](frame); -- Druga możliwość local wartosc2=p["Nazwa funkcji"]{["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; </syntaxhighlight> === Niedogodności stosowania z funkcji === Dla obu jest taka niedogodność, że jedynie jest taka nieprawidłowość, że w przypadku parametru tablicy ramki tablicy transportu należy podawać uzyskany element {{Code|args}}, a w przypadku zwykłej tablicy już nie, tą niedokodność rozwiązuje funkcja: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}. == {{Code|p.PobierzArgsParametry}} == Argument tej funkcji {{Code|frame}} koniecznie nie musi być tablicą, bo wtedy nie wywoła to błędu języka {{lpg|Lua}}, że z wartości nietabelowej chcemy wyliczyć jego niepusty element {{Code|getParent}}, bo przedtem sprawdzana jest w tej funkcji, czy jest to tablica. W definicji tej funkcji zmienna uzyskana z funkcji: {{Code|{{sr|#p.PobierzFrameEwentualnieParent(frame)|p=Parametry}}}}, a jeśli jej składowa {{Code|args}} jest tablicą, to jest właśnie ona zwracana, a jeśli istnieje, ale nie jest tablicą, lub ona nie istnieje, to wtedy brana jest właśnie wartość tablicowa {{Code|frame}}, jeśli jest ona taka, a gdy nie, to wtedy z tej funkcji tutaj nie korzystamy. Funkcja pobiera parametry ramki szablonu rodzica, a nie dziecka, a jeżeli w dziecku w ramce w wikikodzie w szablonie podamy specjalny parametr {{Parametr|wyspecjalizowana|tak}}, to wtedy ta funkcja ściąga parametry ramki. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobierzArgsParametry(frame, czy_nie_tablica_jako_tablica)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica transportu ramki. | 2 = {{Code|czy_nie_tablica_jako_tablica}} | _2 = Czy wartości nietablicowe umieszczać w jednoelemenowej tabeli. }} === Opis działania === Funkcja wykorzystuje wspomnianą powyżej funkcję do swojego działania, ona jest wtedy aktywowana, gdy zmienna {{Code|frame}} jest tablicą, i jest sprawdzane, czy ona posiada nazwany element o kluczu {{Code|args}}, i czy jest on tablicowy. Jeżeli wartością zmiennej {{Code|frame}} nie jest tablica, ale nie przybiera wartości {{Code|nil}}, to ona jest umieszczana w tablicy, jeżeli zmiennej {{Code|czy_nie_tablica_jako_tablica}} przydzielimy wartość {{Code|true}}, w przeciwnym wypadku zwracana jest ona w postaci niezmienionej, a jeżeli wartość tej zmiennej nie istnieje, to zwracana jest zwykła tablica pusta. Tą funkcją można sterować ze strony ramki tym właśnie specjalnym parametrem o wartości niepustej. === Przykład wywołania funkcji z funkcją parametrów === W ramce podajemy argumenty wraz z tym specjalnym parametrem: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}} </syntaxhighlight> ==== Użycie funkcji parametrów ==== To wtedy w kodzie w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} w module o nazwie {{Code|Nazwa modułu}}, piszemy: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(frame); .... end; </syntaxhighlight> To wtedy w kodzie ściągane parametry ramki dziecka. === Wykorzystanie fukcji w różnych sytuacjach === ; Przypadek pierwszy{{dk}} Tę funkcję można równie dobrze wykorzystać do zwykłych tabel: <syntaxhighlight lang="lua"> local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(tabela); </syntaxhighlight> ; Drugi przypadek{{dk}} A w tym przypadku ta funkcja nic nie robi, tylko zmienna {{Code|args}} referencyjnie wskazuje na tablicę {{Code|tablica}}. Ale można ją wykorzystać, gdyby funkcja {{Code|Nazwa funkcji}}, była uruchomiona ze zwykłą tablicą, ale z możliwością, że to może być tablicą ramki {{Code|frame}} tablicy transportu, np.: <syntaxhighlight lang="lua"> --- Pierwsza możliwość; local wartosc1=p["Nazwa funkcji"](frame); -- Druga możliwość local wartosc2=p["Nazwa funkcji"]{["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; </syntaxhighlight> === Usunięcie niedogodności === Dla obu tych przypadków nie ma żadnej niedogodności, jak to występowała w {{Code|{{sr|#p.PobierzFrameEwentualnieParent(frame)|p=Parametry}}}}. === Parametr funkcji nietablicowy === Jeśliby do funkcji tablicy transportu dać wartość równą nie tablicy, to wtedy równoważnie możemy napisać: <syntaxhighlight lang="lua"> local wartosc="wartość"; local wynik=p["Nazwa funkcji"](wartosc); </syntaxhighlight> to wtedy definicję tej funkcji piszemy: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(frame,true); local wartosc=args[1]; end; </syntaxhighlight> lub równoważnie możemy zapisać: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); local wartosc=parametry_modul.PobierzArgsParametry(frame); end; </syntaxhighlight> === Brak parametrów funkcji === A jeżeli nie wsadziliśmy żadnej wartości do funkcji ramki tablicy transportu lub tą wartością jest {{Code|nil}}, wtedy: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"](); </syntaxhighlight> wtedy definicja tej funkcji wygląda: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); -- Zmienna: args, wskazuje na wartość, którą jest tablicą pustą, tzn. w tej tablicy nie ma wcale elementów; local args=parametry_modul.PobierzArgsParametry(frame); end; </syntaxhighlight> === Zmienna {{Code|args}} - alternatywny przypadek dla wartości tablicowych niż te bez drugiego parametru === Widzimy, że wtedy zmienna {{Code|args}} jest normalną, niekoniecznie niepusta, tablicą, i nie musimy wtedy wcale pisać drugiego parametru w tej fubkcji, bo wtedy wychodzi w tym przypadku na to samo: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(frame,true); </syntaxhighlight> === Różnica drugiego parametru w przypadku wartości nietablicowych === Argument drugi w {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, który w naszym przypadku musi mieć wartość {{Code|true}}, a wtedy jest jedynie sens, gdy {{Code|frame}} nie jest tablicą, i gdy chcemy tą wartość umieścić w tablicy, a nie powtórzyć wartość, tzn. chcemy napisać: {{Code|{{(}}frame,{{)}}}}, w przeciwnym wypadku musilibyśmy napisać coś w rodzaju, zamiast tak spreparowanej tablicy: {{Code|frame}}, czyli: <syntaxhighlight lang="lua"> -- Pierwszy przypadek, gdy frame jest wartością nietablicową; local parametry_modul=require("Module:Parametry"); ... -- Zwracana wartość: args, to nic innego niż: {frame,}; local args=parametry_modul.PobierzArgsParametry(frame,true); ... -- Zwracana wartość: args, to nic innego niż: frame, a nie {frame,}, jak poprzednio; local args=parametry_modul.PobierzArgsParametry(frame); </syntaxhighlight> == {{Code|p.PobierzParametryRamki}} == Funkcja służy do pobierania parametrów ramki dziecka, nie rodzica. Funkcja służy do ustawienia pewnych domyślnych dwóch pewnych funkcji służących do pobieranie danych z tabelki z pierwszej tej funkcji: * Jeżeli ona posiada klucz o wartości {{Code|args}}, ** to zwracana jest ta właśnie tablica jako argument pierwszej tej funkcji, jeżeli jest w ogóle tablicą, ** w przeciwnym wypadku zwracana jest ta oryginalna tablica, też jako argument tej funkcji, * w przeciwnym dalszym wypadku zwracana jest zwracana wartość ta, jako argument tej drugiej funkcji, która zwraca prawdziwą wartość z argumentu tylko za pierwszym razem, z tej funkcji, za następnym i dalszym razem {{Code|nil}}. Z tak utworzonej ogólnie większej funkcji wykorzystywana jest w budowie omawianej funkcji, która jest zwracana przez omawianą funkcję, która względem jego budowy wywołuje raz pierwszą albo drugą poprzednią wspomnianą funkcję zależną od rodzaju zmiennej {{Code|frame}}, która może być tabelką, ale nie musi być. Ta funkcja zwracana przez funkcję w nagłówku przyjmuje argument, która jest kluczem do tych wspomnianych, może że, * tabel (dokładnie, która ta może tabelka to zależy od formatu tej naszej rozważanej zmiennej), * a jeżeli to nie tabelka, co jest zwracane, to już zostało powiedziane. Definicja skrótowa tej funkcji jest: <syntaxhighlight lang="lua"> function p.PobierzParametryRamki(frame)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu. }} Weźmy ramkę sformułowaną w wikikodzie jako dziecko w szablonie rodzicu: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5}} </syntaxhighlight> === Funkcje, z funkcją parametrów, z tablicą ramki lub one z podtablicą {{Code|args}} === To wtedy tablica ramki tablicy transportu posiada właśnie {{Code|frame}}, która jest tablicą, i na pewno posiada tablicę o nazwie {{Code|args}}, to wtedy tę funkcję wywołaną w ramce, która wywołuje funkcję w nagłówku, formułujemy: <syntaxhighlight lang="lua"> local p={}; local p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametryRamki=parametry_modul.PobierzParametryRamki(frame); ... end; </syntaxhighlight> ==== Przykład wywołania funkcji z funkcją parametrów z tablicą {{Code|args}} ==== Równie dobrze funkcję z ramki można wywołać w sposób, co wtedy ta funkcja też zostanie wywołana pozytywnie: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"]{args={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}}; </syntaxhighlight> W tej funkcji nie trzeba definiować funkcji fałszywej {{Code|getParent}}, w postaci: {{Code|getParent{{=}}function()end}}. Widzimi, że ta tablica posiada nazwę zmiennej tablicowej o nazwie {{Code|args}}, ale ona nie jest tablicą ramki tablicy transportu, ale tą tablicę możemy bezposrednio wsadzić w tą główną tablicę w samym argumencie funkcji. ==== Przykład wywołania z tablicą bez podtablicy {{Code|args}} ==== Równie dobrze możemy wywołać tę funkcję zdefiniowaną naszą w jakimś module w sposób: <syntaxhighlight lang="lua"> local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; local wynik=p["Nazwa funkcji"]{tabela); </syntaxhighlight> Też ta funkcja prawidłowo się wywoła. W tym przypadku, jak i w przypadkach powyżej, wyniki uzyskuje się w następującym wywołaniach: <syntaxhighlight lang="lua"> --- Zmienna: wartosc1, przyjmuje wartość: "wartość1"; local wartosc1=PobierzParametryRamki("nazwa1"); --- Zmienna: wartosc2, przyjmuje wartość: "wartość2"; local wartosc2=PobierzParametryRamki("nazwa2"); --- Zmienna: wartosc3, przyjmuje wartość: "wartość3"; local wartosc3=PobierzParametryRamki(1); </syntaxhighlight> ==== Przykład wywołania funkcji z wartością nietablicową ==== W innym przypadku wywołań funkcji ramki jest wsadzenie do niej zwykłego nietablicowego elementu, może być też to wartość: {{Code|nil}}. A to wywołanie jest: <syntaxhighlight lang="lua"> local wartosc="wartość"; --Zmienna: wartosc, nie jest w tym przypadku tablicą; local wynik=p["Nazwa funkcji"](wartosc); </syntaxhighlight> === Wywołania funkcji parametrów bez argumentów - wiele kolejnych wywołań jednocześnie === Wtedy w tej ramce w celu uzyskania, jakikolwiek wartości jest przykład wywołania tej funkcji zwracanej przez funkcję w ramce z argumentem pustym. <syntaxhighlight lang="lua"> -- Zmienna: wartość1, przyjmuje wartość: "wartość"; Jeżeli ona, przyjmuje wartość: nil, to wywołanie rzuci: nil, i za każdym następny razem; local wartosc1=PobierzParametryRamki(); -- Zmienna: wartość2, przyjmuje wartość: nil; local wartosc2=PobierzParametryRamki(); </syntaxhighlight> W wywołaniach powinno dbać się o właściwą kolejność wywołań, bo argumentem funkcji z tablicy transportu może być zwykła tablicowa wartość. Najpierw uzyskujemy wartości nietablicowe, a później tablicowe, na wypadek niewiadomej {{Code|frame}} jakiego typu ma być wartość. === Dwa przypadki, parametr w tablicy, lub wartość nietablicowa funkcji === Też ta zmienna może istnieć pod kilkoma możliwymi kluczami, lub tą zmienną może być jedyny argument funkcji, która jest nietablicową wartością, wtedy ją się wywołuje jako dla przypadku, gdy parametr jest nietablicowy lub jest pod kluczem {{Code|tekst}}: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local tekst=parametry_modul.PobierzParametryRamki(frame)("tekst"); </syntaxhighlight> === Przypadek, gdy parametr funkcji nie jest tablicą === Lub chcemy tę funkcję wywołać bezparametrowo, gdy chcemy, by {{Code|frame}} nie była tablicą: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local tekst=parametry_modul.PobierzParametryRamki(frame)(); </syntaxhighlight> === Omówienie przypadku istnienia tego samego wariantu zmiennej raz podtablicą, a raz jako zmienna nietablicowa === * Wtedy ta zmienna w przedostatnim przykładzie jest pod wartością {{Code|tekst}}, gdy wartość {{Code|frame}} jest tablicą, * lub może być jedyną wartością, którą jest {{Code|frame}}, jako zmienna nietablicowa, wtedy ta zmienna też jest pod {{Code|tekst}}, ** ta funkcja uzyskana z: {{Code|{{sr|#p.PobierzParametryRamki(frame)|p=Parametry}}}}, wtedy może być wywołana tylko raz z nienilową wartością zwracaną, następnym razem zwraca wartość {{Code|nil}}, wtedy to dotyczy przedostatniego i ostatniego przykładu. === Jakma liczyć element funkcji w przypadku różnych jej parametrów === Jeżeli {{Code|frame}} jest nietablicowa, to wtedy wartość {{Code|tekst}} jest taka sama, co {{Code|frame}}. A jeżeli jest tablicą, to ta wartością jest {{Code|frame.args["tekst"]}}, lub gdy {{Code|args}} nie istnieje, lub istnieje, ale jest nietablicowa, to wtedy ta wartość jest {{Code|frame["tekst"]}}. === Parametry alternatywne funkcji - przykład wykorzystania funkcji parametrów === A gdy zmienne istnieją pod wieloma kluczami, lub gdy funkcję wywołano ze zmienną nietablicową, wtedy ogólnie możemy dla przykładu powiedzieć: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local PobierzParametryRamki=parametry_modul.PobierzParametryRamki(frame); local wartosc1=PobierzParametryRamki("nazwa1") or PobierzParametryRamki(1); local wartosc2=PobierzParametryRamki("nazwa2") or PobierzParametryRamki(2); local wartosc3=PobierzParametryRamki("nazwa3") or PobierzParametryRamki(3); </syntaxhighlight> * Wtedy ta zmienna jest pod kluczem, np.: {{Code|nazwa1}} lub {{Code|1}}, tablicy ramki {{Code|frame}} tablicy transportu, następne wywołania dla następnych kluczy też zrzucą pewne wartości, * lub jest ona zwykłą nietablicową wartością mogącą być równą, nawet {{Code|nil}}. ---- * Następne wywołania uzyskanej tak funkcji w przypadku, gdy {{Code|frame}} jest nietablicowy, rzucać będzie z samej definicji funkcji wartości {{Code|nil}}, czyli {{Code|wartosc2{{=}}wartosc3{{=}}nil}}, ale za to wartość {{Code|wartosc1}} nie musi być, ale może, wartością {{Code|nil}}, jeśli tą wartością jest, gdy {{Code|frame{{=}}nil}}, * w przeciwnym wypadku za pierwszym razem tej wartości nietablicowej uzyskamy wartość nie {{Code|nil}}, a za drugim i dalszym zawsze wartość {{Code|nil}}. == {{Code|p.PobierzElementNumerowanyZFrameLubTablicy}} == Definicja skrótowa funkcji jest z parametrem charakteryzującym pewien zestaw zmiennych {{Code|frame}}: * które nie musi być tablicą ramki tablicy transportu, tylko moze być innym parametrem, który jest tablicą parametrów podanych do funkcji, * nawet gdy parametrem podanym do funkcji, w której wykorzystujemy tą funkcję, jest jedyna zmienna będąca tablicą ramki. Ale z drugiej strony, tak nie musi być, może być to rozbudowany zestaw zmiennych, np. nazwanych i nienazwanych, którego wszystkie sposoby podawania łączymy jednym sposobem podawania. Mimo że parametry funkcji są parametrami nienazwanymi, mogą być one ponumerowane, ale zmienna w tablicy może przyjmować wartość tą samą na różne sposoby, raz w sposób nazwany, a za innym sposobem jako nienazwany. Ogólnie ostateczne parametry łączymy w dane parametry za pomocą jednego sposobu, tzn. za pomocą tej funkcji, i dla tak uzyskanej tablicy tworzymy funkcję zwracaną przez funkcję w nagłówku, która przyjmuje parametr, który jest kluczem tej uzyskanej tablicy. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobierzElementNumerowanyZFrameLubTablicy(frame)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu. }} Weźmy najprostszy sposób realizacji tej funkcji, w realizacji: {{Code|1-1, 2-2, 3-3}}, czyli ten opis jest zaraz poniżej. === Sposoby wywołania funkcji === ; Pierwszy sposób{{dk}} Weźmy funkcję, którą można wywoływać z wieloma parametrami, jak i w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, którą przykładowo piszemy jego wywołanie wewnątrz innej funkcji na pięć sposobów, czyli teraz pierwszy sposób z tylko z parametrem, więc tablicą ramki tablicy transportu wywodzącą się z ramki uruchomioną w wikikodzie w jakimś szablonie rodzicu: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"](frame); </syntaxhighlight> ; Drugi sposób{{dk}} A teraz drugi sposób, pisząc, bezpośrednio inaczej, formułując wywołanie tej funkcji, używając zmiennych tablicowych tablicy ramki, ale to nie jest tak naprawdę tablica ramka tablicy transportu, tylko parametr podany bezpośrednio do funkcji, tak jak się to robi w języku {{lpg|Lua}}, nie jak w przykładzie powyżej, więc: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"]{args={"wartość1","wartość2","wartość3",},}; </syntaxhighlight> ; Trzeci sposób{{dk}} Lub równoważnie, pisząc, nie używając zmiennej {{Code|args}}: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"]{"wartość1","wartość2","wartość3",}; </syntaxhighlight> ; Czwarty sposób{{dk}} Albo te parametry wsadzając do funkcji: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"]("wartość1","wartość2","wartość3"); </syntaxhighlight> ; Piąty spssób{{dk}} Można też wywołać to wszystko w ramce, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w wikikpdzie, wtedy wsadzając parametry do ramki: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|wartość1|wartość2|wartość3}} </syntaxhighlight> === Omówienie pobierania takich parmetrów === A jak połączyć wszystkie te pięć sposobów, posługiwać się tymi sposobami wewnątrz funkcji {{Code|Nazwa funkcji}} w sposób jednolity, jedynie wtedy należy skorzystać z funkcji z definiowaną w jakimś module w sposób: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(...) local tablica_prametrow_funkcji={...}; local parametry_modul=require("Module:Parametry"); local PobierzElementNumerowanyZFrameLubTablicy=parametry_modul.PobierzElementNumerowanyZFrameLubTablicy(tablica_prametrow_funkcji); ... end; </syntaxhighlight> Wtedy za pomocą zmiennej {{Code|PobierzElementNumerowanyZFrameLubTablicy}} dostaliśmy się do funkcji, która przyjmuje jedyny parametr, aby dostać się do elementów tablicy uzyskanej w wewnątrz tej funkcji, zdefiniowaną w tablicy {{Code|tablica_prametrow_funkcji}}, która jest nic innym jak zestawem parametrów w funkcji: {{Code|Nazwa funkcji}}. === Omówienie sposobów wykorzystywania, robienia tego samego, na różne warianty === * W pierwszym i drugim sposobem zmienną tą nazwijmy to jako {{Code|args}}, jest zmienną z podtablicy innego {{Code|args}} przekazanych jako parametr tablicy do funkcji, * w trzecim sposobie tą zmienną jest cała tablica, * a czwartym jest zestaw parametrów ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. A czym się różnią się te sposoby, a więc te sposoby można powiązać jedną tylko funkcją powiedzianą w nagłówku według przykładu podaną zaraz powyżej, wtedy możemy dostawać się do tych samych zmiennych o takich samych nazwach i wartościach, ale w różnych reprezentacjach na różne sposoby, wtedy można powiedzieć, że: <syntaxhighlight lang="lua"> args[1]="wartość1"; args[2]="wartość2"; args[3]="wartość3"; </syntaxhighlight> === Ogólny opis stosowania funkcji === Czyli w wyniku działania funkcji w nagłówku, otrzymamy funkcję zwracającą te wartości, która operuje na tej tablicy, której wynikiem jest zestaw zmiennych ponumerowanych, ogólnie nienazwanych, której wartości odpowiadają te podane w ramce ostatniej powyżej. Na podstawie tego wiemy, jak działa funkcja ta z nagłówka. === Nazwy alternatywne danych parametrów funkcji ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}} === Pisząc w inny sposób, można też wskazywać: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(...) local tablica_prametrow_funkcji={...}; local parametry_modul=require("Module:Parametry"); local PobierzElementNumerowanyZFrameLubTablicy=parametry_modul.PobierzElementNumerowanyZFrameLubTablicy(tablica_prametrow_funkcji); local wartosc1=PobierzElementNumerowanyZFrameLubTablicy("nazwa1") or PobierzElementNumerowanyZFrameLubTablicy(1); local wartosc2=PobierzElementNumerowanyZFrameLubTablicy("nazwa2") or PobierzElementNumerowanyZFrameLubTablicy(2); local wartosc3=PobierzElementNumerowanyZFrameLubTablicy("nazwa3") or PobierzElementNumerowanyZFrameLubTablicy(3); end; </syntaxhighlight> Zmienne w przykładzie o kluczach: {{Code|nazwa1}}, {{Code|nazwa2}} i {{Code|nazwa3}}, posiadające pewne swoje wartości, to są zmienne w tablicy {{Code|tablica_prametrow_funkcji}}, podane też jako zmienne, jako pewne argumenty tablicy, który są w tej funkcji zwracanej jako argument (parametr) funkcji: * jeżeli argumenty podano w postaci jednego parametru funkcji w postaci pewnej tablicy z np. elementami nazwanymi, * lub jako wiele argumentów w ramce, w wikikodzie, w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w pewnym szablonie, * a rozpatrując dalej elementy względem ich nazw, np. alternatywnych, to te numery mogą być kolejo do nazw ich odpowiedników nazwanych, które w przykładzie powyżej, mają pierwszeństwo, ale tak nie musi być, te parametry: {{Code|1}}, {{Code|2}} i {{Code|3}}, to jest numer parametru. To stosujemy, jeżeli argumenty do funkcji podano w postaci wielu jego parametrów. == {{Code|p.PobierzParametr}} == Ta funkcja zwraca znów inną funkcję, która ma jedyny parametr, mówiący jakiego parametru poszukujemy, co jest wyjaśnione w definicji funkcji z nagłówka, że ona zwraca tą właśnie funkcje. Definicja skrótowa dunkcji: <syntaxhighlight lang="lua"> function p.PobierzParametr(frame,czy_frame_lub_parent,czy_frame) ... return function(nazwa) return __pobierz_parametr_table_args(nazwa); end; end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu. | 2 = {{Code|czy_frame_lub_parent}} i {{Code|czy_frame}} | _2 = Parametry logiczne dodatkowe funkcji. }} === Wartość zwracana i jego druga wartośc w postaci numeru metody === Funkcja zwraca jednocześnie dwie wartości, ta zwrócona z funkcji z nagłówka, prawdziwą wartość, i numer metody w postaci: {{Code|return wartosc, numer_metody}}. === Opis zwracanych elementów przez funkcję zwracaną - różne metody zwracania, jak je wykorzystać === Ta funkcja zwracana ma w swojej definicji jeszcze inną funkcję, wykorzystaną w nim. To jest za każdym razem inna funkcja w zależności z jakim typem danych się posługujemy {{Code|frame}}, i jakie podaliśmy parametry, tzn. czy ona jest tablicą. ==== Gdy funkcja ramki {{Code|pf.getParent}} istnieje lub posiada jego fałszywą definicję ==== Gdy warunkiem, gdy zmienna {{Code|frame}} jest tablicą, czyli te zmienne druga: {{Code|czy_frame_lub_parent}} (jeżeli funkcja jest uruchomiona w ramce w szablonie, jeżeli ma wartość {{Code|true}}, to ona wybiera raz parametr z: {{Code|frame.args[nazwa or 1]}}, a za innym razem z {{Code|pf.args[nazwa or 1]}}, gdzie {{Code|pf{{=}}frame:getParent()}}, tutaj jest zwracana wartość: {{Code|return wartosc,2}}). ==== Gdy funkcja ramki istnieje, i gdy: {{Code|czy_frame_lub_parent}}, jest fałszywe, albo ta tablica nie jest ramką, nawet bez fałszywej definicji funkcji fałszywej ramki parametrów rodzica ==== Czy trzecia: {{Code|czy_frame}} (która mówi, jeżeli funkcję uruchomiono w ramce, ale przy wartości prawdziwej tego pierwszego podanego parametru, czyli {{Code|true}}, wybierana jest zawsze wartość {{Code|frame.args[nazwa or 1]}}, w przeciwnym wypadku uruchamiana jest funkcja {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, tutaj zwracana jest wartość {{Code|return wartosc,1}}). ==== Wartość nietablicowa funkcji parametrów ==== Jeżeli wartością {{Code|frame}} jest wartość nietablicowa, ale niebędącą wartością {{Code|nil}}, wtedy ustawiana jest funkcja, która tylko za pierwszym razem zwraca nienilową wartość {{Code|return wartosc,0}}, a później zwraca wartość {{Code|return nil,0}}. ==== Przypadek nietablicowa wartości, ale nilowej funkcji parametrów ==== Gdy wartością {{Code|frame}} jest {{Code|nil}}, to funkcja zawsze wraca tą wartość {{Code|return nil,0}}. ==== Fałszywa funkcja ramki parametrów rodzica ==== Ta funkcja parametrów działa dobrze, gdy zdefiniujemy w parametrach funkcji fałszywą funkcję {{Code|frame.getParent}}. ==== Brak definicji funkcji ramki parametrów rodzica ==== Gdy funkcja nie jest uruchamiana w ramce lub funkcja {{Code|frame.getParent}} nie jest zdefiniowana, to wtedy funkcja wchodzi zawsze w ten jej krok, jakby {{Code|czy_frame_lub_parent}} było {{Code|false}} według tego powyżej, to wtedy brana jest zmienna {{Code|czy_frame}}, i jaką wartość ona przyjmuje. === Nazwy alternatywne parametrów === Funkcję pisze się według sposobu, którą się wywołuje według: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame); local wartosc1=PobierzParametr("nazwa1") or PobierzParametr(1); local wartosc2=PobierzParametr("nazwa2") or PobierzParametr(2); local wartosc3=PobierzParametr("nazwa3") or PobierzParametr(3); </syntaxhighlight> Na wypadek wartości nietabelowej, tą wartość zapisuje się jako pierwszą w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a dla wartości tabelowych, jaka jest kolejność to jest obojętne, byle by to było sensowne. === Wywołania funkcji w ramce, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, z funkcją parametrów === Tę funkcję podobnie się wywołuje jak funkcję: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}. Wartością {{Code|frame}} nie musi być tablica ramki tablicy transportu, równie dobrze może być to dowolna tablica lub wartość nietablicowa. Weźmy ramkę, w której uruchamiamy funkcję ramki: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}} </syntaxhighlight> === Przykłady wykorzystania funkcji === ; Przykład pierwszy{{dk}} Ona musi być wywołana z parametrem {{Parametr|wyspecjalizowana|tak}}, jako podpowiedź, że liczą się parametry ramki dziecka, a nie jego rodzica, czyli szablonu. Wtedy funkcję {{Code|Nazwa funkcji}} definiujemy: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame,true); ... end; </syntaxhighlight> Wtedy parametr {{Parametr|wyspecjalizowana|tak}} jest ignorowany, a przy wartości {{Code|false}} drugiego parametru funkcji, czyli wywołania: {{Code|local PobierzParametr{{=}}parametry_modul.PobierzParametr(frame,false);}}, już nie, ale nie zawsze. W takim przypadku według powyższego przykładu raz jest brana wartość, jeżeli istnieje, z {{Code|frame.args}}, a jak ona nie istnieje, to wtedy z: {{Code|pf.args}}. ; Przykład drugi{{dk}} Weźmy inny przypadek: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame,false,true); ... end; </syntaxhighlight> Przy tym też parametr: {{Parametr|wyspecjalizowana|tak}}, jest ignorowany, wtedy jest zawsze wybierana do rozważań tablica: {{Code|frame.args}}. ; Przykład trzeci{{dk}} Znów w innym przypadku, gdzie parametr: {{Parametr|wyspecjalizowana|tak}}, jest zawsze rozważany w naszym wypadku: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame,false,false); ... end; </syntaxhighlight> To to wywołanie, wtedy dokładnie działa jak funkcja: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, a zwrócona funkcja: {{Code|PobierzParametr}} pobiera elementy z tak uzyskanej tablicy {{Code|args}} poprzez nią. === Przypadek nietablicowego charakteru parametrów funkcji === W przypadku, gdy {{Code|frame}} nie jest tablicą, wtedy parametry: {{Code|czy_frame_lub_parent}} i {{Code|czy_frame}}, są w takim przypadku zawsze ignorowane, ale muszą być ustawione na wypadek, gdyby do funkcji {{Code|Nazwa funkcji}} wsadzono tablicę, np. z ramki, tzn. tablicę ramki funkcji tablicy transportu. === Ogólny przypadek, często stosowany === Najprostszym często ogólnym przykładem, który prawie zawsze jest stosowany: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame); ... end; </syntaxhighlight> Wtedy parametr: {{Parametr|wyspecjalizowana|tak}}, jest prawie zawsze nieignorowany, ale nie zawsze. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> omfj0ulbf309qis6d6uiyz0owpwggu0 555793 555758 2026-09-12T07:22:35Z Persino 2851 /* {{Code|p.PobierzElementNumerowanyZFrameLubTablicy}} */ 555793 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} Są tutaj przedstawione funkcje parametrów. == {{Code|p.PobierzFrameEwentualnieParent}} == Argument tej funkcji {{Code|frame}} koniecznie musi być tablicą, w przypadku przeciwnym wywoła to błąd języka {{lpg|Lua}}, że z wartości nietabelowej chcemy wyliczyć jego nieistniejący element {{Code|getParent}}, który ma prawo nie być. Funkcja pobiera parametry ramki szablonu rodzica, a nie dziecka, a jeżeli w dziecku w ramce w wikikodzie w szablonie podamy specjalny parametr {{Parametr|wyspecjalizowana|tak}}, to wtedy ta funkcja ściąga parametry ramki. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobierzFrameEwentualnieParent(frame)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu. }} === Sterowanie funkcją === Tą funkcją można sterować ze strony ramki tym właśnie specjalnym parametrem o wartości niepustej, którą jest {{Parametr|wyspecjalizowana|tak}}. ==== Przykłady wykorzystania z parametrem sterującym ==== W ramce podajemy argumenty wraz z tym specjalnym parametrem: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}} </syntaxhighlight> To wtedy w kodzie w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} w module o nazwie {{Code|Nazwa modułu}}, piszemy: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzFrameEwentualnieParent(frame).args; .... end; </syntaxhighlight> To wtedy w kodzie ściągane parametry ramki dziecka. === Pobieranie oryginalnej tablicy === Tę funkcję można równie dobrze wykorzystać do zwykłych tabel: <syntaxhighlight lang="lua"> local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzFrameEwentualnieParent(tabela); </syntaxhighlight> === Możliwość tej samej funkcji uruchomioną w ramce lub z podaniem do niej pewnego zestawu parametrów w postaci tablicy === A w tym przypadku ta funkcja nic nie robi, tylko zmienna {{Code|args}} referencyjnie wskazuje na tablicę {{Code|tablica}}. Ale można ją wykorzystać, gdy by funkcja {{Code|Nazwa funkcji}}, była uruchomiona ze zwykłą tablicą, ale z możliwością, że to może być tablicą ramki {{Code|frame}} tablicy transportu, np.: <syntaxhighlight lang="lua"> --- Pierwsza możliwość; local wartosc1=p["Nazwa funkcji"](frame); -- Druga możliwość local wartosc2=p["Nazwa funkcji"]{["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; </syntaxhighlight> === Niedogodności stosowania z funkcji === Dla obu jest taka niedogodność, że jedynie jest taka nieprawidłowość, że w przypadku parametru tablicy ramki tablicy transportu należy podawać uzyskany element {{Code|args}}, a w przypadku zwykłej tablicy już nie, tą niedokodność rozwiązuje funkcja: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}. == {{Code|p.PobierzArgsParametry}} == Argument tej funkcji {{Code|frame}} koniecznie nie musi być tablicą, bo wtedy nie wywoła to błędu języka {{lpg|Lua}}, że z wartości nietabelowej chcemy wyliczyć jego niepusty element {{Code|getParent}}, bo przedtem sprawdzana jest w tej funkcji, czy jest to tablica. W definicji tej funkcji zmienna uzyskana z funkcji: {{Code|{{sr|#p.PobierzFrameEwentualnieParent(frame)|p=Parametry}}}}, a jeśli jej składowa {{Code|args}} jest tablicą, to jest właśnie ona zwracana, a jeśli istnieje, ale nie jest tablicą, lub ona nie istnieje, to wtedy brana jest właśnie wartość tablicowa {{Code|frame}}, jeśli jest ona taka, a gdy nie, to wtedy z tej funkcji tutaj nie korzystamy. Funkcja pobiera parametry ramki szablonu rodzica, a nie dziecka, a jeżeli w dziecku w ramce w wikikodzie w szablonie podamy specjalny parametr {{Parametr|wyspecjalizowana|tak}}, to wtedy ta funkcja ściąga parametry ramki. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobierzArgsParametry(frame, czy_nie_tablica_jako_tablica)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica transportu ramki. | 2 = {{Code|czy_nie_tablica_jako_tablica}} | _2 = Czy wartości nietablicowe umieszczać w jednoelemenowej tabeli. }} === Opis działania === Funkcja wykorzystuje wspomnianą powyżej funkcję do swojego działania, ona jest wtedy aktywowana, gdy zmienna {{Code|frame}} jest tablicą, i jest sprawdzane, czy ona posiada nazwany element o kluczu {{Code|args}}, i czy jest on tablicowy. Jeżeli wartością zmiennej {{Code|frame}} nie jest tablica, ale nie przybiera wartości {{Code|nil}}, to ona jest umieszczana w tablicy, jeżeli zmiennej {{Code|czy_nie_tablica_jako_tablica}} przydzielimy wartość {{Code|true}}, w przeciwnym wypadku zwracana jest ona w postaci niezmienionej, a jeżeli wartość tej zmiennej nie istnieje, to zwracana jest zwykła tablica pusta. Tą funkcją można sterować ze strony ramki tym właśnie specjalnym parametrem o wartości niepustej. === Przykład wywołania funkcji z funkcją parametrów === W ramce podajemy argumenty wraz z tym specjalnym parametrem: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}} </syntaxhighlight> ==== Użycie funkcji parametrów ==== To wtedy w kodzie w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} w module o nazwie {{Code|Nazwa modułu}}, piszemy: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(frame); .... end; </syntaxhighlight> To wtedy w kodzie ściągane parametry ramki dziecka. === Wykorzystanie fukcji w różnych sytuacjach === ; Przypadek pierwszy{{dk}} Tę funkcję można równie dobrze wykorzystać do zwykłych tabel: <syntaxhighlight lang="lua"> local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(tabela); </syntaxhighlight> ; Drugi przypadek{{dk}} A w tym przypadku ta funkcja nic nie robi, tylko zmienna {{Code|args}} referencyjnie wskazuje na tablicę {{Code|tablica}}. Ale można ją wykorzystać, gdyby funkcja {{Code|Nazwa funkcji}}, była uruchomiona ze zwykłą tablicą, ale z możliwością, że to może być tablicą ramki {{Code|frame}} tablicy transportu, np.: <syntaxhighlight lang="lua"> --- Pierwsza możliwość; local wartosc1=p["Nazwa funkcji"](frame); -- Druga możliwość local wartosc2=p["Nazwa funkcji"]{["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; </syntaxhighlight> === Usunięcie niedogodności === Dla obu tych przypadków nie ma żadnej niedogodności, jak to występowała w {{Code|{{sr|#p.PobierzFrameEwentualnieParent(frame)|p=Parametry}}}}. === Parametr funkcji nietablicowy === Jeśliby do funkcji tablicy transportu dać wartość równą nie tablicy, to wtedy równoważnie możemy napisać: <syntaxhighlight lang="lua"> local wartosc="wartość"; local wynik=p["Nazwa funkcji"](wartosc); </syntaxhighlight> to wtedy definicję tej funkcji piszemy: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(frame,true); local wartosc=args[1]; end; </syntaxhighlight> lub równoważnie możemy zapisać: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); local wartosc=parametry_modul.PobierzArgsParametry(frame); end; </syntaxhighlight> === Brak parametrów funkcji === A jeżeli nie wsadziliśmy żadnej wartości do funkcji ramki tablicy transportu lub tą wartością jest {{Code|nil}}, wtedy: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"](); </syntaxhighlight> wtedy definicja tej funkcji wygląda: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); -- Zmienna: args, wskazuje na wartość, którą jest tablicą pustą, tzn. w tej tablicy nie ma wcale elementów; local args=parametry_modul.PobierzArgsParametry(frame); end; </syntaxhighlight> === Zmienna {{Code|args}} - alternatywny przypadek dla wartości tablicowych niż te bez drugiego parametru === Widzimy, że wtedy zmienna {{Code|args}} jest normalną, niekoniecznie niepusta, tablicą, i nie musimy wtedy wcale pisać drugiego parametru w tej fubkcji, bo wtedy wychodzi w tym przypadku na to samo: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(frame,true); </syntaxhighlight> === Różnica drugiego parametru w przypadku wartości nietablicowych === Argument drugi w {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, który w naszym przypadku musi mieć wartość {{Code|true}}, a wtedy jest jedynie sens, gdy {{Code|frame}} nie jest tablicą, i gdy chcemy tą wartość umieścić w tablicy, a nie powtórzyć wartość, tzn. chcemy napisać: {{Code|{{(}}frame,{{)}}}}, w przeciwnym wypadku musilibyśmy napisać coś w rodzaju, zamiast tak spreparowanej tablicy: {{Code|frame}}, czyli: <syntaxhighlight lang="lua"> -- Pierwszy przypadek, gdy frame jest wartością nietablicową; local parametry_modul=require("Module:Parametry"); ... -- Zwracana wartość: args, to nic innego niż: {frame,}; local args=parametry_modul.PobierzArgsParametry(frame,true); ... -- Zwracana wartość: args, to nic innego niż: frame, a nie {frame,}, jak poprzednio; local args=parametry_modul.PobierzArgsParametry(frame); </syntaxhighlight> == {{Code|p.PobierzParametryRamki}} == Funkcja służy do pobierania parametrów ramki dziecka, nie rodzica. Funkcja służy do ustawienia pewnych domyślnych dwóch pewnych funkcji służących do pobieranie danych z tabelki z pierwszej tej funkcji: * Jeżeli ona posiada klucz o wartości {{Code|args}}, ** to zwracana jest ta właśnie tablica jako argument pierwszej tej funkcji, jeżeli jest w ogóle tablicą, ** w przeciwnym wypadku zwracana jest ta oryginalna tablica, też jako argument tej funkcji, * w przeciwnym dalszym wypadku zwracana jest zwracana wartość ta, jako argument tej drugiej funkcji, która zwraca prawdziwą wartość z argumentu tylko za pierwszym razem, z tej funkcji, za następnym i dalszym razem {{Code|nil}}. Z tak utworzonej ogólnie większej funkcji wykorzystywana jest w budowie omawianej funkcji, która jest zwracana przez omawianą funkcję, która względem jego budowy wywołuje raz pierwszą albo drugą poprzednią wspomnianą funkcję zależną od rodzaju zmiennej {{Code|frame}}, która może być tabelką, ale nie musi być. Ta funkcja zwracana przez funkcję w nagłówku przyjmuje argument, która jest kluczem do tych wspomnianych, może że, * tabel (dokładnie, która ta może tabelka to zależy od formatu tej naszej rozważanej zmiennej), * a jeżeli to nie tabelka, co jest zwracane, to już zostało powiedziane. Definicja skrótowa tej funkcji jest: <syntaxhighlight lang="lua"> function p.PobierzParametryRamki(frame)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu. }} Weźmy ramkę sformułowaną w wikikodzie jako dziecko w szablonie rodzicu: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5}} </syntaxhighlight> === Funkcje, z funkcją parametrów, z tablicą ramki lub one z podtablicą {{Code|args}} === To wtedy tablica ramki tablicy transportu posiada właśnie {{Code|frame}}, która jest tablicą, i na pewno posiada tablicę o nazwie {{Code|args}}, to wtedy tę funkcję wywołaną w ramce, która wywołuje funkcję w nagłówku, formułujemy: <syntaxhighlight lang="lua"> local p={}; local p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametryRamki=parametry_modul.PobierzParametryRamki(frame); ... end; </syntaxhighlight> ==== Przykład wywołania funkcji z funkcją parametrów z tablicą {{Code|args}} ==== Równie dobrze funkcję z ramki można wywołać w sposób, co wtedy ta funkcja też zostanie wywołana pozytywnie: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"]{args={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}}; </syntaxhighlight> W tej funkcji nie trzeba definiować funkcji fałszywej {{Code|getParent}}, w postaci: {{Code|getParent{{=}}function()end}}. Widzimi, że ta tablica posiada nazwę zmiennej tablicowej o nazwie {{Code|args}}, ale ona nie jest tablicą ramki tablicy transportu, ale tą tablicę możemy bezposrednio wsadzić w tą główną tablicę w samym argumencie funkcji. ==== Przykład wywołania z tablicą bez podtablicy {{Code|args}} ==== Równie dobrze możemy wywołać tę funkcję zdefiniowaną naszą w jakimś module w sposób: <syntaxhighlight lang="lua"> local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; local wynik=p["Nazwa funkcji"]{tabela); </syntaxhighlight> Też ta funkcja prawidłowo się wywoła. W tym przypadku, jak i w przypadkach powyżej, wyniki uzyskuje się w następującym wywołaniach: <syntaxhighlight lang="lua"> --- Zmienna: wartosc1, przyjmuje wartość: "wartość1"; local wartosc1=PobierzParametryRamki("nazwa1"); --- Zmienna: wartosc2, przyjmuje wartość: "wartość2"; local wartosc2=PobierzParametryRamki("nazwa2"); --- Zmienna: wartosc3, przyjmuje wartość: "wartość3"; local wartosc3=PobierzParametryRamki(1); </syntaxhighlight> ==== Przykład wywołania funkcji z wartością nietablicową ==== W innym przypadku wywołań funkcji ramki jest wsadzenie do niej zwykłego nietablicowego elementu, może być też to wartość: {{Code|nil}}. A to wywołanie jest: <syntaxhighlight lang="lua"> local wartosc="wartość"; --Zmienna: wartosc, nie jest w tym przypadku tablicą; local wynik=p["Nazwa funkcji"](wartosc); </syntaxhighlight> === Wywołania funkcji parametrów bez argumentów - wiele kolejnych wywołań jednocześnie === Wtedy w tej ramce w celu uzyskania, jakikolwiek wartości jest przykład wywołania tej funkcji zwracanej przez funkcję w ramce z argumentem pustym. <syntaxhighlight lang="lua"> -- Zmienna: wartość1, przyjmuje wartość: "wartość"; Jeżeli ona, przyjmuje wartość: nil, to wywołanie rzuci: nil, i za każdym następny razem; local wartosc1=PobierzParametryRamki(); -- Zmienna: wartość2, przyjmuje wartość: nil; local wartosc2=PobierzParametryRamki(); </syntaxhighlight> W wywołaniach powinno dbać się o właściwą kolejność wywołań, bo argumentem funkcji z tablicy transportu może być zwykła tablicowa wartość. Najpierw uzyskujemy wartości nietablicowe, a później tablicowe, na wypadek niewiadomej {{Code|frame}} jakiego typu ma być wartość. === Dwa przypadki, parametr w tablicy, lub wartość nietablicowa funkcji === Też ta zmienna może istnieć pod kilkoma możliwymi kluczami, lub tą zmienną może być jedyny argument funkcji, która jest nietablicową wartością, wtedy ją się wywołuje jako dla przypadku, gdy parametr jest nietablicowy lub jest pod kluczem {{Code|tekst}}: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local tekst=parametry_modul.PobierzParametryRamki(frame)("tekst"); </syntaxhighlight> === Przypadek, gdy parametr funkcji nie jest tablicą === Lub chcemy tę funkcję wywołać bezparametrowo, gdy chcemy, by {{Code|frame}} nie była tablicą: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local tekst=parametry_modul.PobierzParametryRamki(frame)(); </syntaxhighlight> === Omówienie przypadku istnienia tego samego wariantu zmiennej raz podtablicą, a raz jako zmienna nietablicowa === * Wtedy ta zmienna w przedostatnim przykładzie jest pod wartością {{Code|tekst}}, gdy wartość {{Code|frame}} jest tablicą, * lub może być jedyną wartością, którą jest {{Code|frame}}, jako zmienna nietablicowa, wtedy ta zmienna też jest pod {{Code|tekst}}, ** ta funkcja uzyskana z: {{Code|{{sr|#p.PobierzParametryRamki(frame)|p=Parametry}}}}, wtedy może być wywołana tylko raz z nienilową wartością zwracaną, następnym razem zwraca wartość {{Code|nil}}, wtedy to dotyczy przedostatniego i ostatniego przykładu. === Jakma liczyć element funkcji w przypadku różnych jej parametrów === Jeżeli {{Code|frame}} jest nietablicowa, to wtedy wartość {{Code|tekst}} jest taka sama, co {{Code|frame}}. A jeżeli jest tablicą, to ta wartością jest {{Code|frame.args["tekst"]}}, lub gdy {{Code|args}} nie istnieje, lub istnieje, ale jest nietablicowa, to wtedy ta wartość jest {{Code|frame["tekst"]}}. === Parametry alternatywne funkcji - przykład wykorzystania funkcji parametrów === A gdy zmienne istnieją pod wieloma kluczami, lub gdy funkcję wywołano ze zmienną nietablicową, wtedy ogólnie możemy dla przykładu powiedzieć: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local PobierzParametryRamki=parametry_modul.PobierzParametryRamki(frame); local wartosc1=PobierzParametryRamki("nazwa1") or PobierzParametryRamki(1); local wartosc2=PobierzParametryRamki("nazwa2") or PobierzParametryRamki(2); local wartosc3=PobierzParametryRamki("nazwa3") or PobierzParametryRamki(3); </syntaxhighlight> * Wtedy ta zmienna jest pod kluczem, np.: {{Code|nazwa1}} lub {{Code|1}}, tablicy ramki {{Code|frame}} tablicy transportu, następne wywołania dla następnych kluczy też zrzucą pewne wartości, * lub jest ona zwykłą nietablicową wartością mogącą być równą, nawet {{Code|nil}}. ---- * Następne wywołania uzyskanej tak funkcji w przypadku, gdy {{Code|frame}} jest nietablicowy, rzucać będzie z samej definicji funkcji wartości {{Code|nil}}, czyli {{Code|wartosc2{{=}}wartosc3{{=}}nil}}, ale za to wartość {{Code|wartosc1}} nie musi być, ale może, wartością {{Code|nil}}, jeśli tą wartością jest, gdy {{Code|frame{{=}}nil}}, * w przeciwnym wypadku za pierwszym razem tej wartości nietablicowej uzyskamy wartość nie {{Code|nil}}, a za drugim i dalszym zawsze wartość {{Code|nil}}. == {{Code|p.PobierzElementNumerowanyZFrameLubTablicy}} == Definicja skrótowa funkcji jest z parametrem charakteryzującym pewien zestaw zmiennych {{Code|frame}}: * które nie musi być tablicą ramki tablicy transportu, tylko może być innym parametrem, który jest tablicą parametrów podanych do funkcji, * nawet gdy parametrem podanym do funkcji, w której wykorzystujemy tą funkcję, jest jedyna zmienna będąca tablicą ramki. Ale z drugiej strony, tak nie musi być, może być to rozbudowany zestaw zmiennych, np. nazwanych i nienazwanych, którego wszystkie sposoby podawania łączymy jednym sposobem podawania. Mimo że parametry funkcji są parametrami nienazwanymi, mogą być one ponumerowane, ale zmienna w tablicy może przyjmować wartość tą samą na różne sposoby, raz w sposób nazwany, a za innym sposobem jako nienazwany. Ogólnie ostateczne parametry łączymy w dane parametry za pomocą jednego sposobu, tzn. za pomocą tej funkcji, i dla tak uzyskanej tablicy tworzymy funkcję zwracaną przez funkcję w nagłówku, która przyjmuje parametr, który jest kluczem tej uzyskanej tablicy. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobierzElementNumerowanyZFrameLubTablicy(frame)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu. }} Weźmy najprostszy sposób realizacji tej funkcji, w realizacji: {{Code|1-1, 2-2, 3-3}}, czyli ten opis jest zaraz poniżej. === Sposoby wywołania funkcji === ; Pierwszy sposób{{dk}} Weźmy funkcję, którą można wywoływać z wieloma parametrami, jak i w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, którą przykładowo piszemy jego wywołanie wewnątrz innej funkcji na pięć sposobów, czyli teraz pierwszy sposób z tylko z parametrem, więc tablicą ramki tablicy transportu wywodzącą się z ramki uruchomioną w wikikodzie w jakimś szablonie rodzicu: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"](frame); </syntaxhighlight> ; Drugi sposób{{dk}} A teraz drugi sposób, pisząc, bezpośrednio inaczej, formułując wywołanie tej funkcji, używając zmiennych tablicowych tablicy ramki, ale to nie jest tak naprawdę tablica ramka tablicy transportu, tylko parametr podany bezpośrednio do funkcji, tak jak się to robi w języku {{lpg|Lua}}, nie jak w przykładzie powyżej, więc: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"]{args={"wartość1","wartość2","wartość3",},}; </syntaxhighlight> ; Trzeci sposób{{dk}} Lub równoważnie, pisząc, nie używając zmiennej {{Code|args}}: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"]{"wartość1","wartość2","wartość3",}; </syntaxhighlight> ; Czwarty sposób{{dk}} Albo te parametry wsadzając do funkcji: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"]("wartość1","wartość2","wartość3"); </syntaxhighlight> ; Piąty spssób{{dk}} Można też wywołać to wszystko w ramce, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w wikikpdzie, wtedy wsadzając parametry do ramki: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|wartość1|wartość2|wartość3}} </syntaxhighlight> === Omówienie pobierania takich parmetrów === A jak połączyć wszystkie te pięć sposobów, posługiwać się tymi sposobami wewnątrz funkcji {{Code|Nazwa funkcji}} w sposób jednolity, jedynie wtedy należy skorzystać z funkcji z definiowaną w jakimś module w sposób: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(...) local tablica_prametrow_funkcji={...}; local parametry_modul=require("Module:Parametry"); local PobierzElementNumerowanyZFrameLubTablicy=parametry_modul.PobierzElementNumerowanyZFrameLubTablicy(tablica_prametrow_funkcji); ... end; </syntaxhighlight> Wtedy za pomocą zmiennej {{Code|PobierzElementNumerowanyZFrameLubTablicy}} dostaliśmy się do funkcji, która przyjmuje jedyny parametr, aby dostać się do elementów tablicy uzyskanej w wewnątrz tej funkcji, zdefiniowaną w tablicy {{Code|tablica_prametrow_funkcji}}, która jest nic innym jak zestawem parametrów w funkcji: {{Code|Nazwa funkcji}}. === Omówienie sposobów wykorzystywania, robienia tego samego, na różne warianty === * W pierwszym i drugim sposobem zmienną tą nazwijmy to jako {{Code|args}}, jest zmienną z podtablicy innego {{Code|args}} przekazanych jako parametr tablicy do funkcji, * w trzecim sposobie tą zmienną jest cała tablica, * a czwartym jest zestaw parametrów ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. A czym się różnią się te sposoby, a więc te sposoby można powiązać jedną tylko funkcją powiedzianą w nagłówku według przykładu podaną zaraz powyżej, wtedy możemy dostawać się do tych samych zmiennych o takich samych nazwach i wartościach, ale w różnych reprezentacjach na różne sposoby, wtedy można powiedzieć, że: <syntaxhighlight lang="lua"> args[1]="wartość1"; args[2]="wartość2"; args[3]="wartość3"; </syntaxhighlight> === Ogólny opis stosowania funkcji === Czyli w wyniku działania funkcji w nagłówku, otrzymamy funkcję zwracającą te wartości, która operuje na tej tablicy, której wynikiem jest zestaw zmiennych ponumerowanych, ogólnie nienazwanych, której wartości odpowiadają te podane w ramce ostatniej powyżej. Na podstawie tego wiemy, jak działa funkcja ta z nagłówka. === Nazwy alternatywne danych parametrów funkcji ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}} === Pisząc w inny sposób, można też wskazywać: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(...) local tablica_prametrow_funkcji={...}; local parametry_modul=require("Module:Parametry"); local PobierzElementNumerowanyZFrameLubTablicy=parametry_modul.PobierzElementNumerowanyZFrameLubTablicy(tablica_prametrow_funkcji); local wartosc1=PobierzElementNumerowanyZFrameLubTablicy("nazwa1") or PobierzElementNumerowanyZFrameLubTablicy(1); local wartosc2=PobierzElementNumerowanyZFrameLubTablicy("nazwa2") or PobierzElementNumerowanyZFrameLubTablicy(2); local wartosc3=PobierzElementNumerowanyZFrameLubTablicy("nazwa3") or PobierzElementNumerowanyZFrameLubTablicy(3); end; </syntaxhighlight> Zmienne w przykładzie o kluczach: {{Code|nazwa1}}, {{Code|nazwa2}} i {{Code|nazwa3}}, posiadające pewne swoje wartości, to są zmienne w tablicy {{Code|tablica_prametrow_funkcji}}, podane też jako zmienne, jako pewne argumenty tablicy, który są w tej funkcji zwracanej jako argument (parametr) funkcji: * jeżeli argumenty podano w postaci jednego parametru funkcji w postaci pewnej tablicy z np. elementami nazwanymi, * lub jako wiele argumentów w ramce, w wikikodzie, w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w pewnym szablonie, * a rozpatrując dalej elementy względem ich nazw, np. alternatywnych, to te numery mogą być kolejo do nazw ich odpowiedników nazwanych, które w przykładzie powyżej, mają pierwszeństwo, ale tak nie musi być, te parametry: {{Code|1}}, {{Code|2}} i {{Code|3}}, to jest numer parametru. To stosujemy, jeżeli argumenty do funkcji podano w postaci wielu jego parametrów. == {{Code|p.PobierzParametr}} == Ta funkcja zwraca znów inną funkcję, która ma jedyny parametr, mówiący jakiego parametru poszukujemy, co jest wyjaśnione w definicji funkcji z nagłówka, że ona zwraca tą właśnie funkcje. Definicja skrótowa dunkcji: <syntaxhighlight lang="lua"> function p.PobierzParametr(frame,czy_frame_lub_parent,czy_frame) ... return function(nazwa) return __pobierz_parametr_table_args(nazwa); end; end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu. | 2 = {{Code|czy_frame_lub_parent}} i {{Code|czy_frame}} | _2 = Parametry logiczne dodatkowe funkcji. }} === Wartość zwracana i jego druga wartośc w postaci numeru metody === Funkcja zwraca jednocześnie dwie wartości, ta zwrócona z funkcji z nagłówka, prawdziwą wartość, i numer metody w postaci: {{Code|return wartosc, numer_metody}}. === Opis zwracanych elementów przez funkcję zwracaną - różne metody zwracania, jak je wykorzystać === Ta funkcja zwracana ma w swojej definicji jeszcze inną funkcję, wykorzystaną w nim. To jest za każdym razem inna funkcja w zależności z jakim typem danych się posługujemy {{Code|frame}}, i jakie podaliśmy parametry, tzn. czy ona jest tablicą. ==== Gdy funkcja ramki {{Code|pf.getParent}} istnieje lub posiada jego fałszywą definicję ==== Gdy warunkiem, gdy zmienna {{Code|frame}} jest tablicą, czyli te zmienne druga: {{Code|czy_frame_lub_parent}} (jeżeli funkcja jest uruchomiona w ramce w szablonie, jeżeli ma wartość {{Code|true}}, to ona wybiera raz parametr z: {{Code|frame.args[nazwa or 1]}}, a za innym razem z {{Code|pf.args[nazwa or 1]}}, gdzie {{Code|pf{{=}}frame:getParent()}}, tutaj jest zwracana wartość: {{Code|return wartosc,2}}). ==== Gdy funkcja ramki istnieje, i gdy: {{Code|czy_frame_lub_parent}}, jest fałszywe, albo ta tablica nie jest ramką, nawet bez fałszywej definicji funkcji fałszywej ramki parametrów rodzica ==== Czy trzecia: {{Code|czy_frame}} (która mówi, jeżeli funkcję uruchomiono w ramce, ale przy wartości prawdziwej tego pierwszego podanego parametru, czyli {{Code|true}}, wybierana jest zawsze wartość {{Code|frame.args[nazwa or 1]}}, w przeciwnym wypadku uruchamiana jest funkcja {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, tutaj zwracana jest wartość {{Code|return wartosc,1}}). ==== Wartość nietablicowa funkcji parametrów ==== Jeżeli wartością {{Code|frame}} jest wartość nietablicowa, ale niebędącą wartością {{Code|nil}}, wtedy ustawiana jest funkcja, która tylko za pierwszym razem zwraca nienilową wartość {{Code|return wartosc,0}}, a później zwraca wartość {{Code|return nil,0}}. ==== Przypadek nietablicowa wartości, ale nilowej funkcji parametrów ==== Gdy wartością {{Code|frame}} jest {{Code|nil}}, to funkcja zawsze wraca tą wartość {{Code|return nil,0}}. ==== Fałszywa funkcja ramki parametrów rodzica ==== Ta funkcja parametrów działa dobrze, gdy zdefiniujemy w parametrach funkcji fałszywą funkcję {{Code|frame.getParent}}. ==== Brak definicji funkcji ramki parametrów rodzica ==== Gdy funkcja nie jest uruchamiana w ramce lub funkcja {{Code|frame.getParent}} nie jest zdefiniowana, to wtedy funkcja wchodzi zawsze w ten jej krok, jakby {{Code|czy_frame_lub_parent}} było {{Code|false}} według tego powyżej, to wtedy brana jest zmienna {{Code|czy_frame}}, i jaką wartość ona przyjmuje. === Nazwy alternatywne parametrów === Funkcję pisze się według sposobu, którą się wywołuje według: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame); local wartosc1=PobierzParametr("nazwa1") or PobierzParametr(1); local wartosc2=PobierzParametr("nazwa2") or PobierzParametr(2); local wartosc3=PobierzParametr("nazwa3") or PobierzParametr(3); </syntaxhighlight> Na wypadek wartości nietabelowej, tą wartość zapisuje się jako pierwszą w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a dla wartości tabelowych, jaka jest kolejność to jest obojętne, byle by to było sensowne. === Wywołania funkcji w ramce, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, z funkcją parametrów === Tę funkcję podobnie się wywołuje jak funkcję: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}. Wartością {{Code|frame}} nie musi być tablica ramki tablicy transportu, równie dobrze może być to dowolna tablica lub wartość nietablicowa. Weźmy ramkę, w której uruchamiamy funkcję ramki: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}} </syntaxhighlight> === Przykłady wykorzystania funkcji === ; Przykład pierwszy{{dk}} Ona musi być wywołana z parametrem {{Parametr|wyspecjalizowana|tak}}, jako podpowiedź, że liczą się parametry ramki dziecka, a nie jego rodzica, czyli szablonu. Wtedy funkcję {{Code|Nazwa funkcji}} definiujemy: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame,true); ... end; </syntaxhighlight> Wtedy parametr {{Parametr|wyspecjalizowana|tak}} jest ignorowany, a przy wartości {{Code|false}} drugiego parametru funkcji, czyli wywołania: {{Code|local PobierzParametr{{=}}parametry_modul.PobierzParametr(frame,false);}}, już nie, ale nie zawsze. W takim przypadku według powyższego przykładu raz jest brana wartość, jeżeli istnieje, z {{Code|frame.args}}, a jak ona nie istnieje, to wtedy z: {{Code|pf.args}}. ; Przykład drugi{{dk}} Weźmy inny przypadek: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame,false,true); ... end; </syntaxhighlight> Przy tym też parametr: {{Parametr|wyspecjalizowana|tak}}, jest ignorowany, wtedy jest zawsze wybierana do rozważań tablica: {{Code|frame.args}}. ; Przykład trzeci{{dk}} Znów w innym przypadku, gdzie parametr: {{Parametr|wyspecjalizowana|tak}}, jest zawsze rozważany w naszym wypadku: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame,false,false); ... end; </syntaxhighlight> To to wywołanie, wtedy dokładnie działa jak funkcja: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, a zwrócona funkcja: {{Code|PobierzParametr}} pobiera elementy z tak uzyskanej tablicy {{Code|args}} poprzez nią. === Przypadek nietablicowego charakteru parametrów funkcji === W przypadku, gdy {{Code|frame}} nie jest tablicą, wtedy parametry: {{Code|czy_frame_lub_parent}} i {{Code|czy_frame}}, są w takim przypadku zawsze ignorowane, ale muszą być ustawione na wypadek, gdyby do funkcji {{Code|Nazwa funkcji}} wsadzono tablicę, np. z ramki, tzn. tablicę ramki funkcji tablicy transportu. === Ogólny przypadek, często stosowany === Najprostszym często ogólnym przykładem, który prawie zawsze jest stosowany: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame); ... end; </syntaxhighlight> Wtedy parametr: {{Parametr|wyspecjalizowana|tak}}, jest prawie zawsze nieignorowany, ale nie zawsze. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> c3fumiduq7qskdv2r593bve3ywr4cis 555794 555793 2026-09-12T07:24:40Z Persino 2851 /* Sposoby wywołania funkcji */ 555794 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} Są tutaj przedstawione funkcje parametrów. == {{Code|p.PobierzFrameEwentualnieParent}} == Argument tej funkcji {{Code|frame}} koniecznie musi być tablicą, w przypadku przeciwnym wywoła to błąd języka {{lpg|Lua}}, że z wartości nietabelowej chcemy wyliczyć jego nieistniejący element {{Code|getParent}}, który ma prawo nie być. Funkcja pobiera parametry ramki szablonu rodzica, a nie dziecka, a jeżeli w dziecku w ramce w wikikodzie w szablonie podamy specjalny parametr {{Parametr|wyspecjalizowana|tak}}, to wtedy ta funkcja ściąga parametry ramki. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobierzFrameEwentualnieParent(frame)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu. }} === Sterowanie funkcją === Tą funkcją można sterować ze strony ramki tym właśnie specjalnym parametrem o wartości niepustej, którą jest {{Parametr|wyspecjalizowana|tak}}. ==== Przykłady wykorzystania z parametrem sterującym ==== W ramce podajemy argumenty wraz z tym specjalnym parametrem: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}} </syntaxhighlight> To wtedy w kodzie w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} w module o nazwie {{Code|Nazwa modułu}}, piszemy: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzFrameEwentualnieParent(frame).args; .... end; </syntaxhighlight> To wtedy w kodzie ściągane parametry ramki dziecka. === Pobieranie oryginalnej tablicy === Tę funkcję można równie dobrze wykorzystać do zwykłych tabel: <syntaxhighlight lang="lua"> local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzFrameEwentualnieParent(tabela); </syntaxhighlight> === Możliwość tej samej funkcji uruchomioną w ramce lub z podaniem do niej pewnego zestawu parametrów w postaci tablicy === A w tym przypadku ta funkcja nic nie robi, tylko zmienna {{Code|args}} referencyjnie wskazuje na tablicę {{Code|tablica}}. Ale można ją wykorzystać, gdy by funkcja {{Code|Nazwa funkcji}}, była uruchomiona ze zwykłą tablicą, ale z możliwością, że to może być tablicą ramki {{Code|frame}} tablicy transportu, np.: <syntaxhighlight lang="lua"> --- Pierwsza możliwość; local wartosc1=p["Nazwa funkcji"](frame); -- Druga możliwość local wartosc2=p["Nazwa funkcji"]{["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; </syntaxhighlight> === Niedogodności stosowania z funkcji === Dla obu jest taka niedogodność, że jedynie jest taka nieprawidłowość, że w przypadku parametru tablicy ramki tablicy transportu należy podawać uzyskany element {{Code|args}}, a w przypadku zwykłej tablicy już nie, tą niedokodność rozwiązuje funkcja: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}. == {{Code|p.PobierzArgsParametry}} == Argument tej funkcji {{Code|frame}} koniecznie nie musi być tablicą, bo wtedy nie wywoła to błędu języka {{lpg|Lua}}, że z wartości nietabelowej chcemy wyliczyć jego niepusty element {{Code|getParent}}, bo przedtem sprawdzana jest w tej funkcji, czy jest to tablica. W definicji tej funkcji zmienna uzyskana z funkcji: {{Code|{{sr|#p.PobierzFrameEwentualnieParent(frame)|p=Parametry}}}}, a jeśli jej składowa {{Code|args}} jest tablicą, to jest właśnie ona zwracana, a jeśli istnieje, ale nie jest tablicą, lub ona nie istnieje, to wtedy brana jest właśnie wartość tablicowa {{Code|frame}}, jeśli jest ona taka, a gdy nie, to wtedy z tej funkcji tutaj nie korzystamy. Funkcja pobiera parametry ramki szablonu rodzica, a nie dziecka, a jeżeli w dziecku w ramce w wikikodzie w szablonie podamy specjalny parametr {{Parametr|wyspecjalizowana|tak}}, to wtedy ta funkcja ściąga parametry ramki. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobierzArgsParametry(frame, czy_nie_tablica_jako_tablica)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica transportu ramki. | 2 = {{Code|czy_nie_tablica_jako_tablica}} | _2 = Czy wartości nietablicowe umieszczać w jednoelemenowej tabeli. }} === Opis działania === Funkcja wykorzystuje wspomnianą powyżej funkcję do swojego działania, ona jest wtedy aktywowana, gdy zmienna {{Code|frame}} jest tablicą, i jest sprawdzane, czy ona posiada nazwany element o kluczu {{Code|args}}, i czy jest on tablicowy. Jeżeli wartością zmiennej {{Code|frame}} nie jest tablica, ale nie przybiera wartości {{Code|nil}}, to ona jest umieszczana w tablicy, jeżeli zmiennej {{Code|czy_nie_tablica_jako_tablica}} przydzielimy wartość {{Code|true}}, w przeciwnym wypadku zwracana jest ona w postaci niezmienionej, a jeżeli wartość tej zmiennej nie istnieje, to zwracana jest zwykła tablica pusta. Tą funkcją można sterować ze strony ramki tym właśnie specjalnym parametrem o wartości niepustej. === Przykład wywołania funkcji z funkcją parametrów === W ramce podajemy argumenty wraz z tym specjalnym parametrem: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}} </syntaxhighlight> ==== Użycie funkcji parametrów ==== To wtedy w kodzie w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} w module o nazwie {{Code|Nazwa modułu}}, piszemy: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(frame); .... end; </syntaxhighlight> To wtedy w kodzie ściągane parametry ramki dziecka. === Wykorzystanie fukcji w różnych sytuacjach === ; Przypadek pierwszy{{dk}} Tę funkcję można równie dobrze wykorzystać do zwykłych tabel: <syntaxhighlight lang="lua"> local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(tabela); </syntaxhighlight> ; Drugi przypadek{{dk}} A w tym przypadku ta funkcja nic nie robi, tylko zmienna {{Code|args}} referencyjnie wskazuje na tablicę {{Code|tablica}}. Ale można ją wykorzystać, gdyby funkcja {{Code|Nazwa funkcji}}, była uruchomiona ze zwykłą tablicą, ale z możliwością, że to może być tablicą ramki {{Code|frame}} tablicy transportu, np.: <syntaxhighlight lang="lua"> --- Pierwsza możliwość; local wartosc1=p["Nazwa funkcji"](frame); -- Druga możliwość local wartosc2=p["Nazwa funkcji"]{["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; </syntaxhighlight> === Usunięcie niedogodności === Dla obu tych przypadków nie ma żadnej niedogodności, jak to występowała w {{Code|{{sr|#p.PobierzFrameEwentualnieParent(frame)|p=Parametry}}}}. === Parametr funkcji nietablicowy === Jeśliby do funkcji tablicy transportu dać wartość równą nie tablicy, to wtedy równoważnie możemy napisać: <syntaxhighlight lang="lua"> local wartosc="wartość"; local wynik=p["Nazwa funkcji"](wartosc); </syntaxhighlight> to wtedy definicję tej funkcji piszemy: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(frame,true); local wartosc=args[1]; end; </syntaxhighlight> lub równoważnie możemy zapisać: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); local wartosc=parametry_modul.PobierzArgsParametry(frame); end; </syntaxhighlight> === Brak parametrów funkcji === A jeżeli nie wsadziliśmy żadnej wartości do funkcji ramki tablicy transportu lub tą wartością jest {{Code|nil}}, wtedy: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"](); </syntaxhighlight> wtedy definicja tej funkcji wygląda: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); -- Zmienna: args, wskazuje na wartość, którą jest tablicą pustą, tzn. w tej tablicy nie ma wcale elementów; local args=parametry_modul.PobierzArgsParametry(frame); end; </syntaxhighlight> === Zmienna {{Code|args}} - alternatywny przypadek dla wartości tablicowych niż te bez drugiego parametru === Widzimy, że wtedy zmienna {{Code|args}} jest normalną, niekoniecznie niepusta, tablicą, i nie musimy wtedy wcale pisać drugiego parametru w tej fubkcji, bo wtedy wychodzi w tym przypadku na to samo: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(frame,true); </syntaxhighlight> === Różnica drugiego parametru w przypadku wartości nietablicowych === Argument drugi w {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, który w naszym przypadku musi mieć wartość {{Code|true}}, a wtedy jest jedynie sens, gdy {{Code|frame}} nie jest tablicą, i gdy chcemy tą wartość umieścić w tablicy, a nie powtórzyć wartość, tzn. chcemy napisać: {{Code|{{(}}frame,{{)}}}}, w przeciwnym wypadku musilibyśmy napisać coś w rodzaju, zamiast tak spreparowanej tablicy: {{Code|frame}}, czyli: <syntaxhighlight lang="lua"> -- Pierwszy przypadek, gdy frame jest wartością nietablicową; local parametry_modul=require("Module:Parametry"); ... -- Zwracana wartość: args, to nic innego niż: {frame,}; local args=parametry_modul.PobierzArgsParametry(frame,true); ... -- Zwracana wartość: args, to nic innego niż: frame, a nie {frame,}, jak poprzednio; local args=parametry_modul.PobierzArgsParametry(frame); </syntaxhighlight> == {{Code|p.PobierzParametryRamki}} == Funkcja służy do pobierania parametrów ramki dziecka, nie rodzica. Funkcja służy do ustawienia pewnych domyślnych dwóch pewnych funkcji służących do pobieranie danych z tabelki z pierwszej tej funkcji: * Jeżeli ona posiada klucz o wartości {{Code|args}}, ** to zwracana jest ta właśnie tablica jako argument pierwszej tej funkcji, jeżeli jest w ogóle tablicą, ** w przeciwnym wypadku zwracana jest ta oryginalna tablica, też jako argument tej funkcji, * w przeciwnym dalszym wypadku zwracana jest zwracana wartość ta, jako argument tej drugiej funkcji, która zwraca prawdziwą wartość z argumentu tylko za pierwszym razem, z tej funkcji, za następnym i dalszym razem {{Code|nil}}. Z tak utworzonej ogólnie większej funkcji wykorzystywana jest w budowie omawianej funkcji, która jest zwracana przez omawianą funkcję, która względem jego budowy wywołuje raz pierwszą albo drugą poprzednią wspomnianą funkcję zależną od rodzaju zmiennej {{Code|frame}}, która może być tabelką, ale nie musi być. Ta funkcja zwracana przez funkcję w nagłówku przyjmuje argument, która jest kluczem do tych wspomnianych, może że, * tabel (dokładnie, która ta może tabelka to zależy od formatu tej naszej rozważanej zmiennej), * a jeżeli to nie tabelka, co jest zwracane, to już zostało powiedziane. Definicja skrótowa tej funkcji jest: <syntaxhighlight lang="lua"> function p.PobierzParametryRamki(frame)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu. }} Weźmy ramkę sformułowaną w wikikodzie jako dziecko w szablonie rodzicu: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5}} </syntaxhighlight> === Funkcje, z funkcją parametrów, z tablicą ramki lub one z podtablicą {{Code|args}} === To wtedy tablica ramki tablicy transportu posiada właśnie {{Code|frame}}, która jest tablicą, i na pewno posiada tablicę o nazwie {{Code|args}}, to wtedy tę funkcję wywołaną w ramce, która wywołuje funkcję w nagłówku, formułujemy: <syntaxhighlight lang="lua"> local p={}; local p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametryRamki=parametry_modul.PobierzParametryRamki(frame); ... end; </syntaxhighlight> ==== Przykład wywołania funkcji z funkcją parametrów z tablicą {{Code|args}} ==== Równie dobrze funkcję z ramki można wywołać w sposób, co wtedy ta funkcja też zostanie wywołana pozytywnie: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"]{args={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}}; </syntaxhighlight> W tej funkcji nie trzeba definiować funkcji fałszywej {{Code|getParent}}, w postaci: {{Code|getParent{{=}}function()end}}. Widzimi, że ta tablica posiada nazwę zmiennej tablicowej o nazwie {{Code|args}}, ale ona nie jest tablicą ramki tablicy transportu, ale tą tablicę możemy bezposrednio wsadzić w tą główną tablicę w samym argumencie funkcji. ==== Przykład wywołania z tablicą bez podtablicy {{Code|args}} ==== Równie dobrze możemy wywołać tę funkcję zdefiniowaną naszą w jakimś module w sposób: <syntaxhighlight lang="lua"> local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; local wynik=p["Nazwa funkcji"]{tabela); </syntaxhighlight> Też ta funkcja prawidłowo się wywoła. W tym przypadku, jak i w przypadkach powyżej, wyniki uzyskuje się w następującym wywołaniach: <syntaxhighlight lang="lua"> --- Zmienna: wartosc1, przyjmuje wartość: "wartość1"; local wartosc1=PobierzParametryRamki("nazwa1"); --- Zmienna: wartosc2, przyjmuje wartość: "wartość2"; local wartosc2=PobierzParametryRamki("nazwa2"); --- Zmienna: wartosc3, przyjmuje wartość: "wartość3"; local wartosc3=PobierzParametryRamki(1); </syntaxhighlight> ==== Przykład wywołania funkcji z wartością nietablicową ==== W innym przypadku wywołań funkcji ramki jest wsadzenie do niej zwykłego nietablicowego elementu, może być też to wartość: {{Code|nil}}. A to wywołanie jest: <syntaxhighlight lang="lua"> local wartosc="wartość"; --Zmienna: wartosc, nie jest w tym przypadku tablicą; local wynik=p["Nazwa funkcji"](wartosc); </syntaxhighlight> === Wywołania funkcji parametrów bez argumentów - wiele kolejnych wywołań jednocześnie === Wtedy w tej ramce w celu uzyskania, jakikolwiek wartości jest przykład wywołania tej funkcji zwracanej przez funkcję w ramce z argumentem pustym. <syntaxhighlight lang="lua"> -- Zmienna: wartość1, przyjmuje wartość: "wartość"; Jeżeli ona, przyjmuje wartość: nil, to wywołanie rzuci: nil, i za każdym następny razem; local wartosc1=PobierzParametryRamki(); -- Zmienna: wartość2, przyjmuje wartość: nil; local wartosc2=PobierzParametryRamki(); </syntaxhighlight> W wywołaniach powinno dbać się o właściwą kolejność wywołań, bo argumentem funkcji z tablicy transportu może być zwykła tablicowa wartość. Najpierw uzyskujemy wartości nietablicowe, a później tablicowe, na wypadek niewiadomej {{Code|frame}} jakiego typu ma być wartość. === Dwa przypadki, parametr w tablicy, lub wartość nietablicowa funkcji === Też ta zmienna może istnieć pod kilkoma możliwymi kluczami, lub tą zmienną może być jedyny argument funkcji, która jest nietablicową wartością, wtedy ją się wywołuje jako dla przypadku, gdy parametr jest nietablicowy lub jest pod kluczem {{Code|tekst}}: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local tekst=parametry_modul.PobierzParametryRamki(frame)("tekst"); </syntaxhighlight> === Przypadek, gdy parametr funkcji nie jest tablicą === Lub chcemy tę funkcję wywołać bezparametrowo, gdy chcemy, by {{Code|frame}} nie była tablicą: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local tekst=parametry_modul.PobierzParametryRamki(frame)(); </syntaxhighlight> === Omówienie przypadku istnienia tego samego wariantu zmiennej raz podtablicą, a raz jako zmienna nietablicowa === * Wtedy ta zmienna w przedostatnim przykładzie jest pod wartością {{Code|tekst}}, gdy wartość {{Code|frame}} jest tablicą, * lub może być jedyną wartością, którą jest {{Code|frame}}, jako zmienna nietablicowa, wtedy ta zmienna też jest pod {{Code|tekst}}, ** ta funkcja uzyskana z: {{Code|{{sr|#p.PobierzParametryRamki(frame)|p=Parametry}}}}, wtedy może być wywołana tylko raz z nienilową wartością zwracaną, następnym razem zwraca wartość {{Code|nil}}, wtedy to dotyczy przedostatniego i ostatniego przykładu. === Jakma liczyć element funkcji w przypadku różnych jej parametrów === Jeżeli {{Code|frame}} jest nietablicowa, to wtedy wartość {{Code|tekst}} jest taka sama, co {{Code|frame}}. A jeżeli jest tablicą, to ta wartością jest {{Code|frame.args["tekst"]}}, lub gdy {{Code|args}} nie istnieje, lub istnieje, ale jest nietablicowa, to wtedy ta wartość jest {{Code|frame["tekst"]}}. === Parametry alternatywne funkcji - przykład wykorzystania funkcji parametrów === A gdy zmienne istnieją pod wieloma kluczami, lub gdy funkcję wywołano ze zmienną nietablicową, wtedy ogólnie możemy dla przykładu powiedzieć: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local PobierzParametryRamki=parametry_modul.PobierzParametryRamki(frame); local wartosc1=PobierzParametryRamki("nazwa1") or PobierzParametryRamki(1); local wartosc2=PobierzParametryRamki("nazwa2") or PobierzParametryRamki(2); local wartosc3=PobierzParametryRamki("nazwa3") or PobierzParametryRamki(3); </syntaxhighlight> * Wtedy ta zmienna jest pod kluczem, np.: {{Code|nazwa1}} lub {{Code|1}}, tablicy ramki {{Code|frame}} tablicy transportu, następne wywołania dla następnych kluczy też zrzucą pewne wartości, * lub jest ona zwykłą nietablicową wartością mogącą być równą, nawet {{Code|nil}}. ---- * Następne wywołania uzyskanej tak funkcji w przypadku, gdy {{Code|frame}} jest nietablicowy, rzucać będzie z samej definicji funkcji wartości {{Code|nil}}, czyli {{Code|wartosc2{{=}}wartosc3{{=}}nil}}, ale za to wartość {{Code|wartosc1}} nie musi być, ale może, wartością {{Code|nil}}, jeśli tą wartością jest, gdy {{Code|frame{{=}}nil}}, * w przeciwnym wypadku za pierwszym razem tej wartości nietablicowej uzyskamy wartość nie {{Code|nil}}, a za drugim i dalszym zawsze wartość {{Code|nil}}. == {{Code|p.PobierzElementNumerowanyZFrameLubTablicy}} == Definicja skrótowa funkcji jest z parametrem charakteryzującym pewien zestaw zmiennych {{Code|frame}}: * które nie musi być tablicą ramki tablicy transportu, tylko może być innym parametrem, który jest tablicą parametrów podanych do funkcji, * nawet gdy parametrem podanym do funkcji, w której wykorzystujemy tą funkcję, jest jedyna zmienna będąca tablicą ramki. Ale z drugiej strony, tak nie musi być, może być to rozbudowany zestaw zmiennych, np. nazwanych i nienazwanych, którego wszystkie sposoby podawania łączymy jednym sposobem podawania. Mimo że parametry funkcji są parametrami nienazwanymi, mogą być one ponumerowane, ale zmienna w tablicy może przyjmować wartość tą samą na różne sposoby, raz w sposób nazwany, a za innym sposobem jako nienazwany. Ogólnie ostateczne parametry łączymy w dane parametry za pomocą jednego sposobu, tzn. za pomocą tej funkcji, i dla tak uzyskanej tablicy tworzymy funkcję zwracaną przez funkcję w nagłówku, która przyjmuje parametr, który jest kluczem tej uzyskanej tablicy. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobierzElementNumerowanyZFrameLubTablicy(frame)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu. }} Weźmy najprostszy sposób realizacji tej funkcji, w realizacji: {{Code|1-1, 2-2, 3-3}}, czyli ten opis jest zaraz poniżej. === Sposoby wywołania funkcji === ; Pierwszy sposób{{dk}} Weźmy funkcję, którą można wywoływać z wieloma parametrami, jak i w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, którą przykładowo piszemy jego wywołanie wewnątrz innej funkcji na pięć sposobów, czyli teraz pierwszy sposób z tylko z parametrem, więc tablicą ramki tablicy transportu wywodzącą się z ramki uruchomioną w wikikodzie w jakimś szablonie rodzicu: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"](frame); </syntaxhighlight> ; Drugi sposób{{dk}} A teraz drugi sposób, pisząc, bezpośrednio inaczej, formułując wywołanie tej funkcji, używając zmiennych tablicowych tablicy ramki, ale to nie jest tak naprawdę tablica ramka tablicy transportu, tylko parametr podany bezpośrednio do funkcji, tak jak się to robi w języku {{lpg|Lua}}, nie jak w przykładzie powyżej, więc: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"]{args={"wartość1","wartość2","wartość3",},}; </syntaxhighlight> ; Trzeci sposób{{dk}} Lub równoważnie, pisząc, nie używając zmiennej {{Code|args}}: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"]{"wartość1","wartość2","wartość3",}; </syntaxhighlight> ; Czwarty sposób{{dk}} Albo te parametry wsadzając do funkcji: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"]("wartość1","wartość2","wartość3"); </syntaxhighlight> ; Piąty sposób{{dk}} Można też wywołać to wszystko w ramce, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w wikikpdzie, wtedy wsadzając parametry do ramki: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|wartość1|wartość2|wartość3}} </syntaxhighlight> === Omówienie pobierania takich parmetrów === A jak połączyć wszystkie te pięć sposobów, posługiwać się tymi sposobami wewnątrz funkcji {{Code|Nazwa funkcji}} w sposób jednolity, jedynie wtedy należy skorzystać z funkcji z definiowaną w jakimś module w sposób: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(...) local tablica_prametrow_funkcji={...}; local parametry_modul=require("Module:Parametry"); local PobierzElementNumerowanyZFrameLubTablicy=parametry_modul.PobierzElementNumerowanyZFrameLubTablicy(tablica_prametrow_funkcji); ... end; </syntaxhighlight> Wtedy za pomocą zmiennej {{Code|PobierzElementNumerowanyZFrameLubTablicy}} dostaliśmy się do funkcji, która przyjmuje jedyny parametr, aby dostać się do elementów tablicy uzyskanej w wewnątrz tej funkcji, zdefiniowaną w tablicy {{Code|tablica_prametrow_funkcji}}, która jest nic innym jak zestawem parametrów w funkcji: {{Code|Nazwa funkcji}}. === Omówienie sposobów wykorzystywania, robienia tego samego, na różne warianty === * W pierwszym i drugim sposobem zmienną tą nazwijmy to jako {{Code|args}}, jest zmienną z podtablicy innego {{Code|args}} przekazanych jako parametr tablicy do funkcji, * w trzecim sposobie tą zmienną jest cała tablica, * a czwartym jest zestaw parametrów ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. A czym się różnią się te sposoby, a więc te sposoby można powiązać jedną tylko funkcją powiedzianą w nagłówku według przykładu podaną zaraz powyżej, wtedy możemy dostawać się do tych samych zmiennych o takich samych nazwach i wartościach, ale w różnych reprezentacjach na różne sposoby, wtedy można powiedzieć, że: <syntaxhighlight lang="lua"> args[1]="wartość1"; args[2]="wartość2"; args[3]="wartość3"; </syntaxhighlight> === Ogólny opis stosowania funkcji === Czyli w wyniku działania funkcji w nagłówku, otrzymamy funkcję zwracającą te wartości, która operuje na tej tablicy, której wynikiem jest zestaw zmiennych ponumerowanych, ogólnie nienazwanych, której wartości odpowiadają te podane w ramce ostatniej powyżej. Na podstawie tego wiemy, jak działa funkcja ta z nagłówka. === Nazwy alternatywne danych parametrów funkcji ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}} === Pisząc w inny sposób, można też wskazywać: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(...) local tablica_prametrow_funkcji={...}; local parametry_modul=require("Module:Parametry"); local PobierzElementNumerowanyZFrameLubTablicy=parametry_modul.PobierzElementNumerowanyZFrameLubTablicy(tablica_prametrow_funkcji); local wartosc1=PobierzElementNumerowanyZFrameLubTablicy("nazwa1") or PobierzElementNumerowanyZFrameLubTablicy(1); local wartosc2=PobierzElementNumerowanyZFrameLubTablicy("nazwa2") or PobierzElementNumerowanyZFrameLubTablicy(2); local wartosc3=PobierzElementNumerowanyZFrameLubTablicy("nazwa3") or PobierzElementNumerowanyZFrameLubTablicy(3); end; </syntaxhighlight> Zmienne w przykładzie o kluczach: {{Code|nazwa1}}, {{Code|nazwa2}} i {{Code|nazwa3}}, posiadające pewne swoje wartości, to są zmienne w tablicy {{Code|tablica_prametrow_funkcji}}, podane też jako zmienne, jako pewne argumenty tablicy, który są w tej funkcji zwracanej jako argument (parametr) funkcji: * jeżeli argumenty podano w postaci jednego parametru funkcji w postaci pewnej tablicy z np. elementami nazwanymi, * lub jako wiele argumentów w ramce, w wikikodzie, w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w pewnym szablonie, * a rozpatrując dalej elementy względem ich nazw, np. alternatywnych, to te numery mogą być kolejo do nazw ich odpowiedników nazwanych, które w przykładzie powyżej, mają pierwszeństwo, ale tak nie musi być, te parametry: {{Code|1}}, {{Code|2}} i {{Code|3}}, to jest numer parametru. To stosujemy, jeżeli argumenty do funkcji podano w postaci wielu jego parametrów. == {{Code|p.PobierzParametr}} == Ta funkcja zwraca znów inną funkcję, która ma jedyny parametr, mówiący jakiego parametru poszukujemy, co jest wyjaśnione w definicji funkcji z nagłówka, że ona zwraca tą właśnie funkcje. Definicja skrótowa dunkcji: <syntaxhighlight lang="lua"> function p.PobierzParametr(frame,czy_frame_lub_parent,czy_frame) ... return function(nazwa) return __pobierz_parametr_table_args(nazwa); end; end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu. | 2 = {{Code|czy_frame_lub_parent}} i {{Code|czy_frame}} | _2 = Parametry logiczne dodatkowe funkcji. }} === Wartość zwracana i jego druga wartośc w postaci numeru metody === Funkcja zwraca jednocześnie dwie wartości, ta zwrócona z funkcji z nagłówka, prawdziwą wartość, i numer metody w postaci: {{Code|return wartosc, numer_metody}}. === Opis zwracanych elementów przez funkcję zwracaną - różne metody zwracania, jak je wykorzystać === Ta funkcja zwracana ma w swojej definicji jeszcze inną funkcję, wykorzystaną w nim. To jest za każdym razem inna funkcja w zależności z jakim typem danych się posługujemy {{Code|frame}}, i jakie podaliśmy parametry, tzn. czy ona jest tablicą. ==== Gdy funkcja ramki {{Code|pf.getParent}} istnieje lub posiada jego fałszywą definicję ==== Gdy warunkiem, gdy zmienna {{Code|frame}} jest tablicą, czyli te zmienne druga: {{Code|czy_frame_lub_parent}} (jeżeli funkcja jest uruchomiona w ramce w szablonie, jeżeli ma wartość {{Code|true}}, to ona wybiera raz parametr z: {{Code|frame.args[nazwa or 1]}}, a za innym razem z {{Code|pf.args[nazwa or 1]}}, gdzie {{Code|pf{{=}}frame:getParent()}}, tutaj jest zwracana wartość: {{Code|return wartosc,2}}). ==== Gdy funkcja ramki istnieje, i gdy: {{Code|czy_frame_lub_parent}}, jest fałszywe, albo ta tablica nie jest ramką, nawet bez fałszywej definicji funkcji fałszywej ramki parametrów rodzica ==== Czy trzecia: {{Code|czy_frame}} (która mówi, jeżeli funkcję uruchomiono w ramce, ale przy wartości prawdziwej tego pierwszego podanego parametru, czyli {{Code|true}}, wybierana jest zawsze wartość {{Code|frame.args[nazwa or 1]}}, w przeciwnym wypadku uruchamiana jest funkcja {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, tutaj zwracana jest wartość {{Code|return wartosc,1}}). ==== Wartość nietablicowa funkcji parametrów ==== Jeżeli wartością {{Code|frame}} jest wartość nietablicowa, ale niebędącą wartością {{Code|nil}}, wtedy ustawiana jest funkcja, która tylko za pierwszym razem zwraca nienilową wartość {{Code|return wartosc,0}}, a później zwraca wartość {{Code|return nil,0}}. ==== Przypadek nietablicowa wartości, ale nilowej funkcji parametrów ==== Gdy wartością {{Code|frame}} jest {{Code|nil}}, to funkcja zawsze wraca tą wartość {{Code|return nil,0}}. ==== Fałszywa funkcja ramki parametrów rodzica ==== Ta funkcja parametrów działa dobrze, gdy zdefiniujemy w parametrach funkcji fałszywą funkcję {{Code|frame.getParent}}. ==== Brak definicji funkcji ramki parametrów rodzica ==== Gdy funkcja nie jest uruchamiana w ramce lub funkcja {{Code|frame.getParent}} nie jest zdefiniowana, to wtedy funkcja wchodzi zawsze w ten jej krok, jakby {{Code|czy_frame_lub_parent}} było {{Code|false}} według tego powyżej, to wtedy brana jest zmienna {{Code|czy_frame}}, i jaką wartość ona przyjmuje. === Nazwy alternatywne parametrów === Funkcję pisze się według sposobu, którą się wywołuje według: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame); local wartosc1=PobierzParametr("nazwa1") or PobierzParametr(1); local wartosc2=PobierzParametr("nazwa2") or PobierzParametr(2); local wartosc3=PobierzParametr("nazwa3") or PobierzParametr(3); </syntaxhighlight> Na wypadek wartości nietabelowej, tą wartość zapisuje się jako pierwszą w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a dla wartości tabelowych, jaka jest kolejność to jest obojętne, byle by to było sensowne. === Wywołania funkcji w ramce, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, z funkcją parametrów === Tę funkcję podobnie się wywołuje jak funkcję: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}. Wartością {{Code|frame}} nie musi być tablica ramki tablicy transportu, równie dobrze może być to dowolna tablica lub wartość nietablicowa. Weźmy ramkę, w której uruchamiamy funkcję ramki: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}} </syntaxhighlight> === Przykłady wykorzystania funkcji === ; Przykład pierwszy{{dk}} Ona musi być wywołana z parametrem {{Parametr|wyspecjalizowana|tak}}, jako podpowiedź, że liczą się parametry ramki dziecka, a nie jego rodzica, czyli szablonu. Wtedy funkcję {{Code|Nazwa funkcji}} definiujemy: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame,true); ... end; </syntaxhighlight> Wtedy parametr {{Parametr|wyspecjalizowana|tak}} jest ignorowany, a przy wartości {{Code|false}} drugiego parametru funkcji, czyli wywołania: {{Code|local PobierzParametr{{=}}parametry_modul.PobierzParametr(frame,false);}}, już nie, ale nie zawsze. W takim przypadku według powyższego przykładu raz jest brana wartość, jeżeli istnieje, z {{Code|frame.args}}, a jak ona nie istnieje, to wtedy z: {{Code|pf.args}}. ; Przykład drugi{{dk}} Weźmy inny przypadek: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame,false,true); ... end; </syntaxhighlight> Przy tym też parametr: {{Parametr|wyspecjalizowana|tak}}, jest ignorowany, wtedy jest zawsze wybierana do rozważań tablica: {{Code|frame.args}}. ; Przykład trzeci{{dk}} Znów w innym przypadku, gdzie parametr: {{Parametr|wyspecjalizowana|tak}}, jest zawsze rozważany w naszym wypadku: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame,false,false); ... end; </syntaxhighlight> To to wywołanie, wtedy dokładnie działa jak funkcja: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, a zwrócona funkcja: {{Code|PobierzParametr}} pobiera elementy z tak uzyskanej tablicy {{Code|args}} poprzez nią. === Przypadek nietablicowego charakteru parametrów funkcji === W przypadku, gdy {{Code|frame}} nie jest tablicą, wtedy parametry: {{Code|czy_frame_lub_parent}} i {{Code|czy_frame}}, są w takim przypadku zawsze ignorowane, ale muszą być ustawione na wypadek, gdyby do funkcji {{Code|Nazwa funkcji}} wsadzono tablicę, np. z ramki, tzn. tablicę ramki funkcji tablicy transportu. === Ogólny przypadek, często stosowany === Najprostszym często ogólnym przykładem, który prawie zawsze jest stosowany: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame); ... end; </syntaxhighlight> Wtedy parametr: {{Parametr|wyspecjalizowana|tak}}, jest prawie zawsze nieignorowany, ale nie zawsze. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> gag8qyfx8k1jkog5ocdwcdn9tmwkcka 555798 555794 2026-09-12T11:05:57Z Persino 2851 /* Wartość zwracana i jego druga wartośc w postaci numeru metody */ 555798 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} Są tutaj przedstawione funkcje parametrów. == {{Code|p.PobierzFrameEwentualnieParent}} == Argument tej funkcji {{Code|frame}} koniecznie musi być tablicą, w przypadku przeciwnym wywoła to błąd języka {{lpg|Lua}}, że z wartości nietabelowej chcemy wyliczyć jego nieistniejący element {{Code|getParent}}, który ma prawo nie być. Funkcja pobiera parametry ramki szablonu rodzica, a nie dziecka, a jeżeli w dziecku w ramce w wikikodzie w szablonie podamy specjalny parametr {{Parametr|wyspecjalizowana|tak}}, to wtedy ta funkcja ściąga parametry ramki. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobierzFrameEwentualnieParent(frame)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu. }} === Sterowanie funkcją === Tą funkcją można sterować ze strony ramki tym właśnie specjalnym parametrem o wartości niepustej, którą jest {{Parametr|wyspecjalizowana|tak}}. ==== Przykłady wykorzystania z parametrem sterującym ==== W ramce podajemy argumenty wraz z tym specjalnym parametrem: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}} </syntaxhighlight> To wtedy w kodzie w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} w module o nazwie {{Code|Nazwa modułu}}, piszemy: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzFrameEwentualnieParent(frame).args; .... end; </syntaxhighlight> To wtedy w kodzie ściągane parametry ramki dziecka. === Pobieranie oryginalnej tablicy === Tę funkcję można równie dobrze wykorzystać do zwykłych tabel: <syntaxhighlight lang="lua"> local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzFrameEwentualnieParent(tabela); </syntaxhighlight> === Możliwość tej samej funkcji uruchomioną w ramce lub z podaniem do niej pewnego zestawu parametrów w postaci tablicy === A w tym przypadku ta funkcja nic nie robi, tylko zmienna {{Code|args}} referencyjnie wskazuje na tablicę {{Code|tablica}}. Ale można ją wykorzystać, gdy by funkcja {{Code|Nazwa funkcji}}, była uruchomiona ze zwykłą tablicą, ale z możliwością, że to może być tablicą ramki {{Code|frame}} tablicy transportu, np.: <syntaxhighlight lang="lua"> --- Pierwsza możliwość; local wartosc1=p["Nazwa funkcji"](frame); -- Druga możliwość local wartosc2=p["Nazwa funkcji"]{["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; </syntaxhighlight> === Niedogodności stosowania z funkcji === Dla obu jest taka niedogodność, że jedynie jest taka nieprawidłowość, że w przypadku parametru tablicy ramki tablicy transportu należy podawać uzyskany element {{Code|args}}, a w przypadku zwykłej tablicy już nie, tą niedokodność rozwiązuje funkcja: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}. == {{Code|p.PobierzArgsParametry}} == Argument tej funkcji {{Code|frame}} koniecznie nie musi być tablicą, bo wtedy nie wywoła to błędu języka {{lpg|Lua}}, że z wartości nietabelowej chcemy wyliczyć jego niepusty element {{Code|getParent}}, bo przedtem sprawdzana jest w tej funkcji, czy jest to tablica. W definicji tej funkcji zmienna uzyskana z funkcji: {{Code|{{sr|#p.PobierzFrameEwentualnieParent(frame)|p=Parametry}}}}, a jeśli jej składowa {{Code|args}} jest tablicą, to jest właśnie ona zwracana, a jeśli istnieje, ale nie jest tablicą, lub ona nie istnieje, to wtedy brana jest właśnie wartość tablicowa {{Code|frame}}, jeśli jest ona taka, a gdy nie, to wtedy z tej funkcji tutaj nie korzystamy. Funkcja pobiera parametry ramki szablonu rodzica, a nie dziecka, a jeżeli w dziecku w ramce w wikikodzie w szablonie podamy specjalny parametr {{Parametr|wyspecjalizowana|tak}}, to wtedy ta funkcja ściąga parametry ramki. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobierzArgsParametry(frame, czy_nie_tablica_jako_tablica)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica transportu ramki. | 2 = {{Code|czy_nie_tablica_jako_tablica}} | _2 = Czy wartości nietablicowe umieszczać w jednoelemenowej tabeli. }} === Opis działania === Funkcja wykorzystuje wspomnianą powyżej funkcję do swojego działania, ona jest wtedy aktywowana, gdy zmienna {{Code|frame}} jest tablicą, i jest sprawdzane, czy ona posiada nazwany element o kluczu {{Code|args}}, i czy jest on tablicowy. Jeżeli wartością zmiennej {{Code|frame}} nie jest tablica, ale nie przybiera wartości {{Code|nil}}, to ona jest umieszczana w tablicy, jeżeli zmiennej {{Code|czy_nie_tablica_jako_tablica}} przydzielimy wartość {{Code|true}}, w przeciwnym wypadku zwracana jest ona w postaci niezmienionej, a jeżeli wartość tej zmiennej nie istnieje, to zwracana jest zwykła tablica pusta. Tą funkcją można sterować ze strony ramki tym właśnie specjalnym parametrem o wartości niepustej. === Przykład wywołania funkcji z funkcją parametrów === W ramce podajemy argumenty wraz z tym specjalnym parametrem: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}} </syntaxhighlight> ==== Użycie funkcji parametrów ==== To wtedy w kodzie w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} w module o nazwie {{Code|Nazwa modułu}}, piszemy: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(frame); .... end; </syntaxhighlight> To wtedy w kodzie ściągane parametry ramki dziecka. === Wykorzystanie fukcji w różnych sytuacjach === ; Przypadek pierwszy{{dk}} Tę funkcję można równie dobrze wykorzystać do zwykłych tabel: <syntaxhighlight lang="lua"> local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(tabela); </syntaxhighlight> ; Drugi przypadek{{dk}} A w tym przypadku ta funkcja nic nie robi, tylko zmienna {{Code|args}} referencyjnie wskazuje na tablicę {{Code|tablica}}. Ale można ją wykorzystać, gdyby funkcja {{Code|Nazwa funkcji}}, była uruchomiona ze zwykłą tablicą, ale z możliwością, że to może być tablicą ramki {{Code|frame}} tablicy transportu, np.: <syntaxhighlight lang="lua"> --- Pierwsza możliwość; local wartosc1=p["Nazwa funkcji"](frame); -- Druga możliwość local wartosc2=p["Nazwa funkcji"]{["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; </syntaxhighlight> === Usunięcie niedogodności === Dla obu tych przypadków nie ma żadnej niedogodności, jak to występowała w {{Code|{{sr|#p.PobierzFrameEwentualnieParent(frame)|p=Parametry}}}}. === Parametr funkcji nietablicowy === Jeśliby do funkcji tablicy transportu dać wartość równą nie tablicy, to wtedy równoważnie możemy napisać: <syntaxhighlight lang="lua"> local wartosc="wartość"; local wynik=p["Nazwa funkcji"](wartosc); </syntaxhighlight> to wtedy definicję tej funkcji piszemy: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(frame,true); local wartosc=args[1]; end; </syntaxhighlight> lub równoważnie możemy zapisać: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); local wartosc=parametry_modul.PobierzArgsParametry(frame); end; </syntaxhighlight> === Brak parametrów funkcji === A jeżeli nie wsadziliśmy żadnej wartości do funkcji ramki tablicy transportu lub tą wartością jest {{Code|nil}}, wtedy: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"](); </syntaxhighlight> wtedy definicja tej funkcji wygląda: <syntaxhighlight lang="lua"> local p={}; function p["Nazwa funkcji"](frame) local parametry_modul=require("Module:Parametry"); -- Zmienna: args, wskazuje na wartość, którą jest tablicą pustą, tzn. w tej tablicy nie ma wcale elementów; local args=parametry_modul.PobierzArgsParametry(frame); end; </syntaxhighlight> === Zmienna {{Code|args}} - alternatywny przypadek dla wartości tablicowych niż te bez drugiego parametru === Widzimy, że wtedy zmienna {{Code|args}} jest normalną, niekoniecznie niepusta, tablicą, i nie musimy wtedy wcale pisać drugiego parametru w tej fubkcji, bo wtedy wychodzi w tym przypadku na to samo: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local args=parametry_modul.PobierzArgsParametry(frame,true); </syntaxhighlight> === Różnica drugiego parametru w przypadku wartości nietablicowych === Argument drugi w {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, który w naszym przypadku musi mieć wartość {{Code|true}}, a wtedy jest jedynie sens, gdy {{Code|frame}} nie jest tablicą, i gdy chcemy tą wartość umieścić w tablicy, a nie powtórzyć wartość, tzn. chcemy napisać: {{Code|{{(}}frame,{{)}}}}, w przeciwnym wypadku musilibyśmy napisać coś w rodzaju, zamiast tak spreparowanej tablicy: {{Code|frame}}, czyli: <syntaxhighlight lang="lua"> -- Pierwszy przypadek, gdy frame jest wartością nietablicową; local parametry_modul=require("Module:Parametry"); ... -- Zwracana wartość: args, to nic innego niż: {frame,}; local args=parametry_modul.PobierzArgsParametry(frame,true); ... -- Zwracana wartość: args, to nic innego niż: frame, a nie {frame,}, jak poprzednio; local args=parametry_modul.PobierzArgsParametry(frame); </syntaxhighlight> == {{Code|p.PobierzParametryRamki}} == Funkcja służy do pobierania parametrów ramki dziecka, nie rodzica. Funkcja służy do ustawienia pewnych domyślnych dwóch pewnych funkcji służących do pobieranie danych z tabelki z pierwszej tej funkcji: * Jeżeli ona posiada klucz o wartości {{Code|args}}, ** to zwracana jest ta właśnie tablica jako argument pierwszej tej funkcji, jeżeli jest w ogóle tablicą, ** w przeciwnym wypadku zwracana jest ta oryginalna tablica, też jako argument tej funkcji, * w przeciwnym dalszym wypadku zwracana jest zwracana wartość ta, jako argument tej drugiej funkcji, która zwraca prawdziwą wartość z argumentu tylko za pierwszym razem, z tej funkcji, za następnym i dalszym razem {{Code|nil}}. Z tak utworzonej ogólnie większej funkcji wykorzystywana jest w budowie omawianej funkcji, która jest zwracana przez omawianą funkcję, która względem jego budowy wywołuje raz pierwszą albo drugą poprzednią wspomnianą funkcję zależną od rodzaju zmiennej {{Code|frame}}, która może być tabelką, ale nie musi być. Ta funkcja zwracana przez funkcję w nagłówku przyjmuje argument, która jest kluczem do tych wspomnianych, może że, * tabel (dokładnie, która ta może tabelka to zależy od formatu tej naszej rozważanej zmiennej), * a jeżeli to nie tabelka, co jest zwracane, to już zostało powiedziane. Definicja skrótowa tej funkcji jest: <syntaxhighlight lang="lua"> function p.PobierzParametryRamki(frame)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu. }} Weźmy ramkę sformułowaną w wikikodzie jako dziecko w szablonie rodzicu: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5}} </syntaxhighlight> === Funkcje, z funkcją parametrów, z tablicą ramki lub one z podtablicą {{Code|args}} === To wtedy tablica ramki tablicy transportu posiada właśnie {{Code|frame}}, która jest tablicą, i na pewno posiada tablicę o nazwie {{Code|args}}, to wtedy tę funkcję wywołaną w ramce, która wywołuje funkcję w nagłówku, formułujemy: <syntaxhighlight lang="lua"> local p={}; local p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametryRamki=parametry_modul.PobierzParametryRamki(frame); ... end; </syntaxhighlight> ==== Przykład wywołania funkcji z funkcją parametrów z tablicą {{Code|args}} ==== Równie dobrze funkcję z ramki można wywołać w sposób, co wtedy ta funkcja też zostanie wywołana pozytywnie: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"]{args={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}}; </syntaxhighlight> W tej funkcji nie trzeba definiować funkcji fałszywej {{Code|getParent}}, w postaci: {{Code|getParent{{=}}function()end}}. Widzimi, że ta tablica posiada nazwę zmiennej tablicowej o nazwie {{Code|args}}, ale ona nie jest tablicą ramki tablicy transportu, ale tą tablicę możemy bezposrednio wsadzić w tą główną tablicę w samym argumencie funkcji. ==== Przykład wywołania z tablicą bez podtablicy {{Code|args}} ==== Równie dobrze możemy wywołać tę funkcję zdefiniowaną naszą w jakimś module w sposób: <syntaxhighlight lang="lua"> local tabela={["nazwa1"]="wartość1",["nazwa2"]="wartość2","wartość3",}; local wynik=p["Nazwa funkcji"]{tabela); </syntaxhighlight> Też ta funkcja prawidłowo się wywoła. W tym przypadku, jak i w przypadkach powyżej, wyniki uzyskuje się w następującym wywołaniach: <syntaxhighlight lang="lua"> --- Zmienna: wartosc1, przyjmuje wartość: "wartość1"; local wartosc1=PobierzParametryRamki("nazwa1"); --- Zmienna: wartosc2, przyjmuje wartość: "wartość2"; local wartosc2=PobierzParametryRamki("nazwa2"); --- Zmienna: wartosc3, przyjmuje wartość: "wartość3"; local wartosc3=PobierzParametryRamki(1); </syntaxhighlight> ==== Przykład wywołania funkcji z wartością nietablicową ==== W innym przypadku wywołań funkcji ramki jest wsadzenie do niej zwykłego nietablicowego elementu, może być też to wartość: {{Code|nil}}. A to wywołanie jest: <syntaxhighlight lang="lua"> local wartosc="wartość"; --Zmienna: wartosc, nie jest w tym przypadku tablicą; local wynik=p["Nazwa funkcji"](wartosc); </syntaxhighlight> === Wywołania funkcji parametrów bez argumentów - wiele kolejnych wywołań jednocześnie === Wtedy w tej ramce w celu uzyskania, jakikolwiek wartości jest przykład wywołania tej funkcji zwracanej przez funkcję w ramce z argumentem pustym. <syntaxhighlight lang="lua"> -- Zmienna: wartość1, przyjmuje wartość: "wartość"; Jeżeli ona, przyjmuje wartość: nil, to wywołanie rzuci: nil, i za każdym następny razem; local wartosc1=PobierzParametryRamki(); -- Zmienna: wartość2, przyjmuje wartość: nil; local wartosc2=PobierzParametryRamki(); </syntaxhighlight> W wywołaniach powinno dbać się o właściwą kolejność wywołań, bo argumentem funkcji z tablicy transportu może być zwykła tablicowa wartość. Najpierw uzyskujemy wartości nietablicowe, a później tablicowe, na wypadek niewiadomej {{Code|frame}} jakiego typu ma być wartość. === Dwa przypadki, parametr w tablicy, lub wartość nietablicowa funkcji === Też ta zmienna może istnieć pod kilkoma możliwymi kluczami, lub tą zmienną może być jedyny argument funkcji, która jest nietablicową wartością, wtedy ją się wywołuje jako dla przypadku, gdy parametr jest nietablicowy lub jest pod kluczem {{Code|tekst}}: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local tekst=parametry_modul.PobierzParametryRamki(frame)("tekst"); </syntaxhighlight> === Przypadek, gdy parametr funkcji nie jest tablicą === Lub chcemy tę funkcję wywołać bezparametrowo, gdy chcemy, by {{Code|frame}} nie była tablicą: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local tekst=parametry_modul.PobierzParametryRamki(frame)(); </syntaxhighlight> === Omówienie przypadku istnienia tego samego wariantu zmiennej raz podtablicą, a raz jako zmienna nietablicowa === * Wtedy ta zmienna w przedostatnim przykładzie jest pod wartością {{Code|tekst}}, gdy wartość {{Code|frame}} jest tablicą, * lub może być jedyną wartością, którą jest {{Code|frame}}, jako zmienna nietablicowa, wtedy ta zmienna też jest pod {{Code|tekst}}, ** ta funkcja uzyskana z: {{Code|{{sr|#p.PobierzParametryRamki(frame)|p=Parametry}}}}, wtedy może być wywołana tylko raz z nienilową wartością zwracaną, następnym razem zwraca wartość {{Code|nil}}, wtedy to dotyczy przedostatniego i ostatniego przykładu. === Jakma liczyć element funkcji w przypadku różnych jej parametrów === Jeżeli {{Code|frame}} jest nietablicowa, to wtedy wartość {{Code|tekst}} jest taka sama, co {{Code|frame}}. A jeżeli jest tablicą, to ta wartością jest {{Code|frame.args["tekst"]}}, lub gdy {{Code|args}} nie istnieje, lub istnieje, ale jest nietablicowa, to wtedy ta wartość jest {{Code|frame["tekst"]}}. === Parametry alternatywne funkcji - przykład wykorzystania funkcji parametrów === A gdy zmienne istnieją pod wieloma kluczami, lub gdy funkcję wywołano ze zmienną nietablicową, wtedy ogólnie możemy dla przykładu powiedzieć: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local PobierzParametryRamki=parametry_modul.PobierzParametryRamki(frame); local wartosc1=PobierzParametryRamki("nazwa1") or PobierzParametryRamki(1); local wartosc2=PobierzParametryRamki("nazwa2") or PobierzParametryRamki(2); local wartosc3=PobierzParametryRamki("nazwa3") or PobierzParametryRamki(3); </syntaxhighlight> * Wtedy ta zmienna jest pod kluczem, np.: {{Code|nazwa1}} lub {{Code|1}}, tablicy ramki {{Code|frame}} tablicy transportu, następne wywołania dla następnych kluczy też zrzucą pewne wartości, * lub jest ona zwykłą nietablicową wartością mogącą być równą, nawet {{Code|nil}}. ---- * Następne wywołania uzyskanej tak funkcji w przypadku, gdy {{Code|frame}} jest nietablicowy, rzucać będzie z samej definicji funkcji wartości {{Code|nil}}, czyli {{Code|wartosc2{{=}}wartosc3{{=}}nil}}, ale za to wartość {{Code|wartosc1}} nie musi być, ale może, wartością {{Code|nil}}, jeśli tą wartością jest, gdy {{Code|frame{{=}}nil}}, * w przeciwnym wypadku za pierwszym razem tej wartości nietablicowej uzyskamy wartość nie {{Code|nil}}, a za drugim i dalszym zawsze wartość {{Code|nil}}. == {{Code|p.PobierzElementNumerowanyZFrameLubTablicy}} == Definicja skrótowa funkcji jest z parametrem charakteryzującym pewien zestaw zmiennych {{Code|frame}}: * które nie musi być tablicą ramki tablicy transportu, tylko może być innym parametrem, który jest tablicą parametrów podanych do funkcji, * nawet gdy parametrem podanym do funkcji, w której wykorzystujemy tą funkcję, jest jedyna zmienna będąca tablicą ramki. Ale z drugiej strony, tak nie musi być, może być to rozbudowany zestaw zmiennych, np. nazwanych i nienazwanych, którego wszystkie sposoby podawania łączymy jednym sposobem podawania. Mimo że parametry funkcji są parametrami nienazwanymi, mogą być one ponumerowane, ale zmienna w tablicy może przyjmować wartość tą samą na różne sposoby, raz w sposób nazwany, a za innym sposobem jako nienazwany. Ogólnie ostateczne parametry łączymy w dane parametry za pomocą jednego sposobu, tzn. za pomocą tej funkcji, i dla tak uzyskanej tablicy tworzymy funkcję zwracaną przez funkcję w nagłówku, która przyjmuje parametr, który jest kluczem tej uzyskanej tablicy. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.PobierzElementNumerowanyZFrameLubTablicy(frame)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu. }} Weźmy najprostszy sposób realizacji tej funkcji, w realizacji: {{Code|1-1, 2-2, 3-3}}, czyli ten opis jest zaraz poniżej. === Sposoby wywołania funkcji === ; Pierwszy sposób{{dk}} Weźmy funkcję, którą można wywoływać z wieloma parametrami, jak i w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, którą przykładowo piszemy jego wywołanie wewnątrz innej funkcji na pięć sposobów, czyli teraz pierwszy sposób z tylko z parametrem, więc tablicą ramki tablicy transportu wywodzącą się z ramki uruchomioną w wikikodzie w jakimś szablonie rodzicu: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"](frame); </syntaxhighlight> ; Drugi sposób{{dk}} A teraz drugi sposób, pisząc, bezpośrednio inaczej, formułując wywołanie tej funkcji, używając zmiennych tablicowych tablicy ramki, ale to nie jest tak naprawdę tablica ramka tablicy transportu, tylko parametr podany bezpośrednio do funkcji, tak jak się to robi w języku {{lpg|Lua}}, nie jak w przykładzie powyżej, więc: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"]{args={"wartość1","wartość2","wartość3",},}; </syntaxhighlight> ; Trzeci sposób{{dk}} Lub równoważnie, pisząc, nie używając zmiennej {{Code|args}}: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"]{"wartość1","wartość2","wartość3",}; </syntaxhighlight> ; Czwarty sposób{{dk}} Albo te parametry wsadzając do funkcji: <syntaxhighlight lang="lua"> local wynik=p["Nazwa funkcji"]("wartość1","wartość2","wartość3"); </syntaxhighlight> ; Piąty sposób{{dk}} Można też wywołać to wszystko w ramce, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w wikikpdzie, wtedy wsadzając parametry do ramki: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|wartość1|wartość2|wartość3}} </syntaxhighlight> === Omówienie pobierania takich parmetrów === A jak połączyć wszystkie te pięć sposobów, posługiwać się tymi sposobami wewnątrz funkcji {{Code|Nazwa funkcji}} w sposób jednolity, jedynie wtedy należy skorzystać z funkcji z definiowaną w jakimś module w sposób: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(...) local tablica_prametrow_funkcji={...}; local parametry_modul=require("Module:Parametry"); local PobierzElementNumerowanyZFrameLubTablicy=parametry_modul.PobierzElementNumerowanyZFrameLubTablicy(tablica_prametrow_funkcji); ... end; </syntaxhighlight> Wtedy za pomocą zmiennej {{Code|PobierzElementNumerowanyZFrameLubTablicy}} dostaliśmy się do funkcji, która przyjmuje jedyny parametr, aby dostać się do elementów tablicy uzyskanej w wewnątrz tej funkcji, zdefiniowaną w tablicy {{Code|tablica_prametrow_funkcji}}, która jest nic innym jak zestawem parametrów w funkcji: {{Code|Nazwa funkcji}}. === Omówienie sposobów wykorzystywania, robienia tego samego, na różne warianty === * W pierwszym i drugim sposobem zmienną tą nazwijmy to jako {{Code|args}}, jest zmienną z podtablicy innego {{Code|args}} przekazanych jako parametr tablicy do funkcji, * w trzecim sposobie tą zmienną jest cała tablica, * a czwartym jest zestaw parametrów ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. A czym się różnią się te sposoby, a więc te sposoby można powiązać jedną tylko funkcją powiedzianą w nagłówku według przykładu podaną zaraz powyżej, wtedy możemy dostawać się do tych samych zmiennych o takich samych nazwach i wartościach, ale w różnych reprezentacjach na różne sposoby, wtedy można powiedzieć, że: <syntaxhighlight lang="lua"> args[1]="wartość1"; args[2]="wartość2"; args[3]="wartość3"; </syntaxhighlight> === Ogólny opis stosowania funkcji === Czyli w wyniku działania funkcji w nagłówku, otrzymamy funkcję zwracającą te wartości, która operuje na tej tablicy, której wynikiem jest zestaw zmiennych ponumerowanych, ogólnie nienazwanych, której wartości odpowiadają te podane w ramce ostatniej powyżej. Na podstawie tego wiemy, jak działa funkcja ta z nagłówka. === Nazwy alternatywne danych parametrów funkcji ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}} === Pisząc w inny sposób, można też wskazywać: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(...) local tablica_prametrow_funkcji={...}; local parametry_modul=require("Module:Parametry"); local PobierzElementNumerowanyZFrameLubTablicy=parametry_modul.PobierzElementNumerowanyZFrameLubTablicy(tablica_prametrow_funkcji); local wartosc1=PobierzElementNumerowanyZFrameLubTablicy("nazwa1") or PobierzElementNumerowanyZFrameLubTablicy(1); local wartosc2=PobierzElementNumerowanyZFrameLubTablicy("nazwa2") or PobierzElementNumerowanyZFrameLubTablicy(2); local wartosc3=PobierzElementNumerowanyZFrameLubTablicy("nazwa3") or PobierzElementNumerowanyZFrameLubTablicy(3); end; </syntaxhighlight> Zmienne w przykładzie o kluczach: {{Code|nazwa1}}, {{Code|nazwa2}} i {{Code|nazwa3}}, posiadające pewne swoje wartości, to są zmienne w tablicy {{Code|tablica_prametrow_funkcji}}, podane też jako zmienne, jako pewne argumenty tablicy, który są w tej funkcji zwracanej jako argument (parametr) funkcji: * jeżeli argumenty podano w postaci jednego parametru funkcji w postaci pewnej tablicy z np. elementami nazwanymi, * lub jako wiele argumentów w ramce, w wikikodzie, w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w pewnym szablonie, * a rozpatrując dalej elementy względem ich nazw, np. alternatywnych, to te numery mogą być kolejo do nazw ich odpowiedników nazwanych, które w przykładzie powyżej, mają pierwszeństwo, ale tak nie musi być, te parametry: {{Code|1}}, {{Code|2}} i {{Code|3}}, to jest numer parametru. To stosujemy, jeżeli argumenty do funkcji podano w postaci wielu jego parametrów. == {{Code|p.PobierzParametr}} == Ta funkcja zwraca znów inną funkcję, która ma jedyny parametr, mówiący jakiego parametru poszukujemy, co jest wyjaśnione w definicji funkcji z nagłówka, że ona zwraca tą właśnie funkcje. Definicja skrótowa dunkcji: <syntaxhighlight lang="lua"> function p.PobierzParametr(frame,czy_frame_lub_parent,czy_frame) ... return function(nazwa) return __pobierz_parametr_table_args(nazwa); end; end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu. | 2 = {{Code|czy_frame_lub_parent}} i {{Code|czy_frame}} | _2 = Parametry logiczne dodatkowe funkcji. }} === Wartość zwracana, i jego druga wartość w postaci numeru metody === Funkcja zwraca jednocześnie dwie wartości, ta zwrócona z funkcji z nagłówka, prawdziwą wartość, i numer metody w postaci: {{Code|return wartosc, numer_metody}}. === Opis zwracanych elementów przez funkcję zwracaną - różne metody zwracania, jak je wykorzystać === Ta funkcja zwracana ma w swojej definicji jeszcze inną funkcję, wykorzystaną w nim. To jest za każdym razem inna funkcja w zależności z jakim typem danych się posługujemy {{Code|frame}}, i jakie podaliśmy parametry, tzn. czy ona jest tablicą. ==== Gdy funkcja ramki {{Code|pf.getParent}} istnieje lub posiada jego fałszywą definicję ==== Gdy warunkiem, gdy zmienna {{Code|frame}} jest tablicą, czyli te zmienne druga: {{Code|czy_frame_lub_parent}} (jeżeli funkcja jest uruchomiona w ramce w szablonie, jeżeli ma wartość {{Code|true}}, to ona wybiera raz parametr z: {{Code|frame.args[nazwa or 1]}}, a za innym razem z {{Code|pf.args[nazwa or 1]}}, gdzie {{Code|pf{{=}}frame:getParent()}}, tutaj jest zwracana wartość: {{Code|return wartosc,2}}). ==== Gdy funkcja ramki istnieje, i gdy: {{Code|czy_frame_lub_parent}}, jest fałszywe, albo ta tablica nie jest ramką, nawet bez fałszywej definicji funkcji fałszywej ramki parametrów rodzica ==== Czy trzecia: {{Code|czy_frame}} (która mówi, jeżeli funkcję uruchomiono w ramce, ale przy wartości prawdziwej tego pierwszego podanego parametru, czyli {{Code|true}}, wybierana jest zawsze wartość {{Code|frame.args[nazwa or 1]}}, w przeciwnym wypadku uruchamiana jest funkcja {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, tutaj zwracana jest wartość {{Code|return wartosc,1}}). ==== Wartość nietablicowa funkcji parametrów ==== Jeżeli wartością {{Code|frame}} jest wartość nietablicowa, ale niebędącą wartością {{Code|nil}}, wtedy ustawiana jest funkcja, która tylko za pierwszym razem zwraca nienilową wartość {{Code|return wartosc,0}}, a później zwraca wartość {{Code|return nil,0}}. ==== Przypadek nietablicowa wartości, ale nilowej funkcji parametrów ==== Gdy wartością {{Code|frame}} jest {{Code|nil}}, to funkcja zawsze wraca tą wartość {{Code|return nil,0}}. ==== Fałszywa funkcja ramki parametrów rodzica ==== Ta funkcja parametrów działa dobrze, gdy zdefiniujemy w parametrach funkcji fałszywą funkcję {{Code|frame.getParent}}. ==== Brak definicji funkcji ramki parametrów rodzica ==== Gdy funkcja nie jest uruchamiana w ramce lub funkcja {{Code|frame.getParent}} nie jest zdefiniowana, to wtedy funkcja wchodzi zawsze w ten jej krok, jakby {{Code|czy_frame_lub_parent}} było {{Code|false}} według tego powyżej, to wtedy brana jest zmienna {{Code|czy_frame}}, i jaką wartość ona przyjmuje. === Nazwy alternatywne parametrów === Funkcję pisze się według sposobu, którą się wywołuje według: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame); local wartosc1=PobierzParametr("nazwa1") or PobierzParametr(1); local wartosc2=PobierzParametr("nazwa2") or PobierzParametr(2); local wartosc3=PobierzParametr("nazwa3") or PobierzParametr(3); </syntaxhighlight> Na wypadek wartości nietabelowej, tą wartość zapisuje się jako pierwszą w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a dla wartości tabelowych, jaka jest kolejność to jest obojętne, byle by to było sensowne. === Wywołania funkcji w ramce, {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, z funkcją parametrów === Tę funkcję podobnie się wywołuje jak funkcję: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}. Wartością {{Code|frame}} nie musi być tablica ramki tablicy transportu, równie dobrze może być to dowolna tablica lub wartość nietablicowa. Weźmy ramkę, w której uruchamiamy funkcję ramki: <syntaxhighlight lang="mediawiki"> {{#invoke:Nazwa modułu|Nazwa funkcji|nazwa1=wartość1|nazwa2=wartość2|wartość3|wartość4|wartość5|wyspecjalizowana=tak}} </syntaxhighlight> === Przykłady wykorzystania funkcji === ; Przykład pierwszy{{dk}} Ona musi być wywołana z parametrem {{Parametr|wyspecjalizowana|tak}}, jako podpowiedź, że liczą się parametry ramki dziecka, a nie jego rodzica, czyli szablonu. Wtedy funkcję {{Code|Nazwa funkcji}} definiujemy: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame,true); ... end; </syntaxhighlight> Wtedy parametr {{Parametr|wyspecjalizowana|tak}} jest ignorowany, a przy wartości {{Code|false}} drugiego parametru funkcji, czyli wywołania: {{Code|local PobierzParametr{{=}}parametry_modul.PobierzParametr(frame,false);}}, już nie, ale nie zawsze. W takim przypadku według powyższego przykładu raz jest brana wartość, jeżeli istnieje, z {{Code|frame.args}}, a jak ona nie istnieje, to wtedy z: {{Code|pf.args}}. ; Przykład drugi{{dk}} Weźmy inny przypadek: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame,false,true); ... end; </syntaxhighlight> Przy tym też parametr: {{Parametr|wyspecjalizowana|tak}}, jest ignorowany, wtedy jest zawsze wybierana do rozważań tablica: {{Code|frame.args}}. ; Przykład trzeci{{dk}} Znów w innym przypadku, gdzie parametr: {{Parametr|wyspecjalizowana|tak}}, jest zawsze rozważany w naszym wypadku: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame,false,false); ... end; </syntaxhighlight> To to wywołanie, wtedy dokładnie działa jak funkcja: {{Code|{{sr|#p.PobierzArgsParametry(frame,...)|p=Parametry}}}}, a zwrócona funkcja: {{Code|PobierzParametr}} pobiera elementy z tak uzyskanej tablicy {{Code|args}} poprzez nią. === Przypadek nietablicowego charakteru parametrów funkcji === W przypadku, gdy {{Code|frame}} nie jest tablicą, wtedy parametry: {{Code|czy_frame_lub_parent}} i {{Code|czy_frame}}, są w takim przypadku zawsze ignorowane, ale muszą być ustawione na wypadek, gdyby do funkcji {{Code|Nazwa funkcji}} wsadzono tablicę, np. z ramki, tzn. tablicę ramki funkcji tablicy transportu. === Ogólny przypadek, często stosowany === Najprostszym często ogólnym przykładem, który prawie zawsze jest stosowany: <syntaxhighlight lang="lua"> local p={}; p["Nazwa funkcji"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame); ... end; </syntaxhighlight> Wtedy parametr: {{Parametr|wyspecjalizowana|tak}}, jest prawie zawsze nieignorowany, ale nie zawsze. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> nqr3xu9pdx3zwjioejcdie9doy7xlcq Wikibooks:Moduły/Parametry/Tom XIX 4 63986 555700 555651 2026-09-11T14:55:18Z Persino 2851 555700 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} ; Iteratory Poniższe operatory możemy wykorzystać w funkcjach: analogicznego do {{Code|ipairs}}, dla iteratora: {{Code|{{sr|#p.IteratorPoNumerowanychElementachTablicy(t)|p=Parametry}}}}, wynikłej z jego funkcji z wartości zwracanej, i analogicznego do {{Code|next}} (iteratora po kluczach) w {{Code|pairs}}, dla iteratora: {{Code|{{sr|#p.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu|p=Parametry}}}}, wynikłe z jego funkcji z wartości zwracanej. == {{Code|p.IteratorPoNumerowanychElementachTablicy}} == Iterator służy do iterowania po kolei liczb w pewnych tablicach, używając do tego celu tej tablicy, zdefiniowanego iteratora. Można ją zdefiniować do obsługi innego iterowania po parametrach numerowanych, analogicznie do {{Code|ipairs}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.IteratorPoNumerowanychElementachTablicy(t) ... return function() ... end; end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|t}} | _1 = Tablica, po której iterujemy po elemenetach numerowanych. }} Przykład działania iteratora jest: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local tabela={1,2,3,4,5,6,7,8,9,10,}; local iter=parametry_modul.IteratorPoNumerowanychElementachTablicy(tablica); for name, value in iter do mw.log("Klucz:",klucz,"Wartość:",value); end; </syntaxhighlight> == {{Code|p.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu}} == Iterator służy do iterowania po kolei po zsortowanych kluczach po kolei alfabetycznie, którym są przyporządkowane wartości o pewnych tych kluczach w pewnych tablicach, używając do tego celu tablicy, zdefiniowanego iteratora, metatabelki i metafunkcji w niej zdefiniowanej, gdzie: {{Code|funkcja}}, jest funkcją sortującą łańcuchy znakowe. Można ją zdefiniować do obsługi innego iterowania po parametrach nazwanych za pomocą: {{Code|pairs}}, definiując funkcję: {{Code|__next}}, analoga do {{Code|next}}, jako iteratora po kluczach posortowanych, która jest wartością zwracaną przez funkcję w nagłówku. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(tabela,funkcja) ... return function(tablica,klucz) ... end; end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tabela}} | _1 = Tabela, po której iterujemy. | 2 = {{Code|funkcja}} | _2 = Funkcja sortująca. }} Parametry funkcji zwracanej: {{OpisParametrów | 1 = {{Code|tablica}} | _1 = Tabela operowana. | 2 = {{Code|klucz}} | _2 = Klucz, dzięki któremu szukamy następny element. }} Zdefiniujmy metatablicę z metafunkcją: {{Code|__pairs}}, wtedy: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local tabela={["D"]="wartość1",["A"]="wartość2",["F"]="wartość3",["C"]="wartość4",}; local __metatabelka={}; __metatabelka.__pairs=function(t) local funkcja_sortujaca=nil; local __next=parametry_modul.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(t,funkcja_sortujaca); return __next,t,nil; end; setmetatable(tabela,__metatabelka); for name,value in pairs(tabela) do mw.log("Klucz:",klucz,"Wartość:",value); end; </syntaxhighlight> {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> opvh9zolsy2bquue9tq2p7pmpqzk2hm 555701 555700 2026-09-11T14:55:43Z Persino 2851 555701 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} ; Iteratory Poniższe operatory możemy wykorzystać w funkcjach: analogicznego do {{Code|ipairs}}, dla iteratora: {{Code|{{sr|#p.IteratorPoNumerowanychElementachTablicy|p=Parametry}}}}, wynikłej z jego funkcji z wartości zwracanej, i analogicznego do {{Code|next}} (iteratora po kluczach) w {{Code|pairs}}, dla iteratora: {{Code|{{sr|#p.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu|p=Parametry}}}}, wynikłe z jego funkcji z wartości zwracanej. == {{Code|p.IteratorPoNumerowanychElementachTablicy}} == Iterator służy do iterowania po kolei liczb w pewnych tablicach, używając do tego celu tej tablicy, zdefiniowanego iteratora. Można ją zdefiniować do obsługi innego iterowania po parametrach numerowanych, analogicznie do {{Code|ipairs}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.IteratorPoNumerowanychElementachTablicy(t) ... return function() ... end; end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|t}} | _1 = Tablica, po której iterujemy po elemenetach numerowanych. }} Przykład działania iteratora jest: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local tabela={1,2,3,4,5,6,7,8,9,10,}; local iter=parametry_modul.IteratorPoNumerowanychElementachTablicy(tablica); for name, value in iter do mw.log("Klucz:",klucz,"Wartość:",value); end; </syntaxhighlight> == {{Code|p.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu}} == Iterator służy do iterowania po kolei po zsortowanych kluczach po kolei alfabetycznie, którym są przyporządkowane wartości o pewnych tych kluczach w pewnych tablicach, używając do tego celu tablicy, zdefiniowanego iteratora, metatabelki i metafunkcji w niej zdefiniowanej, gdzie: {{Code|funkcja}}, jest funkcją sortującą łańcuchy znakowe. Można ją zdefiniować do obsługi innego iterowania po parametrach nazwanych za pomocą: {{Code|pairs}}, definiując funkcję: {{Code|__next}}, analoga do {{Code|next}}, jako iteratora po kluczach posortowanych, która jest wartością zwracaną przez funkcję w nagłówku. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(tabela,funkcja) ... return function(tablica,klucz) ... end; end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tabela}} | _1 = Tabela, po której iterujemy. | 2 = {{Code|funkcja}} | _2 = Funkcja sortująca. }} Parametry funkcji zwracanej: {{OpisParametrów | 1 = {{Code|tablica}} | _1 = Tabela operowana. | 2 = {{Code|klucz}} | _2 = Klucz, dzięki któremu szukamy następny element. }} Zdefiniujmy metatablicę z metafunkcją: {{Code|__pairs}}, wtedy: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local tabela={["D"]="wartość1",["A"]="wartość2",["F"]="wartość3",["C"]="wartość4",}; local __metatabelka={}; __metatabelka.__pairs=function(t) local funkcja_sortujaca=nil; local __next=parametry_modul.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(t,funkcja_sortujaca); return __next,t,nil; end; setmetatable(tabela,__metatabelka); for name,value in pairs(tabela) do mw.log("Klucz:",klucz,"Wartość:",value); end; </syntaxhighlight> {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> nzza1mfr4baradv2wsv1noe6zho0gt1 555702 555701 2026-09-11T14:57:50Z Persino 2851 /* {{Code|p.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu}} */ 555702 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} ; Iteratory Poniższe operatory możemy wykorzystać w funkcjach: analogicznego do {{Code|ipairs}}, dla iteratora: {{Code|{{sr|#p.IteratorPoNumerowanychElementachTablicy|p=Parametry}}}}, wynikłej z jego funkcji z wartości zwracanej, i analogicznego do {{Code|next}} (iteratora po kluczach) w {{Code|pairs}}, dla iteratora: {{Code|{{sr|#p.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu|p=Parametry}}}}, wynikłe z jego funkcji z wartości zwracanej. == {{Code|p.IteratorPoNumerowanychElementachTablicy}} == Iterator służy do iterowania po kolei liczb w pewnych tablicach, używając do tego celu tej tablicy, zdefiniowanego iteratora. Można ją zdefiniować do obsługi innego iterowania po parametrach numerowanych, analogicznie do {{Code|ipairs}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.IteratorPoNumerowanychElementachTablicy(t) ... return function() ... end; end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|t}} | _1 = Tablica, po której iterujemy po elemenetach numerowanych. }} Przykład działania iteratora jest: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local tabela={1,2,3,4,5,6,7,8,9,10,}; local iter=parametry_modul.IteratorPoNumerowanychElementachTablicy(tablica); for name, value in iter do mw.log("Klucz:",klucz,"Wartość:",value); end; </syntaxhighlight> == {{Code|p.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu}} == Iterator służy do iterowania po kolei po zsortowanych kluczach po kolei alfabetycznie, którym są przyporządkowane dla nich wartości w pewnej tablicy, używając do tego celu tablicy, zdefiniowanego iteratora, metatabelki i metafunkcji w niej zdefiniowanej, gdzie: {{Code|funkcja}}, jest funkcją sortującą łańcuchy znakowe. Można ją zdefiniować do obsługi innego iterowania po parametrach nazwanych za pomocą: {{Code|pairs}}, definiując funkcję: {{Code|__next}}, analoga do: {{Code|next}}, jako iteratora po kluczach posortowanych, która jest wartością zwracaną przez funkcję w nagłówku. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(tabela,funkcja) ... return function(tablica,klucz) ... end; end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tabela}} | _1 = Tabela, po której iterujemy. | 2 = {{Code|funkcja}} | _2 = Funkcja sortująca. }} Parametry funkcji zwracanej: {{OpisParametrów | 1 = {{Code|tablica}} | _1 = Tabela operowana. | 2 = {{Code|klucz}} | _2 = Klucz, dzięki któremu szukamy następny element. }} Zdefiniujmy metatablicę z metafunkcją: {{Code|__pairs}}, wtedy: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local tabela={["D"]="wartość1",["A"]="wartość2",["F"]="wartość3",["C"]="wartość4",}; local __metatabelka={}; __metatabelka.__pairs=function(t) local funkcja_sortujaca=nil; local __next=parametry_modul.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(t,funkcja_sortujaca); return __next,t,nil; end; setmetatable(tabela,__metatabelka); for name,value in pairs(tabela) do mw.log("Klucz:",klucz,"Wartość:",value); end; </syntaxhighlight> {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 1gz9b9oijdowhlopwpdsgvp06hs1wyd 555705 555702 2026-09-11T15:32:46Z Persino 2851 /* {{Code|p.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu}} */ 555705 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} ; Iteratory Poniższe operatory możemy wykorzystać w funkcjach: analogicznego do {{Code|ipairs}}, dla iteratora: {{Code|{{sr|#p.IteratorPoNumerowanychElementachTablicy|p=Parametry}}}}, wynikłej z jego funkcji z wartości zwracanej, i analogicznego do {{Code|next}} (iteratora po kluczach) w {{Code|pairs}}, dla iteratora: {{Code|{{sr|#p.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu|p=Parametry}}}}, wynikłe z jego funkcji z wartości zwracanej. == {{Code|p.IteratorPoNumerowanychElementachTablicy}} == Iterator służy do iterowania po kolei liczb w pewnych tablicach, używając do tego celu tej tablicy, zdefiniowanego iteratora. Można ją zdefiniować do obsługi innego iterowania po parametrach numerowanych, analogicznie do {{Code|ipairs}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.IteratorPoNumerowanychElementachTablicy(t) ... return function() ... end; end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|t}} | _1 = Tablica, po której iterujemy po elemenetach numerowanych. }} Przykład działania iteratora jest: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local tabela={1,2,3,4,5,6,7,8,9,10,}; local iter=parametry_modul.IteratorPoNumerowanychElementachTablicy(tablica); for name, value in iter do mw.log("Klucz:",klucz,"Wartość:",value); end; </syntaxhighlight> == {{Code|p.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu}} == Iterator służy do iterowania po kolei po zsortowanych kluczach po kolei alfabetycznie, którym są przyporządkowane dla nich wartości w pewnej tablicy, używając do tego celu tablicy, zdefiniowanego iteratora, metatabelki i metafunkcji w niej zdefiniowanej, gdzie: {{Code|funkcja}}, jest funkcją sortującą łańcuchy znakowe. Można ją zdefiniować do obsługi innego iterowania po parametrach nazwanych za pomocą: {{Code|pairs}}, definiując funkcję: {{Code|__next}}, analoga do: {{Code|next}}, jako iteratora po kluczach posortowanych, która jest wartością zwracaną przez funkcję w nagłówku. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(tabela,czy_number,funkcja) ... return function(tablica,klucz) ... end; end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tabela}} | _1 = Tabela, po której iterujemy. | 2 = {{Code|czy_number}} | _2 = Czy ma sortować i iterować, tylko po liczbach, domyślnie rosnąco, jeżeli nie podano trzeciego parametru funkcji. | 3 = {{Code|funkcja}} | _2 = Funkcja sortująca. }} Parametry funkcji zwracanej: {{OpisParametrów | 1 = {{Code|tablica}} | _1 = Tabela operowana. | 2 = {{Code|klucz}} | _2 = Klucz, dzięki któremu szukamy następny element. }} Zdefiniujmy metatablicę z metafunkcją: {{Code|__pairs}}, wtedy: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local tabela={["D"]="wartość1",["A"]="wartość2",["F"]="wartość3",["C"]="wartość4",}; local __metatabelka={}; __metatabelka.__pairs=function(t) local funkcja_sortujaca=nil; local __next=parametry_modul.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(t,funkcja_sortujaca); return __next,t,nil; end; setmetatable(tabela,__metatabelka); for name,value in pairs(tabela) do mw.log("Klucz:",klucz,"Wartość:",value); end; </syntaxhighlight> {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 37gpi4egpeb4zcxo68ln1rnzqv0huwx 555706 555705 2026-09-11T15:33:04Z Persino 2851 /* {{Code|p.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu}} */ 555706 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} ; Iteratory Poniższe operatory możemy wykorzystać w funkcjach: analogicznego do {{Code|ipairs}}, dla iteratora: {{Code|{{sr|#p.IteratorPoNumerowanychElementachTablicy|p=Parametry}}}}, wynikłej z jego funkcji z wartości zwracanej, i analogicznego do {{Code|next}} (iteratora po kluczach) w {{Code|pairs}}, dla iteratora: {{Code|{{sr|#p.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu|p=Parametry}}}}, wynikłe z jego funkcji z wartości zwracanej. == {{Code|p.IteratorPoNumerowanychElementachTablicy}} == Iterator służy do iterowania po kolei liczb w pewnych tablicach, używając do tego celu tej tablicy, zdefiniowanego iteratora. Można ją zdefiniować do obsługi innego iterowania po parametrach numerowanych, analogicznie do {{Code|ipairs}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.IteratorPoNumerowanychElementachTablicy(t) ... return function() ... end; end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|t}} | _1 = Tablica, po której iterujemy po elemenetach numerowanych. }} Przykład działania iteratora jest: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local tabela={1,2,3,4,5,6,7,8,9,10,}; local iter=parametry_modul.IteratorPoNumerowanychElementachTablicy(tablica); for name, value in iter do mw.log("Klucz:",klucz,"Wartość:",value); end; </syntaxhighlight> == {{Code|p.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu}} == Iterator służy do iterowania po kolei po zsortowanych kluczach po kolei alfabetycznie, którym są przyporządkowane dla nich wartości w pewnej tablicy, używając do tego celu tablicy, zdefiniowanego iteratora, metatabelki i metafunkcji w niej zdefiniowanej, gdzie: {{Code|funkcja}}, jest funkcją sortującą łańcuchy znakowe. Można ją zdefiniować do obsługi innego iterowania po parametrach nazwanych za pomocą: {{Code|pairs}}, definiując funkcję: {{Code|__next}}, analoga do: {{Code|next}}, jako iteratora po kluczach posortowanych, która jest wartością zwracaną przez funkcję w nagłówku. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(tabela,czy_number,funkcja) ... return function(tablica,klucz) ... end; end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tabela}} | _1 = Tabela, po której iterujemy. | 2 = {{Code|czy_number}} | _2 = Czy ma sortować i iterować, tylko po liczbach, domyślnie rosnąco, jeżeli nie podano trzeciego parametru funkcji. | 3 = {{Code|funkcja}} | _3 = Funkcja sortująca. }} Parametry funkcji zwracanej: {{OpisParametrów | 1 = {{Code|tablica}} | _1 = Tabela operowana. | 2 = {{Code|klucz}} | _2 = Klucz, dzięki któremu szukamy następny element. }} Zdefiniujmy metatablicę z metafunkcją: {{Code|__pairs}}, wtedy: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local tabela={["D"]="wartość1",["A"]="wartość2",["F"]="wartość3",["C"]="wartość4",}; local __metatabelka={}; __metatabelka.__pairs=function(t) local funkcja_sortujaca=nil; local __next=parametry_modul.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(t,funkcja_sortujaca); return __next,t,nil; end; setmetatable(tabela,__metatabelka); for name,value in pairs(tabela) do mw.log("Klucz:",klucz,"Wartość:",value); end; </syntaxhighlight> {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> q9k9dk8cq2543w32vbnc2upwispb6qx 555707 555706 2026-09-11T15:36:28Z Persino 2851 /* {{Code|p.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu}} */ 555707 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} ; Iteratory Poniższe operatory możemy wykorzystać w funkcjach: analogicznego do {{Code|ipairs}}, dla iteratora: {{Code|{{sr|#p.IteratorPoNumerowanychElementachTablicy|p=Parametry}}}}, wynikłej z jego funkcji z wartości zwracanej, i analogicznego do {{Code|next}} (iteratora po kluczach) w {{Code|pairs}}, dla iteratora: {{Code|{{sr|#p.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu|p=Parametry}}}}, wynikłe z jego funkcji z wartości zwracanej. == {{Code|p.IteratorPoNumerowanychElementachTablicy}} == Iterator służy do iterowania po kolei liczb w pewnych tablicach, używając do tego celu tej tablicy, zdefiniowanego iteratora. Można ją zdefiniować do obsługi innego iterowania po parametrach numerowanych, analogicznie do {{Code|ipairs}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.IteratorPoNumerowanychElementachTablicy(t) ... return function() ... end; end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|t}} | _1 = Tablica, po której iterujemy po elemenetach numerowanych. }} Przykład działania iteratora jest: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local tabela={1,2,3,4,5,6,7,8,9,10,}; local iter=parametry_modul.IteratorPoNumerowanychElementachTablicy(tablica); for name, value in iter do mw.log("Klucz:",klucz,"Wartość:",value); end; </syntaxhighlight> == {{Code|p.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu}} == Iterator służy do iterowania po kolei po zsortowanych kluczach, domyślnie dowolnych, ale z możliwością sortowania tylko po liczbach, po kolei alfabetycznie, którym są przyporządkowane dla nich wartości w pewnej tablicy, używając do tego celu tablicy, zdefiniowanego iteratora, metatabelki i metafunkcji w niej zdefiniowanej, gdzie: {{Code|funkcja}}, jest funkcją sortującą łańcuchy znakowe, i nie tylko. Można ją zdefiniować do obsługi innego iterowania po parametrach nazwanych za pomocą: {{Code|pairs}}, definiując funkcję: {{Code|__next}}, analoga do: {{Code|next}}, jako iteratora po kluczach posortowanych, która jest wartością zwracaną przez funkcję w nagłówku. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(tabela,czy_number,funkcja) ... return function(tablica,klucz) ... end; end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tabela}} | _1 = Tabela, po której iterujemy. | 2 = {{Code|czy_number}} | _2 = Czy ma sortować i iterować, tylko po liczbach, domyślnie rosnąco, jeżeli nie podano trzeciego parametru funkcji. | 3 = {{Code|funkcja}} | _3 = Funkcja sortująca. }} Parametry funkcji zwracanej: {{OpisParametrów | 1 = {{Code|tablica}} | _1 = Tabela operowana. | 2 = {{Code|klucz}} | _2 = Klucz, dzięki któremu szukamy następny element. }} Zdefiniujmy metatablicę z metafunkcją: {{Code|__pairs}}, wtedy: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local tabela={["D"]="wartość1",["A"]="wartość2",["F"]="wartość3",["C"]="wartość4",}; local __metatabelka={}; __metatabelka.__pairs=function(t) local funkcja_sortujaca=nil; local __next=parametry_modul.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(t,funkcja_sortujaca); return __next,t,nil; end; setmetatable(tabela,__metatabelka); for name,value in pairs(tabela) do mw.log("Klucz:",klucz,"Wartość:",value); end; </syntaxhighlight> {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 3c8rbf308wy7kdeu1jn92dibtsmyq8v 555708 555707 2026-09-11T15:49:14Z Persino 2851 /* {{Code|p.IteratorPoNumerowanychElementachTablicy}} */ 555708 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} ; Iteratory Poniższe operatory możemy wykorzystać w funkcjach: analogicznego do {{Code|ipairs}}, dla iteratora: {{Code|{{sr|#p.IteratorPoNumerowanychElementachTablicy|p=Parametry}}}}, wynikłej z jego funkcji z wartości zwracanej, i analogicznego do {{Code|next}} (iteratora po kluczach) w {{Code|pairs}}, dla iteratora: {{Code|{{sr|#p.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu|p=Parametry}}}}, wynikłe z jego funkcji z wartości zwracanej. == {{Code|p.IteratorPoNumerowanychElementachTablicy}} == Iterator służy do iterowania po kolei po liczbach w pewnych tablicach, używając do tego celu niej, zdefiniowanego iteratora. Można ją zdefiniować do obsługi innego iterowania po parametrach numerowanych, analogicznie do {{Code|ipairs}}, tylko z tą różnicą, że on zwraca tylko jej wartości, bez kluczy, a nie po kolei klucz i jego wartość, jak to robi jego wbudowana wersja. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.IteratorPoNumerowanychElementachTablicy(t) ... return function() ... end; end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|t}} | _1 = Tablica, po której iterujemy po elemenetach numerowanych. }} Przykład działania iteratora jest: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local tabela={1,2,3,4,5,6,7,8,9,10,}; local iter=parametry_modul.IteratorPoNumerowanychElementachTablicy(tablica); for name, value in iter do mw.log("Klucz:",klucz,"Wartość:",value); end; </syntaxhighlight> == {{Code|p.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu}} == Iterator służy do iterowania po kolei po zsortowanych kluczach, domyślnie dowolnych, ale z możliwością sortowania tylko po liczbach, po kolei alfabetycznie, którym są przyporządkowane dla nich wartości w pewnej tablicy, używając do tego celu tablicy, zdefiniowanego iteratora, metatabelki i metafunkcji w niej zdefiniowanej, gdzie: {{Code|funkcja}}, jest funkcją sortującą łańcuchy znakowe, i nie tylko. Można ją zdefiniować do obsługi innego iterowania po parametrach nazwanych za pomocą: {{Code|pairs}}, definiując funkcję: {{Code|__next}}, analoga do: {{Code|next}}, jako iteratora po kluczach posortowanych, która jest wartością zwracaną przez funkcję w nagłówku. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(tabela,czy_number,funkcja) ... return function(tablica,klucz) ... end; end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|tabela}} | _1 = Tabela, po której iterujemy. | 2 = {{Code|czy_number}} | _2 = Czy ma sortować i iterować, tylko po liczbach, domyślnie rosnąco, jeżeli nie podano trzeciego parametru funkcji. | 3 = {{Code|funkcja}} | _3 = Funkcja sortująca. }} Parametry funkcji zwracanej: {{OpisParametrów | 1 = {{Code|tablica}} | _1 = Tabela operowana. | 2 = {{Code|klucz}} | _2 = Klucz, dzięki któremu szukamy następny element. }} Zdefiniujmy metatablicę z metafunkcją: {{Code|__pairs}}, wtedy: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local tabela={["D"]="wartość1",["A"]="wartość2",["F"]="wartość3",["C"]="wartość4",}; local __metatabelka={}; __metatabelka.__pairs=function(t) local funkcja_sortujaca=nil; local __next=parametry_modul.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(t,funkcja_sortujaca); return __next,t,nil; end; setmetatable(tabela,__metatabelka); for name,value in pairs(tabela) do mw.log("Klucz:",klucz,"Wartość:",value); end; </syntaxhighlight> {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 2dj04t0ns60w46abi1zjy162ghdiepg Wikibooks:Moduły/Parametry/Tom XX 4 63987 555787 555652 2026-09-12T01:44:25Z Persino 2851 /* p.Max */ 555787 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} Są tutaj przedstawione funkcje wartości minimalnej i maksymalnej. == {{Code|p.Max}} == Funkcja liczy maksimum dwóch podanych wartości, podaną w jednostkach bezwymiarowych. === Odpowiednik szablonowy === Dla wersji ramkowej uruchomioną w wikikodzie, np. szablonu: * {{Code|{{m|Parametry|Max|5|3}}}} → {{Tt|{{#invoke:Parametry|Max|5|3}}}} Dla wersji szablonowej, której odpowiednikami szablonowymi są: {{s|Max}} lub {{s|Maksimum}}, który można wykorzystać jej definicji wersję ramkową, ale niekoniecznie, a tutaj wykorzystuje parser {{Code|{{s|#expr:coś}}}}. * {{Code|{{s|Max|5|3}}}} → {{Tt|{{Max|5|3}}}} Ta wersja szablonowa wykorzystuje funkcję: {{s|W pikselach}}, do zamiany tej samej liczby, ale też w różnych jednostkach bezwzględnych, z mianem na końcu, w liczbę pikseli podaną bez wymiarowo. Wywołanie: {{Code|{{m|Parametry|Max|5|3}}}}, zajmuje mniej zasobów niż: {{Code|{{s|Max}}}}, bo to ostatnie wykorzystuje do liczenia pracochłonną funkcję: {{m|Plik|W pikselach}}, a to pierwsze już nie, liczy maksimum bezpośrednio. === Funkcja biblioteczna === Funkcja do wywołania w ramce dla dwóch parametrów licząca ich maksimum. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.Max(frame)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu. }} W ramce można go wywołać bezpośrednio, dla przykładu dwóch naturalnych parametrów, ale one mogą być też rzeczywiste: <syntaxhighlight lang="lua"> {{#invoke:Parametry|Max|5|3}} </syntaxhighlight> Wynikiem tego jest maksimum z tych liczb równą: {{Code|5}}. Tę funkcję można wykorzystać bez pośrednio w programie {{lpg|Lua}} do liczenia maksimów dwóch liczb. Ten kod piszemy: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local maksimum=parametry_modul.Max(5,3); </syntaxhighlight> Wartością z dwóch liczb jest wartość maksymalna: {{Code|5}}. Widzimy, że w parametrach funkcji nie musimy wykorzystywać żadnej tablicy ramki, bo ona wykorzystuje funkcję: {{Code|{{sr|#p.PobierzElementNumerowanyZFrameLubTablicy|p=Parametry}}}}, do liczenia parametrów tego obiektu, by uzyskać argumenty podane w parametrach tej funkcji, czy to w wersji wywołaną w ramce, czy jako w zwykłej funkcji. == {{Code|p.Min}} == Funkcja liczy minimum dwóch podanych liczb, podaną w jednostkach bezwymiarowych. === Odpowiednik szablonowy === Dla wersji ramkowej uruchomioną w wikikodzie, np. szablonu: * {{Code|{{m|Parametry|Min|5|3}}}} → {{Tt|{{#invoke:Parametry|Min|5|3}}}} Dla wersji szablonowej, której odpowiednikami szablonowymi są: {{s|Min}} lub {{s|Minimum}}, który można wykorzystać jej definicji wersję ramkową, ale niekoniecznie, a tutaj wykorzystuje parser {{Code|{{s|#expr:coś}}}}. * {{Code|{{s|Min|5|3}}}} → {{Tt|{{Min|5|3}}}} Ta wersja szablonowa wykorzystuje funkcję: {{s|W pikselach}}, do zamiany tej samej liczby, ale też w różnych jednostkach bezwzględnych, z mianem na końcu, w liczbę pikseli podaną bez wymiarowo. Wywołanie: {{Code|{{m|Parametry|Min|5|3}}}}, zajmuje mniej zasobów niż: {{Code|{{s|Min}}}}, bo to ostatnie wykorzystuje do liczenia pracochłonną funkcję: {{m|Plik|W pikselach}}, a to pierwsze już nie, liczy minimum bezpośrednio. === Funkcja biblioteczna === Funkcja do wywołania w ramce dla dwóch parametrów licząca ich minimum. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.Min(frame)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu. }} W ramce można go wywołać bezpośrednio, dla przykładu dwóch naturalnych parametrów, ale one mogą być też rzeczywiste: <syntaxhighlight lang="lua"> {{#invoke:Parametry|Min|5|3}} </syntaxhighlight> Wynikiem tego jest minimum równą: {{Code|3}}. Tę funkcję można wykorzystać bez pośrednio w programie {{lpg|Lua}} do liczenia minimów dwóch liczb. Ten kod piszemy: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local minimum=parametry_modul.Min(5,3); </syntaxhighlight> Wartością minimalną z dwóch liczb jest: {{Code|3}}. Widzimy, że w parametrach funkcji nie musimy wykorzystywać żadnej tablicy ramki, bo ona wykorzystuje funkcję: {{Code|{{sr|#p.PobierzElementNumerowanyZFrameLubTablicy(frame)|p=Parametry}}}}, do liczenia parametrów tego obiektu, by uzyskać argumenty podane w parametrach tej funkcji, czy to w wersji wywołaną w ramce, czy jako w zwykłej funkcji. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 9sxxi61v48f8lo4cqq89qqqbuyd1z1g 555788 555787 2026-09-12T01:45:06Z Persino 2851 /* p.Min */ 555788 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} Są tutaj przedstawione funkcje wartości minimalnej i maksymalnej. == {{Code|p.Max}} == Funkcja liczy maksimum dwóch podanych wartości, podaną w jednostkach bezwymiarowych. === Odpowiednik szablonowy === Dla wersji ramkowej uruchomioną w wikikodzie, np. szablonu: * {{Code|{{m|Parametry|Max|5|3}}}} → {{Tt|{{#invoke:Parametry|Max|5|3}}}} Dla wersji szablonowej, której odpowiednikami szablonowymi są: {{s|Max}} lub {{s|Maksimum}}, który można wykorzystać jej definicji wersję ramkową, ale niekoniecznie, a tutaj wykorzystuje parser {{Code|{{s|#expr:coś}}}}. * {{Code|{{s|Max|5|3}}}} → {{Tt|{{Max|5|3}}}} Ta wersja szablonowa wykorzystuje funkcję: {{s|W pikselach}}, do zamiany tej samej liczby, ale też w różnych jednostkach bezwzględnych, z mianem na końcu, w liczbę pikseli podaną bez wymiarowo. Wywołanie: {{Code|{{m|Parametry|Max|5|3}}}}, zajmuje mniej zasobów niż: {{Code|{{s|Max}}}}, bo to ostatnie wykorzystuje do liczenia pracochłonną funkcję: {{m|Plik|W pikselach}}, a to pierwsze już nie, liczy maksimum bezpośrednio. === Funkcja biblioteczna === Funkcja do wywołania w ramce dla dwóch parametrów licząca ich maksimum. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.Max(frame)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu. }} W ramce można go wywołać bezpośrednio, dla przykładu dwóch naturalnych parametrów, ale one mogą być też rzeczywiste: <syntaxhighlight lang="lua"> {{#invoke:Parametry|Max|5|3}} </syntaxhighlight> Wynikiem tego jest maksimum z tych liczb równą: {{Code|5}}. Tę funkcję można wykorzystać bez pośrednio w programie {{lpg|Lua}} do liczenia maksimów dwóch liczb. Ten kod piszemy: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local maksimum=parametry_modul.Max(5,3); </syntaxhighlight> Wartością z dwóch liczb jest wartość maksymalna: {{Code|5}}. Widzimy, że w parametrach funkcji nie musimy wykorzystywać żadnej tablicy ramki, bo ona wykorzystuje funkcję: {{Code|{{sr|#p.PobierzElementNumerowanyZFrameLubTablicy|p=Parametry}}}}, do liczenia parametrów tego obiektu, by uzyskać argumenty podane w parametrach tej funkcji, czy to w wersji wywołaną w ramce, czy jako w zwykłej funkcji. == {{Code|p.Min}} == Funkcja liczy minimum dwóch podanych liczb, podaną w jednostkach bezwymiarowych. === Odpowiednik szablonowy === Dla wersji ramkowej uruchomioną w wikikodzie, np. szablonu: * {{Code|{{m|Parametry|Min|5|3}}}} → {{Tt|{{#invoke:Parametry|Min|5|3}}}} Dla wersji szablonowej, której odpowiednikami szablonowymi są: {{s|Min}} lub {{s|Minimum}}, który można wykorzystać jej definicji wersję ramkową, ale niekoniecznie, a tutaj wykorzystuje parser {{Code|{{s|#expr:coś}}}}. * {{Code|{{s|Min|5|3}}}} → {{Tt|{{Min|5|3}}}} Ta wersja szablonowa wykorzystuje funkcję: {{s|W pikselach}}, do zamiany tej samej liczby, ale też w różnych jednostkach bezwzględnych, z mianem na końcu, w liczbę pikseli podaną bez wymiarowo. Wywołanie: {{Code|{{m|Parametry|Min|5|3}}}}, zajmuje mniej zasobów niż: {{Code|{{s|Min}}}}, bo to ostatnie wykorzystuje do liczenia pracochłonną funkcję: {{m|Plik|W pikselach}}, a to pierwsze już nie, liczy minimum bezpośrednio. === Funkcja biblioteczna === Funkcja do wywołania w ramce dla dwóch parametrów licząca ich minimum. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.Min(frame)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu. }} W ramce można go wywołać bezpośrednio, dla przykładu dwóch naturalnych parametrów, ale one mogą być też rzeczywiste: <syntaxhighlight lang="lua"> {{#invoke:Parametry|Min|5|3}} </syntaxhighlight> Wynikiem tego jest minimum równą: {{Code|3}}. Tę funkcję można wykorzystać bez pośrednio w programie {{lpg|Lua}} do liczenia minimów dwóch liczb. Ten kod piszemy: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local minimum=parametry_modul.Min(5,3); </syntaxhighlight> Wartością minimalną z dwóch liczb jest: {{Code|3}}. Widzimy, że w parametrach funkcji nie musimy wykorzystywać żadnej tablicy ramki, bo ona wykorzystuje funkcję: {{Code|{{sr|#p.PobierzElementNumerowanyZFrameLubTablicy|p=Parametry}}}}, do liczenia parametrów tego obiektu, by uzyskać argumenty podane w parametrach tej funkcji, czy to w wersji wywołaną w ramce, czy jako w zwykłej funkcji. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 3l5s78xj9a4au40a7320n8ted5vvt4s 555789 555788 2026-09-12T01:46:47Z Persino 2851 /* Funkcja biblioteczna */ 555789 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} Są tutaj przedstawione funkcje wartości minimalnej i maksymalnej. == {{Code|p.Max}} == Funkcja liczy maksimum dwóch podanych wartości, podaną w jednostkach bezwymiarowych. === Odpowiednik szablonowy === Dla wersji ramkowej uruchomioną w wikikodzie, np. szablonu: * {{Code|{{m|Parametry|Max|5|3}}}} → {{Tt|{{#invoke:Parametry|Max|5|3}}}} Dla wersji szablonowej, której odpowiednikami szablonowymi są: {{s|Max}} lub {{s|Maksimum}}, który można wykorzystać jej definicji wersję ramkową, ale niekoniecznie, a tutaj wykorzystuje parser {{Code|{{s|#expr:coś}}}}. * {{Code|{{s|Max|5|3}}}} → {{Tt|{{Max|5|3}}}} Ta wersja szablonowa wykorzystuje funkcję: {{s|W pikselach}}, do zamiany tej samej liczby, ale też w różnych jednostkach bezwzględnych, z mianem na końcu, w liczbę pikseli podaną bez wymiarowo. Wywołanie: {{Code|{{m|Parametry|Max|5|3}}}}, zajmuje mniej zasobów niż: {{Code|{{s|Max}}}}, bo to ostatnie wykorzystuje do liczenia pracochłonną funkcję: {{m|Plik|W pikselach}}, a to pierwsze już nie, liczy maksimum bezpośrednio. === Funkcja biblioteczna === Funkcja do wywołania w ramce dla dwóch parametrów licząca ich maksimum. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.Max(frame)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu. }} W ramce można go wywołać bezpośrednio, dla przykładu dwóch naturalnych parametrów, ale one mogą być też rzeczywiste: <syntaxhighlight lang="lua"> {{#invoke:Parametry|Max|5|3}} </syntaxhighlight> Wynikiem tego jest maksimum z tych liczb równą: {{Code|5}}. Tę funkcję można wykorzystać bezpośrednio w programie {{lpg|Lua}} do liczenia maksimów dwóch liczb. Ten kod piszemy: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local maksimum=parametry_modul.Max(5,3); </syntaxhighlight> Wartością z dwóch liczb jest wartość maksymalna: {{Code|5}}. Widzimy, że w parametrach funkcji nie musimy wykorzystywać żadnej tablicy ramki, bo ona wykorzystuje funkcję: {{Code|{{sr|#p.PobierzElementNumerowanyZFrameLubTablicy|p=Parametry}}}}, do liczenia parametrów tego obiektu, by uzyskać argumenty podane w parametrach tej funkcji, czy to w wersji wywołaną w ramce, czy jako w zwykłej funkcji. == {{Code|p.Min}} == Funkcja liczy minimum dwóch podanych liczb, podaną w jednostkach bezwymiarowych. === Odpowiednik szablonowy === Dla wersji ramkowej uruchomioną w wikikodzie, np. szablonu: * {{Code|{{m|Parametry|Min|5|3}}}} → {{Tt|{{#invoke:Parametry|Min|5|3}}}} Dla wersji szablonowej, której odpowiednikami szablonowymi są: {{s|Min}} lub {{s|Minimum}}, który można wykorzystać jej definicji wersję ramkową, ale niekoniecznie, a tutaj wykorzystuje parser {{Code|{{s|#expr:coś}}}}. * {{Code|{{s|Min|5|3}}}} → {{Tt|{{Min|5|3}}}} Ta wersja szablonowa wykorzystuje funkcję: {{s|W pikselach}}, do zamiany tej samej liczby, ale też w różnych jednostkach bezwzględnych, z mianem na końcu, w liczbę pikseli podaną bez wymiarowo. Wywołanie: {{Code|{{m|Parametry|Min|5|3}}}}, zajmuje mniej zasobów niż: {{Code|{{s|Min}}}}, bo to ostatnie wykorzystuje do liczenia pracochłonną funkcję: {{m|Plik|W pikselach}}, a to pierwsze już nie, liczy minimum bezpośrednio. === Funkcja biblioteczna === Funkcja do wywołania w ramce dla dwóch parametrów licząca ich minimum. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.Min(frame)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu. }} W ramce można go wywołać bezpośrednio, dla przykładu dwóch naturalnych parametrów, ale one mogą być też rzeczywiste: <syntaxhighlight lang="lua"> {{#invoke:Parametry|Min|5|3}} </syntaxhighlight> Wynikiem tego jest minimum równą: {{Code|3}}. Tę funkcję można wykorzystać bez pośrednio w programie {{lpg|Lua}} do liczenia minimów dwóch liczb. Ten kod piszemy: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local minimum=parametry_modul.Min(5,3); </syntaxhighlight> Wartością minimalną z dwóch liczb jest: {{Code|3}}. Widzimy, że w parametrach funkcji nie musimy wykorzystywać żadnej tablicy ramki, bo ona wykorzystuje funkcję: {{Code|{{sr|#p.PobierzElementNumerowanyZFrameLubTablicy|p=Parametry}}}}, do liczenia parametrów tego obiektu, by uzyskać argumenty podane w parametrach tej funkcji, czy to w wersji wywołaną w ramce, czy jako w zwykłej funkcji. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> cvinm2umsttr0vy9fewjozwpvjx5ab6 555790 555789 2026-09-12T01:47:27Z Persino 2851 /* Funkcja biblioteczna */ 555790 wikitext text/x-wiki <noinclude>{{ProstaStronaStart | nagłówek = {{Podrozdział|{{ld2|Parametry}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}} | stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}} }}</noinclude> {{Spis treści}} Są tutaj przedstawione funkcje wartości minimalnej i maksymalnej. == {{Code|p.Max}} == Funkcja liczy maksimum dwóch podanych wartości, podaną w jednostkach bezwymiarowych. === Odpowiednik szablonowy === Dla wersji ramkowej uruchomioną w wikikodzie, np. szablonu: * {{Code|{{m|Parametry|Max|5|3}}}} → {{Tt|{{#invoke:Parametry|Max|5|3}}}} Dla wersji szablonowej, której odpowiednikami szablonowymi są: {{s|Max}} lub {{s|Maksimum}}, który można wykorzystać jej definicji wersję ramkową, ale niekoniecznie, a tutaj wykorzystuje parser {{Code|{{s|#expr:coś}}}}. * {{Code|{{s|Max|5|3}}}} → {{Tt|{{Max|5|3}}}} Ta wersja szablonowa wykorzystuje funkcję: {{s|W pikselach}}, do zamiany tej samej liczby, ale też w różnych jednostkach bezwzględnych, z mianem na końcu, w liczbę pikseli podaną bez wymiarowo. Wywołanie: {{Code|{{m|Parametry|Max|5|3}}}}, zajmuje mniej zasobów niż: {{Code|{{s|Max}}}}, bo to ostatnie wykorzystuje do liczenia pracochłonną funkcję: {{m|Plik|W pikselach}}, a to pierwsze już nie, liczy maksimum bezpośrednio. === Funkcja biblioteczna === Funkcja do wywołania w ramce dla dwóch parametrów licząca ich maksimum. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.Max(frame)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu. }} W ramce można go wywołać bezpośrednio, dla przykładu dwóch naturalnych parametrów, ale one mogą być też rzeczywiste: <syntaxhighlight lang="lua"> {{#invoke:Parametry|Max|5|3}} </syntaxhighlight> Wynikiem tego jest maksimum z tych liczb równą: {{Code|5}}. Tę funkcję można wykorzystać bezpośrednio w programie {{lpg|Lua}} do liczenia maksimów dwóch liczb. Ten kod piszemy: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local maksimum=parametry_modul.Max(5,3); </syntaxhighlight> Wartością z dwóch liczb jest wartość maksymalna: {{Code|5}}. Widzimy, że w parametrach funkcji nie musimy wykorzystywać żadnej tablicy ramki, bo ona wykorzystuje funkcję: {{Code|{{sr|#p.PobierzElementNumerowanyZFrameLubTablicy|p=Parametry}}}}, do liczenia parametrów tego obiektu, by uzyskać argumenty podane w parametrach tej funkcji, czy to w wersji wywołaną w ramce, czy jako w zwykłej funkcji. == {{Code|p.Min}} == Funkcja liczy minimum dwóch podanych liczb, podaną w jednostkach bezwymiarowych. === Odpowiednik szablonowy === Dla wersji ramkowej uruchomioną w wikikodzie, np. szablonu: * {{Code|{{m|Parametry|Min|5|3}}}} → {{Tt|{{#invoke:Parametry|Min|5|3}}}} Dla wersji szablonowej, której odpowiednikami szablonowymi są: {{s|Min}} lub {{s|Minimum}}, który można wykorzystać jej definicji wersję ramkową, ale niekoniecznie, a tutaj wykorzystuje parser {{Code|{{s|#expr:coś}}}}. * {{Code|{{s|Min|5|3}}}} → {{Tt|{{Min|5|3}}}} Ta wersja szablonowa wykorzystuje funkcję: {{s|W pikselach}}, do zamiany tej samej liczby, ale też w różnych jednostkach bezwzględnych, z mianem na końcu, w liczbę pikseli podaną bez wymiarowo. Wywołanie: {{Code|{{m|Parametry|Min|5|3}}}}, zajmuje mniej zasobów niż: {{Code|{{s|Min}}}}, bo to ostatnie wykorzystuje do liczenia pracochłonną funkcję: {{m|Plik|W pikselach}}, a to pierwsze już nie, liczy minimum bezpośrednio. === Funkcja biblioteczna === Funkcja do wywołania w ramce dla dwóch parametrów licząca ich minimum. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.Min(frame)...end; </syntaxhighlight> Parametry funkcji: {{OpisParametrów | 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu. }} W ramce można go wywołać bezpośrednio, dla przykładu dwóch naturalnych parametrów, ale one mogą być też rzeczywiste: <syntaxhighlight lang="lua"> {{#invoke:Parametry|Min|5|3}} </syntaxhighlight> Wynikiem tego jest minimum równą: {{Code|3}}. Tę funkcję można wykorzystać bezpośrednio w programie {{lpg|Lua}} do liczenia minimów dwóch liczb. Ten kod piszemy: <syntaxhighlight lang="lua"> local parametry_modul=require("Module:Parametry"); local minimum=parametry_modul.Min(5,3); </syntaxhighlight> Wartością minimalną z dwóch liczb jest: {{Code|3}}. Widzimy, że w parametrach funkcji nie musimy wykorzystywać żadnej tablicy ramki, bo ona wykorzystuje funkcję: {{Code|{{sr|#p.PobierzElementNumerowanyZFrameLubTablicy|p=Parametry}}}}, do liczenia parametrów tego obiektu, by uzyskać argumenty podane w parametrach tej funkcji, czy to w wersji wywołaną w ramce, czy jako w zwykłej funkcji. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> d5fh6h16mk2aiekyu85ur4y83odjgrc Moduł:ŹródłoLua 828 64049 555704 553944 2026-09-11T15:23:59Z Persino 2851 555704 Scribunto text/plain require("strict"); local p={}; function p.PowtarzaneElementy(tabela_elementy_tabelowe,element,value) local tab_ile=p.JakiElement(tabela_elementy_tabelowe,element,value); local str_element=""; if(not tab_ile)then str_element=element..(#(tabela_elementy_tabelowe[element])+1).."#"; table.insert(tabela_elementy_tabelowe[element],{value,str_element,}); end; str_element=tab_ile or (str_element..tostring(value)) return str_element,tab_ile; end; function p.NameValue(value,tabela_elementy_tabelowe,funkcja,funkcja2) local parametry_modul=require("Module:Parametry"); if(parametry_modul.TypeTable(value))then local str_funkcja,tab_ile=p.PowtarzaneElementy(tabela_elementy_tabelowe,"tabela",value); if(not tab_ile)then str_funkcja=str_funkcja..p.Table(value,tabela_elementy_tabelowe); end; str_funkcja=funkcja and funkcja(str_funkcja,"table") or str_funkcja; return str_funkcja; elseif(parametry_modul.TypeFunction(value))then local str_funkcja=p.PowtarzaneElementy(tabela_elementy_tabelowe,"funkcja",value); str_funkcja=funkcja and funkcja(str_funkcja,"function") or str_funkcja; return str_funkcja; elseif(parametry_modul.TypeString(value))then local czy_dobrze=funkcja2 and funkcja2(value,"string") or nil; if(not czy_dobrze)then value=p.String(value); value=funkcja and funkcja(value,"string") or value; end; return value; else local value=tostring(value); value=funkcja and funkcja(value,type(value)) or value; return value; end; end; function p.Value(value,tabela_elementy_tabelowe) return p.NameValue(value,tabela_elementy_tabelowe, function(value) return nil; end, function(value) return nil; end ); end; function p.Name(name,tabela_elementy_tabelowe) return p.NameValue(name,tabela_elementy_tabelowe, function(name) return "["..name.."]"; end, function(name) local czy_dobrze=string.match(name,"^[%a_][%w_]*$"); return czy_dobrze; end ); end; function p.String(value,czy_w_cudzyslowy) value=mw.ustring.gsub(value,"\\","\\\\"); value=mw.ustring.gsub(value,"\"","\\\""); local tab={ {"\n","\\n",}, {"\t","\\t",}, {"\r","\\r",}, {"\b","\\b",}, {"\v","\\v",}, {"\f","\\f",}, {"\a","\\a",}, {"\0","\\0",}, }; for _,tab_element in ipairs(tab)do value=mw.ustring.gsub(value,tab_element[1],tab_element[2]); end; if(not czy_w_cudzyslowy)then value="\""..value.."\"";end; return value; end; function p.JakiElement(tabela_elementy_tabelowe,element,value) local name_tab=nil; for a,b in ipairs(tabela_elementy_tabelowe[element])do if(b[1]==value)then name_tab=b[2]; break; end; end; return name_tab; end; function p.Iter(tabelka) local parametry_modul=require("Module:Parametry"); local __next=parametry_modul.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(tabelka,false, function(a,b) if((parametry_modul.TypeNumber(a))and(parametry_modul.TypeNumber(b)))then return (a<b); elseif((parametry_modul.TypeString(a))and(parametry_modul.TypeString(b)))then return (a<b); elseif((parametry_modul.TypeBoolean(a))and(parametry_modul.TypeBoolean(b)))then local a=a and 1 or 0;local b=b and 1 or 0; return (a<b); elseif((parametry_modul.TypeNumber(a))and(parametry_modul.TypeString(b)))then return true; elseif((parametry_modul.TypeBoolean(a))and(parametry_modul.TypeString(b)))then return true; elseif((parametry_modul.TypeBoolean(a))and(parametry_modul.TypeNumber(b)))then return true; elseif((parametry_modul.TypeNumber(b))and(parametry_modul.TypeString(a)))then return false; elseif((parametry_modul.TypeBoolean(b))and(parametry_modul.TypeString(a)))then return false; elseif((parametry_modul.TypeBoolean(b))and(parametry_modul.TypeNumber(a)))then return false; end; end ); return __next,tabelka,nil; end; function p.Pairs(tabelka) local __metatable=getmetatable(tabelka); if(__metatable)then return pairs(tabelka); else return p.Iter(tabelka); end; end; function p.Table(tabelka,tabela_elementy_tabelowe) local parametry_modul=require("Module:Parametry"); local str="\n{\n"; local pokolei=0; local function WyswietlanieTable(tabelka,czy_liczba) local pokolei=0; for name,value in p.Pairs(tabelka) do if(((czy_liczba)and(parametry_modul.TypeNumber(name)))or((not czy_liczba)and(not parametry_modul.TypeNumber(name))))then local name_str=p.Name(name,tabela_elementy_tabelowe); local value_str=p.Value(value,tabela_elementy_tabelowe); if(not czy_liczba)then str=str..name_str.." = "..value_str..",\n"; else if((pokolei)and(name==pokolei+1))then pokolei=pokolei+1; str=str..value_str..",\n"; else pokolei=nil; str=str..name_str.." = "..value_str..",\n"; end; end; end; end; end; WyswietlanieTable(tabelka,true); WyswietlanieTable(tabelka,false); str=str.."}"; return str; end; function p.FormatowanieTabelki(str_tabela,ile_dodane) local ile_klamerek=ile_dodane or 0; local szeregi_modul=require("Module:Szeregi"); str_tabela=szeregi_modul.ZamianaZnakowaLinii(str_tabela, function(linia) local spacje; if(mw.ustring.match(linia,"^{"))then spacje=mw.ustring.rep(" ",ile_klamerek*4); ile_klamerek=ile_klamerek+1; elseif(mw.ustring.match(linia,"^}"))then ile_klamerek=ile_klamerek-1; spacje=mw.ustring.rep(" ",ile_klamerek*4); else spacje=mw.ustring.rep(" ",ile_klamerek*4); end; return (spacje or "")..linia; end); return str_tabela; end; function p.PozycjaZmienna(name,value) local parametry_modul=require("Module:Parametry"); local tabela_elementy_tabelowe={tabela={},funkcja={},}; local str_name=p.Name(name,tabela_elementy_tabelowe); str_name=parametry_modul.TypeTable(name) and p.FormatowanieTabelki(str_name,0) or str_name; local str_value=p.Value(value,tabela_elementy_tabelowe); str_value=parametry_modul.TypeTable(value) and p.FormatowanieTabelki(str_value,0) or str_value; local str=str_name.."="..str_value..";"; return str; end; p["ŹródłoLua"]=function(frame,args) local str=""; for _,__value in ipairs(args)do local name=__value[1]; local value=__value[2]; local pozycja_zmienna=p.PozycjaZmienna(name,value); str=str..((str~="")and "\n" or "")..pozycja_zmienna; end; local tab_znak={ ["="]="{{=}}", ["|"]="{{!}}", ["{"]="{{(}}", ["}"]="{{)}}", ["["]="{{!(}}", ["]"]="{{)!}}", }; str=mw.ustring.gsub(str,"[%=%|%{%}%[%]]",function(znak) return tab_znak[znak] or znak; end) str="{{ŹródłoLua|"..str.."}}"; local wikikod=frame:preprocess{text=str,}; return wikikod; end; return p; a64xmuculx7gl7cz2394mq3hbumop9h Szablon:Wikibooks/Przykład/Ramka/MinimalnyNumerSpośródOdpowiednikowychZmiennych/opis 10 64100 555813 553782 2026-09-12T11:56:44Z Persino 2851 /* Ilustracja */ 555813 wikitext text/x-wiki {{Podstrona dokumentacji}} <!-- DODAWAJ KATEGORIE NA DOLE STRONY --> == Ilustracja == To jest szablon przykład ilustrujący działanie funkcji {{m|Ramka|MinimalnyNumerSpośródOdpowiednikowychZmiennych}} w dokumentacji modułu {{ld2|Ramka}}.Jest to szablon przykład ilustrujący działanie funkcji {{m|Ramka|MinimalnyNumerSpośródOdpowiednikowychZmiennych}} w dokumentacji modułu {{ld2|Ramka}}. == Przykład == {{Pre start}} {{Code|{{s|Wikibooks/Przykład/Ramka/MinimalnyNumerSpośródOdpowiednikowychZmiennych|zmienna{{=}}parametr|numerowane{{=}}|2{{=}}tak|parametr3{{=}}tak|parametr5{{=}}tak|subnazwa=tak}}}} → {{Tt|{{Wikibooks/Przykład/Ramka/MinimalnyNumerSpośródOdpowiednikowychZmiennych|zmienna=parametr|numerowane=|2=tak|parametr3=tak|parametr5=tak}}}} {{Code|{{s|Wikibooks/Przykład/Ramka/MinimalnyNumerSpośródOdpowiednikowychZmiennych|zmienna{{=}}parametr|numerowane{{=}}tak|2{{=}}tak|parametr3{{=}}tak|parametr5{{=}}tak|subnazwa=tak}}}} → {{Tt|{{Wikibooks/Przykład/Ramka/MinimalnyNumerSpośródOdpowiednikowychZmiennych|zmienna=parametr|numerowane=tak|2=tak|parametr3=tak|parametr5=tak}}}} {{Pre koniec}} {{BrClear}} <includeonly> {{Kategoria|Szablony, zwykłe, przykładów stron projektu/Ramka}} </includeonly> k2lis7eqsg3jemidenrv705ai2b3c6a 555815 555813 2026-09-12T11:57:59Z Persino 2851 /* Ilustracja */ 555815 wikitext text/x-wiki {{Podstrona dokumentacji}} <!-- DODAWAJ KATEGORIE NA DOLE STRONY --> == Ilustracja == To jest szablon przykład ilustrujący działanie funkcji {{m|Ramka|MinimalnyNumerSpośródOdpowiednikowychZmiennych}} w dokumentacji modułu {{ld2|Ramka}}. Jest to szablon przykład ilustrujący działanie funkcji {{m|Ramka|MinimalnyNumerSpośródOdpowiednikowychZmiennych}} w dokumentacji modułu {{ld2|Ramka}}. == Przykład == {{Pre start}} {{Code|{{s|Wikibooks/Przykład/Ramka/MinimalnyNumerSpośródOdpowiednikowychZmiennych|zmienna{{=}}parametr|numerowane{{=}}|2{{=}}tak|parametr3{{=}}tak|parametr5{{=}}tak|subnazwa=tak}}}} → {{Tt|{{Wikibooks/Przykład/Ramka/MinimalnyNumerSpośródOdpowiednikowychZmiennych|zmienna=parametr|numerowane=|2=tak|parametr3=tak|parametr5=tak}}}} {{Code|{{s|Wikibooks/Przykład/Ramka/MinimalnyNumerSpośródOdpowiednikowychZmiennych|zmienna{{=}}parametr|numerowane{{=}}tak|2{{=}}tak|parametr3{{=}}tak|parametr5{{=}}tak|subnazwa=tak}}}} → {{Tt|{{Wikibooks/Przykład/Ramka/MinimalnyNumerSpośródOdpowiednikowychZmiennych|zmienna=parametr|numerowane=tak|2=tak|parametr3=tak|parametr5=tak}}}} {{Pre koniec}} {{BrClear}} <includeonly> {{Kategoria|Szablony, zwykłe, przykładów stron projektu/Ramka}} </includeonly> p2qi52y3fths4dyhgurshrecbnyeck5 Szablon:Wikibooks/Przykład/Ramka/IleJestTakichOdpowiednikowychZmiennych/opis 10 64101 555814 553781 2026-09-12T11:57:37Z Persino 2851 /* Ilustracja */ 555814 wikitext text/x-wiki {{Podstrona dokumentacji}} <!-- DODAWAJ KATEGORIE NA DOLE STRONY --> == Ilustracja == To jest szablon przykład ilustrujący działanie funkcji {{m|Ramka|IleJestTakichOdpowiednikowychZmiennych}} w dokumentacji modułu {{ld2|Ramka}}. Jest to szablon przykład ilustrujący działanie funkcji {{m|Ramka|IleJestTakichOdpowiednikowychZmiennych}} w dokumentacji modułu {{ld2|Ramka}}. == Przykład == {{Pre start}} {{Code|{{s|Wikibooks/Przykład/Ramka/IleJestTakichOdpowiednikowychZmiennych|zmienna{{=}}parametr|numerowane{{=}}|parametr1{{=}}tak|2{{=}}tak|parametr3{{=}}tak|subnazwa=tak}}}} → {{Tt|{{Wikibooks/Przykład/Ramka/IleJestTakichOdpowiednikowychZmiennych|zmienna=parametr|numerowane=|parametr1=tak|2=tak|parametr3=tak}}}} {{Code|{{s|Wikibooks/Przykład/Ramka/IleJestTakichOdpowiednikowychZmiennych|zmienna{{=}}parametr|numerowane{{=}}tak|parametr1{{=}}tak|2{{=}}tak|parametr3{{=}}tak|subnazwa=tak}}}} → {{Tt|{{Wikibooks/Przykład/Ramka/IleJestTakichOdpowiednikowychZmiennych|zmienna=parametr|numerowane=tak|parametr1=tak|2=tak|parametr3=tak}}}} {{Pre koniec}} {{BrClear}} <includeonly> {{Kategoria|Szablony, zwykłe, przykładów stron projektu/Ramka}} </includeonly> 87n8svloi2v6d4c97b86m2bg4ftbhsn Wikipedysta:Persino/Gadget-Vector-2022.css/skin-night.css 2 64122 555729 554283 2026-09-11T17:56:56Z Persino 2851 555729 css text/css @media screen{ html.skin-theme-clientpref-night > body .vector-dropdown .vector-dropdown-content{ box-shadow:none; border:1px solid white; } html.skin-theme-clientpref-night > body .vector-page-toolbar-container .vector-dropdown{ border-bottom:1px solid black; } html.skin-theme-clientpref-night > body > .vector-header-container, html.skin-theme-clientpref-night > body > .vector-header-container *{ background-color:black; color:white; border-color:white; } html.skin-theme-clientpref-night > body #pt-userpage-2 a:not(.mw-selflink){ color:white; } html.skin-theme-clientpref-night > body > .mw-page-container, html.skin-theme-clientpref-night > body > .mw-page-container > .mw-page-container-inner{ filter:grayscale(100%); } html.skin-theme-clientpref-night > body.action-view td.diff-deletedline .diffchange, html.skin-theme-clientpref-night > body.action-submit td.diff-deletedline .diffchange{ background: var(--background-color-content-removed,#ffe49c); filter:invert(100%) grayscale(100%); } html.skin-theme-clientpref-night > body.action-view td.diff-addedline .diffchange, html.skin-theme-clientpref-night > body.action-submit td.diff-addedline .diffchange{ background: var(--background-color-content-added,#a3d3ff); filter:invert(100%) grayscale(100%); } html.skin-theme-clientpref-night > body .imeselector, html.skin-theme-clientpref-night > body .imeselector *{ background-color:black !important; color:white !important; border-color:white !important; filter:invert(0) grayscale(100%); } html.skin-theme-clientpref-night > body .imeselector .uls-ime-more-settings-link{ height: calc( 100% - 6px ); } html.skin-theme-clientpref-night > body .uls-ime-menu-settings-item{ padding-bottom:7px; } html.skin-theme-clientpref-night > body, html.skin-theme-clientpref-night > body > .mw-page-container, html.skin-theme-clientpref-night > body > .mw-page-container *{ color:white !important; background-color:black !important; border-color:white !important; } html.skin-theme-clientpref-night > body > .mw-page-container .mw-parser-output a:not(.mw-selflink), html.skin-theme-clientpref-night > body > .mw-page-container .mw-parser-output a:not(.mw-selflink):link, html.skin-theme-clientpref-night > body > .mw-page-container .mw-parser-output a:not(.mw-selflink):visited, html.skin-theme-clientpref-night > body > .mw-page-container .mw-parser-output a:not(.mw-selflink):focus, html.skin-theme-clientpref-night > body > .mw-page-container .mw-parser-output a:not(.mw-selflink):hover, html.skin-theme-clientpref-night > body > .mw-page-container .mw-parser-output a:not(.mw-selflink):active{ color:white !important; background-color:black !important; border-color:white !important; text-decoration: underline !important; } html.skin-theme-clientpref-night > body > .mw-page-container .mw-parser-output .toc_ogólnie_spis a, html.skin-theme-clientpref-night > body > .mw-page-container .mw-parser-output .toc_ogólnie_spis a:link, html.skin-theme-clientpref-night > body > .mw-page-container .mw-parser-output .toc_ogólnie_spis a:visited, html.skin-theme-clientpref-night > body > .mw-page-container .mw-parser-output .toc_ogólnie_spis a:focus, html.skin-theme-clientpref-night > body > .mw-page-container .mw-parser-output .toc_ogólnie_spis a:active, html.skin-theme-clientpref-night > body > .mw-page-container .mw-parser-output .toc_wykaz a, html.skin-theme-clientpref-night > body > .mw-page-container .mw-parser-output .toc_wykaz a:link, html.skin-theme-clientpref-night > body > .mw-page-container .mw-parser-output .toc_wykaz a:visited, html.skin-theme-clientpref-night > body > .mw-page-container .mw-parser-output .toc_wykaz a:focus, html.skin-theme-clientpref-night > body > .mw-page-container .mw-parser-output .toc_wykaz a:active{ text-decoration: none !important; } html.skin-theme-clientpref-night > body > .mw-page-container .mw-parser-output .toc_ogólnie_spis a:hover, html.skin-theme-clientpref-night > body > .mw-page-container .mw-parser-output .toc_wykaz a:hover{ text-decoration: underline !important; } html.skin-theme-clientpref-night > body > .mw-page-container #mw-content-text .mw-parser-output span[typeof="mw:File"], html.skin-theme-clientpref-night > body > .mw-page-container #mw-content-text .mw-parser-output span[typeof="mw:File"] *, html.skin-theme-clientpref-night > body > .mw-page-container #mw-content-text .mw-parser-output figure[typeof="mw:File"], html.skin-theme-clientpref-night > body > .mw-page-container #mw-content-text .mw-parser-output figure[typeof="mw:File"] *{ background-color:transparent !important; color:unset !important; background-color:unset !important; } html.skin-theme-clientpref-night > body > .mw-page-container .mw-parser-output img, html.skin-theme-clientpref-night > body > .mw-page-container .mw-footer-container img{ filter:invert(100%) grayscale(100%) !important; background-color:transparent !important; } html.skin-theme-clientpref-night > body .vector-pinned-container .vector-toc ul.vector-toc-contents li a, html.skin-theme-clientpref-night > body .vector-unpinned-container .vector-toc ul.vector-toc-contents li > a, html.skin-theme-clientpref-night > body .vector-pinned-container .vector-menu ul.vector-menu-content-list li > a, html.skin-theme-clientpref-night > body .vector-unpinned-container .vector-menu ul.vector-menu-content-list li > a{ z-index:0 !important; position:relative !important; } html.skin-theme-clientpref-night > body .vector-pinned-container .vector-toc ul.vector-toc-contents li > a:hover, html.skin-theme-clientpref-night > body .vector-unpinned-container .vector-toc ul.vector-toc-contents li > a:hover, html.skin-theme-clientpref-night > body .vector-pinned-container .vector-menu ul.vector-menu-content-list li > a:hover, html.skin-theme-clientpref-night > body .vector-unpinned-container .vector-menu ul.vector-menu-content-list li > a:hover{ background-color:black !important; color:white !important; border-color:white !important; z-index:1 !important; position:relative !important; } html.skin-theme-clientpref-night > body #mw-content-text > div.printfooter{ z-index:1; position:relative; } html.skin-theme-clientpref-night > body .mw-footer-container, html.skin-theme-clientpref-night > body .mw-footer-container *, html.skin-theme-clientpref-night > body .vector-menu-heading, html.skin-theme-clientpref-night > body .vector-menu-heading *, html.skin-theme-clientpref-night > body > .mw-page-container div.group > div.tool > div.menu, html.skin-theme-clientpref-night > body > .mw-page-container div.group > div.tool > div.menu *{ color:white !important; background-color:black !important; border-color:white !important; } html.skin-theme-clientpref-night > body div.uls-rewrite, html.skin-theme-clientpref-night > body div.uls-rewrite *{ color:white !important; background-color:black !important; border-color:white !important; } html.skin-theme-clientpref-night > body > div.uls-menu, html.skin-theme-clientpref-night > body > div.uls-menu *, html.skin-theme-clientpref-night > body > .language-settings-dialog, html.skin-theme-clientpref-night > body > .language-settings-dialog *{ color:white !important; background-color:black !important; border-color:white !important; filter:invert(0%); } html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-highlight, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-indent, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-outdent, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-articleSearch, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-settings, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-puzzle, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-reference, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-image, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-link, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-signature, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-italic, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-bold, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-article, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-previous, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-tag, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-check, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-highlight, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-expand, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-first, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-next, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-last, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-search, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-close, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-menu, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-info, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-bookmark, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-ellipsis, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-listBullet, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-listNumbered, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-code, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-noWikiText, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-newline, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-bigger, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-smaller, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-superscript, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-subscript, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-imageGallery, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-articleRedirect, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-table, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-mathematicsDisplayInline, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-mathematicsDisplayBlock, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-helpNotice, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-edit, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-trash, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-pushPin, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-reload{ color: white !important; background-color: unset !important; border-color: white !important; } html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-sortAscending, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-sortDescending, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-pilcrow, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-wrapping, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-check-all, html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-gotoLine{ color: white !important; background-color: black !important; border-color: white !important; } html.skin-theme-clientpref-night > body .cdx-button__icon.cm-mw-icon--previous, html.skin-theme-clientpref-night > body .cdx-button__icon.cm-mw-icon--next, html.skin-theme-clientpref-night > body .cdx-icon.cdx-icon--medium.cm-mw-icon--match-case, html.skin-theme-clientpref-night > body .cdx-icon.cdx-icon--medium.cm-mw-icon--regexp, html.skin-theme-clientpref-night > body .cdx-icon.cdx-icon--medium.cm-mw-icon--quotes{ filter:invert(100%) grayscale(100%); } html.skin-theme-clientpref-night > body span.oo-ui-iconElement-icon.oo-ui-icon-check{ filter:invert(0) grayscale(100%) !important; } html.skin-theme-clientpref-night > body span.vector-icon{ background-color:white !important; } html.skin-theme-clientpref-night > body span.oo-ui-indicatorElement-indicator{ color: white !important; background-color: unset !important; border-color: white !important; } html.skin-theme-clientpref-night > body .mw-tag-wikieditor, html.skin-theme-clientpref-night > body .mw-tag-wikieditor *{ background-color:black !important; color:white !important; border-color:white !important; } html.skin-theme-clientpref-night > body input.oo-ui-inputWidget-input{ color: white !important; background-color: black !important; border-color: white !important; } html.skin-theme-clientpref-night > body > div.uls-menu .oo-ui-iconElement-icon{ background-color:transparent !important; filter:invert(100%) grayscale(100%) !important; } html.skin-theme-clientpref-night > body > .language-settings-dialog .uls-sub-panel{ top:0 !important; } html.skin-theme-clientpref-night > body > .language-settings-dialog .row .uls-display-settings-tab-switcher, html.skin-theme-clientpref-night > body > .language-settings-dialog .uls-sub-panel{ background-color:transparent !important; border:0 !important; } html.skin-theme-clientpref-night > body > .language-settings-dialog .row .uls-display-settings-tab-switcher button, html.skin-theme-clientpref-night > body > .language-settings-dialog .uls-sub-panel button{ background-color:black !important; color:white !important; border-color:white !important; } html.skin-theme-clientpref-night > body > .language-settings-dialog .settings-text:hover{ background-color:white!important; color:black !important; } html.skin-theme-clientpref-night > body > .language-settings-dialog .settings-text:not(:hover){ background-color:black!important; color:white !important; } html.skin-theme-clientpref-night > body > .language-settings-dialog #languagesettings-settings-panel{ background-color:transparent !important; } html.skin-theme-clientpref-night > body > .vector-header-container #p-vector-user-menu-userpage a{ font-weight:bolder; } html.skin-theme-clientpref-night > body::selection, html.skin-theme-clientpref-night > body *::selection{ background-color:white !important; color:black !important; border-color:white !important; } html.skin-theme-clientpref-night > body::-moz-selection html.skin-theme-clientpref-night > body *::-moz-selection{ background-color:white !important; color:black !important; border-color:white !important; } html.skin-theme-clientpref-night > body .cm-scroller .cm-line ::selection, html.skin-theme-clientpref-night > body .cm-scroller .cm-line::selection, html.skin-theme-clientpref-night > body .ͼ4 .cm-line ::selection, html.skin-theme-clientpref-night > body .ͼ4 .cm-line::selection, html.skin-theme-clientpref-night > body .ͼo.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground, html.skin-theme-clientpref-night > body .ͼo .cm-selectionBackground, html.skin-theme-clientpref-night > body .ͼo .cm-content ::selection{ background-color:white !important; color:black !important; border-color:white !important; } html.skin-theme-clientpref-night > body .cm-scroller .cm-line ::-moz-selection, html.skin-theme-clientpref-night > body .cm-scroller .cm-line::-moz-selection, html.skin-theme-clientpref-night > body .ͼ4 .cm-line ::-moz-selection, html.skin-theme-clientpref-night > body .ͼ4 .cm-line::-moz-selection, html.skin-theme-clientpref-night > body .ͼo.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground, html.skin-theme-clientpref-night > body .ͼo .cm-selectionBackground, html.skin-theme-clientpref-night > body .ͼo .cm-content ::-moz-selection{ background-color:white !important; color:black !important; border-color:white !important; } html.skin-theme-clientpref-night > body .ͼo .cm-panels.cm-panels-bottom{ border-top: 1px solid white; } html.skin-theme-clientpref-night > body hr, html.skin-theme-clientpref-night > body > .mw-page-container .cdx-message__icon{ filter:invert(100%) grayscale(100%); } html.skin-theme-clientpref-night > body span.ext-discussiontools-init-replylink-buttons, html.skin-theme-clientpref-night > body span.ext-discussiontools-init-replylink-buttons *{ color:white !important; background-color:black !important; border:0 !important; } html.skin-theme-clientpref-night > body > div.mw-notification-area-overlay .mw-notification-content, html.skin-theme-clientpref-night > body > div.mw-notification-area-overlay .mw-notification-content *{ color:white; background-color:black; border-color:white; filter:invert(0) grayscale(100%); } html.skin-theme-clientpref-night > body > div.mw-notification-area-overlay .mw-notification-content .oo-ui-image-success{ background-color:unset; } html.skin-theme-clientpref-night > body > div.mw-notification-area-overlay .mw-notification-content a{ font-weight:bolder; } html.skin-theme-clientpref-night > body span.link > a, html.skin-theme-clientpref-night > body span.link > a:link, html.skin-theme-clientpref-night > body span.link > a:visited, html.skin-theme-clientpref-night > body span.link > a:hover, html.skin-theme-clientpref-night > body span.link > a:active{ color:white; background-color:black; border-color:none; } html.skin-theme-clientpref-night > body img.mw-logo-icon{ background-color:white; color:black; border-color:black; } html.skin-theme-clientpref-night > body .cdx-checkbox__input:enabled:checked + .cdx-checkbox__icon{ background-color:black; color:white; border-color:white; } html.skin-theme-clientpref-night > body .cdx-button:enabled.cdx-button--weight-quiet:hover{ background-color: gray; mix-blend-mode:unset; } html.skin-theme-clientpref-night > body .uls-language-actions-close, html.skin-theme-clientpref-night > body .uls-settings-block--with-add-languages, html.skin-theme-clientpref-night > body a.mw-logo img, html.skin-theme-clientpref-night > body span.vector-icon img{ filter:invert(100%) grayscale(100%) !important; } html.skin-theme-clientpref-night > body a.mw-logo img.mw-logo-icon{ background-color:white; } html.skin-theme-clientpref-night > body a.mw-logo img.mw-logo-wordmark{ background-color:black; } html.skin-theme-clientpref-night > body a.mw-logo{ background-color:black; } html.skin-theme-clientpref-night > body span.vector-icon{ background-color:white; } html.skin-theme-clientpref-night span.tab > a.skin-invert, html.skin-theme-clientpref-night a.skin-invert.label, html.skin-theme-clientpref-night div.tabs > span > a.skin-invert{ color-scheme:unset !important; filter:none !important; } html.skin-theme-clientpref-night .skin-invert-image img, html.skin-theme-clientpref-night .skin-invert.label::after, html.skin-theme-clientpref-night .skin-invert.current::before, html.skin-theme-clientpref-night .oo-ui-iconElement-icon, html.skin-theme-clientpref-night .oo-ui-indicatorElement-indicator, html.skin-theme-clientpref-night div.tabs > span > a.skin-invert::before, html.skin-theme-clientpref-night label.mw-enhancedchanges-arrow{ color-scheme: light !important; filter: invert(100%) grayscale(100%) !important; } html.skin-theme-clientpref-night > body input[type="radio"], html.skin-theme-clientpref-night > body input[type="checkbox"]{ color-scheme: light !important; filter: invert(1) grayscale(100%) !important; background-color:black; color:white; border-color:white; } html.skin-theme-clientpref-night input[type="radio"] + span.cdx-radio__icon, html.skin-theme-clientpref-night input[type="radio"]:hover + span.cdx-radio__icon{ filter:grayscale(100%) !important; } html.skin-theme-clientpref-night > body .oo-ui-widget, html.skin-theme-clientpref-night > body .oo-ui-widget *{ background-color:black; color:white; border-color:white; filter:invert(0%) grayscale(100%); } div.vector-main-menu > div.mw-portlet > button.uls-settings-trigger, html.skin-theme-clientpref-night > body div#mw-abusefilter-examine-editor, html.skin-theme-clientpref-night > body div#mw-abusefilter-examine-editor *, html.skin-theme-clientpref-night > body div#vector-appearance-pinned-container, html.skin-theme-clientpref-night > body div#vector-appearance-pinned-container *, html.skin-theme-clientpref-night > body div#vector-appearance-unpinned-container, html.skin-theme-clientpref-night > body div#vector-appearance-unpinned-container *, html.skin-theme-clientpref-night > body div.mw-rcfilters-container, html.skin-theme-clientpref-night > body div.mw-rcfilters-container *, html.skin-theme-clientpref-night > body div.mw-rcfilters-ui-rcTopSectionWidget-topLinks-top, html.skin-theme-clientpref-night > body div.mw-rcfilters-ui-rcTopSectionWidget-topLinks-top *{ color: white !important; background-color: unset !important; border-color: white !important; } html.skin-theme-clientpref-night > body > div.mw-page-container > div.mw-page-container-inner .mw-highlight > pre{ position:relative; box-shadow:none; } html.skin-theme-clientpref-night > body .mw-search-form-wrapper, html.skin-theme-clientpref-night > body .mw-search-form-wrapper *{ background-color:black !important; color:white !important; border-color:white !important; } html.skin-theme-clientpref-night > body .oo-ui-tagItemWidget{ border-radius:unset !important; height:1.7357em !important; } html.skin-theme-clientpref-night > body .oo-ui-fieldLayout-header{ margin-right:0.4em; } html.skin-theme-clientpref-night > body .oo-ui-buttonElement-framed.oo-ui-widget-enabled > .oo-ui-buttonElement-button{ background:none !important; } html.skin-theme-clientpref-night > body .mw-advancedSearch-fieldContainer, html.skin-theme-clientpref-night > body .mw-search-form-wrapper .mw-advancedSearch-namespace-selection{ background:none !important; } html.skin-theme-clientpref-night > body .oo-ui-checkboxInputWidget [type="checkbox"]{ margin: 1px; width:1.5em; height:1.5em; } html.skin-theme-clientpref-night > body .cdx-popover, html.skin-theme-clientpref-night > body .cdx-popover *, html.skin-theme-clientpref-night > body div.cdx-dialog{ background-color:black !important; color:white !important; border-color:white !important; } html.skin-theme-clientpref-night > body div.cdx-dialog{ filter:invert(0%) grayscale(100%) !important; } html.skin-theme-clientpref-night > body .cdx-popover .mw-special-watchlistlabels-onboarding-image{ filter:invert(0%) grayscale(100%) !important; } html.skin-theme-clientpref-night > body #pasek_postępu, html.skin-theme-clientpref-night > body #pasek_postępu *, html.skin-theme-clientpref-night > body .dymkisubst_link_wewnętrzny_komunikatów, html.skin-theme-clientpref-night > body .dymkisubst_link_wewnętrzny_komunikatów *{ background-color:black !important; color:white !important; border-color:white !important; filter:invert(0%) grayscale(100%); } html.skin-theme-clientpref-night > body .oo-ui-dropdownWidget.oo-ui-widget-disabled .oo-ui-dropdownWidget-handle{ background-color:unset; } html.skin-theme-clientpref-night > body .vector-page-titlebar > .mw-portlet-lang:last-child{ margin-right:0; } } mz5pe1kd9a64e8ohgaukq3prig1voiw Szablon:OpisParametrów 10 64146 555675 555665 2026-09-11T13:13:26Z Persino 2851 555675 wikitext text/x-wiki <includeonly><templatestyles src="Szablon:OpisParametrów/styles.css" /> {| class="wikitable OpisParametrów {{{klasa|}}}" {{#if:{{{styl|}}}|style="{{{styl|}}}"}} |- !{{!}}Lp. !{{!}}Parametr ! Opis {{#invoke:Ramka|Powtarzaj|nie rozwiń=| {{!}}- {{((}}#if:{{(((}}nagłówek{{((}}_{{))}}{{!}}{{)))}}{{!}} class{{=}}"OpisParametrów-nagłówek"{{))}} {{!}}{{!}}<div>{{((}}_{{))}}</div> ! {{((}}#if:{{(((}}nagłówek{{((}}_{{))}}{{!}}{{)))}}{{!}} colspan{{=}}"2"{{))}} {{!}} <div>{{(((}}{{((}}_{{))}}{{)))}}</div> {{((}}#if:{{(((}}nagłówek{{((}}_{{))}}{{!}}{{)))}}{{!}}{{!}}{{((}}!{{))}} {{(((}}_{{((}}_{{))}}{{)))}}{{))}}}} |}{{#if:{{{bez dodatkowych sprawdzeń|}}}||{{#invoke:Ramka|Rozwiń|{{((}}#invoke:Sprawdź{{!}}Parametry{{!}}{{=}}problemy-w-szablonie-%s {{((}}(({{))}}Kategoria{{((}}!{{))}}Szablon %s do sprawdzenia{{((}})){{))}}{{#invoke:Ramka|Powtarzaj|po kolei=tak|nie rozwiń=tak|{{!}}{{((}}_{{))}}{{=}}txt!{{!}}nagłówek{{((}}_{{))}}{{=}}txt?;_{{((}}_{{))}}{{!}}_{{((}}_{{))}}{{=}}txt?!;nagłówek{{((}}_{{))}}}}{{))}} }}}}</includeonly><noinclude>{{Dokumentacja}}</noinclude> er39mgzm9llpwt8jhd4artizwd8ygx5 555679 555675 2026-09-11T13:17:08Z Persino 2851 555679 wikitext text/x-wiki <includeonly><templatestyles src="Szablon:OpisParametrów/styles.css" /> {| class="wikitable OpisParametrów {{{klasa|}}}" {{#if:{{{styl|}}}|style="{{{styl|}}}"}} |- !{{!}}Lp. !{{!}}Parametr ! Opis {{#invoke:Ramka|Powtarzaj|nie rozwiń=| {{!}}- {{((}}#if:{{(((}}nagłówek{{((}}_{{))}}{{!}}{{)))}}{{!}} class{{=}}"OpisParametrów-nagłówek"{{))}} {{!}}{{!}}<div>{{((}}_{{))}}</div> ! {{((}}#if:{{(((}}nagłówek{{((}}_{{))}}{{!}}{{)))}}{{!}} colspan{{=}}"2"{{))}} {{!}} <div>{{(((}}{{((}}_{{))}}{{)))}}</div> {{((}}#if:{{(((}}nagłówek{{((}}_{{))}}{{!}}{{)))}}{{!}}{{!}}{{((}}!{{))}} {{(((}}_{{((}}_{{))}}{{)))}}{{))}}}} |}{{#if:{{{bez dodatkowych sprawdzeń|}}}||{{#invoke:Ramka|Rozwiń|{{((}}#invoke:Sprawdź{{!}}Parametry{{!}}{{=}}problemy-w-szablonie-%s {{((}}(({{))}}Kategoria{{((}}!{{))}}Szablon %s do sprawdzenia{{((}})){{))}}{{!}}klasa{{=}}{{!}}styl{{=}}{{#invoke:Ramka|Powtarzaj|po kolei=tak|nie rozwiń=tak|{{!}}{{((}}_{{))}}{{=}}txt!{{!}}nagłówek{{((}}_{{))}}{{=}}txt?;_{{((}}_{{))}}{{!}}_{{((}}_{{))}}{{=}}txt?!;nagłówek{{((}}_{{))}}}}{{))}} }}}}</includeonly><noinclude>{{Dokumentacja}}</noinclude> eht8byic3b088x9xcopu1ka3xvg08pi 555690 555679 2026-09-11T13:55:30Z Persino 2851 555690 wikitext text/x-wiki <includeonly><templatestyles src="Szablon:OpisParametrów/styles.css" /> {| class="wikitable OpisParametrów {{{klasa|}}}" {{#if:{{{styl|}}}|style="{{{styl|}}}"}} |- !{{!}}Lp. !{{!}}Parametr ! Opis {{#invoke:Ramka|Powtarzaj|nie rozwiń=| {{!}}- {{((}}#if:{{(((}}nagłówek{{((}}_{{))}}{{!}}{{)))}}{{!}} class{{=}}"OpisParametrów-nagłówek"{{))}} {{!}}{{!}}<div>{{((}}_{{))}}</div> ! {{((}}#if:{{(((}}nagłówek{{((}}_{{))}}{{!}}{{)))}}{{!}} colspan{{=}}"2"{{))}} {{!}} <div>{{(((}}{{((}}_{{))}}{{)))}}</div> {{((}}#if:{{(((}}nagłówek{{((}}_{{))}}{{!}}{{)))}}{{!}}{{!}}{{((}}!{{))}} {{(((}}_{{((}}_{{))}}{{)))}}{{))}}}} |}{{#if:{{{bez dodatkowych sprawdzeń|}}}||{{#invoke:Ramka|Rozwiń|{{((}}#invoke:Sprawdź{{!}}Parametry{{!}}{{=}}problemy-w-szablonie-%s {{((}}(({{))}}Kategoria{{((}}!{{))}}Szablon %s do sprawdzenia{{((}})){{))}}{{!}}klasa{{=}}{{!}}styl{{=}}{{#invoke:Ramka|Powtarzaj|po kolei=tak|nie rozwiń=tak|{{!}}{{((}}_{{))}}{{=}}txt!{{!}}nagłówek{{((}}_{{))}}{{=}}txt?;_{{((}}_{{))}}{{!}}_{{((}}_{{))}}{{=}}txt?!;nagłówek?!!{{((}}_{{))}}}}{{))}} }}}}</includeonly><noinclude>{{Dokumentacja}}</noinclude> kjqa65zad9mn33jf8prbedeji7qk98s 555691 555690 2026-09-11T13:58:25Z Persino 2851 555691 wikitext text/x-wiki <includeonly><templatestyles src="Szablon:OpisParametrów/styles.css" /> {| class="wikitable OpisParametrów {{{klasa|}}}" {{#if:{{{styl|}}}|style="{{{styl|}}}"}} |- !{{!}}Lp. !{{!}}Parametr ! Opis {{#invoke:Ramka|Powtarzaj|nie rozwiń=| {{!}}- {{((}}#if:{{(((}}nagłówek{{((}}_{{))}}{{!}}{{)))}}{{!}} class{{=}}"OpisParametrów-nagłówek"{{))}} {{!}}{{!}}<div>{{((}}_{{))}}</div> ! {{((}}#if:{{(((}}nagłówek{{((}}_{{))}}{{!}}{{)))}}{{!}} colspan{{=}}"2"{{))}} {{!}} <div>{{(((}}{{((}}_{{))}}{{)))}}</div> {{((}}#if:{{(((}}nagłówek{{((}}_{{))}}{{!}}{{)))}}{{!}}{{!}}{{((}}!{{))}} {{(((}}_{{((}}_{{))}}{{)))}}{{))}}}} |}{{#if:{{{bez dodatkowych sprawdzeń|}}}||{{#invoke:Ramka|Rozwiń|{{((}}#invoke:Sprawdź{{!}}Parametry{{!}}{{=}}problemy-w-szablonie-%s {{((}}(({{))}}Kategoria{{((}}!{{))}}Szablon %s do sprawdzenia{{((}})){{))}}{{!}}klasa{{=}}{{!}}styl{{=}}{{#invoke:Ramka|Powtarzaj|po kolei=tak|nie rozwiń=tak|{{!}}{{((}}_{{))}}{{=}}txt!{{!}}nagłówek{{((}}_{{))}}{{=}}txt?;_{{((}}_{{))}}{{!}}_{{((}}_{{))}}{{=}}txt?!;!nagłówek?!!{{((}}_{{))}}}}{{))}} }}}}</includeonly><noinclude>{{Dokumentacja}}</noinclude> 9vypvg6lzh6lx3ipq3jj9yhfy9zcps1 555692 555691 2026-09-11T13:58:49Z Persino 2851 555692 wikitext text/x-wiki <includeonly><templatestyles src="Szablon:OpisParametrów/styles.css" /> {| class="wikitable OpisParametrów {{{klasa|}}}" {{#if:{{{styl|}}}|style="{{{styl|}}}"}} |- !{{!}}Lp. !{{!}}Parametr ! Opis {{#invoke:Ramka|Powtarzaj|nie rozwiń=| {{!}}- {{((}}#if:{{(((}}nagłówek{{((}}_{{))}}{{!}}{{)))}}{{!}} class{{=}}"OpisParametrów-nagłówek"{{))}} {{!}}{{!}}<div>{{((}}_{{))}}</div> ! {{((}}#if:{{(((}}nagłówek{{((}}_{{))}}{{!}}{{)))}}{{!}} colspan{{=}}"2"{{))}} {{!}} <div>{{(((}}{{((}}_{{))}}{{)))}}</div> {{((}}#if:{{(((}}nagłówek{{((}}_{{))}}{{!}}{{)))}}{{!}}{{!}}{{((}}!{{))}} {{(((}}_{{((}}_{{))}}{{)))}}{{))}}}} |}{{#if:{{{bez dodatkowych sprawdzeń|}}}||{{#invoke:Ramka|Rozwiń|{{((}}#invoke:Sprawdź{{!}}Parametry{{!}}{{=}}problemy-w-szablonie-%s {{((}}(({{))}}Kategoria{{((}}!{{))}}Szablon %s do sprawdzenia{{((}})){{))}}{{!}}klasa{{=}}{{!}}styl{{=}}{{#invoke:Ramka|Powtarzaj|po kolei=tak|nie rozwiń=tak|{{!}}{{((}}_{{))}}{{=}}txt!{{!}}nagłówek{{((}}_{{))}}{{=}}txt?;_{{((}}_{{))}}{{!}}_{{((}}_{{))}}{{=}}txt?!;!nagłówek?!{{((}}_{{))}}}}{{))}} }}}}</includeonly><noinclude>{{Dokumentacja}}</noinclude> f3nn8v5phhuxu6ce9t4nsv8fu7jcf6x 555693 555692 2026-09-11T14:00:42Z Persino 2851 555693 wikitext text/x-wiki <includeonly><templatestyles src="Szablon:OpisParametrów/styles.css" /> {| class="wikitable OpisParametrów {{{klasa|}}}" {{#if:{{{styl|}}}|style="{{{styl|}}}"}} |- !{{!}}Lp. !{{!}}Parametr ! Opis {{#invoke:Ramka|Powtarzaj|nie rozwiń=| {{!}}- {{((}}#if:{{(((}}nagłówek{{((}}_{{))}}{{!}}{{)))}}{{!}} class{{=}}"OpisParametrów-nagłówek"{{))}} {{!}}{{!}}<div>{{((}}_{{))}}</div> ! {{((}}#if:{{(((}}nagłówek{{((}}_{{))}}{{!}}{{)))}}{{!}} colspan{{=}}"2"{{))}} {{!}} <div>{{(((}}{{((}}_{{))}}{{)))}}</div> {{((}}#if:{{(((}}nagłówek{{((}}_{{))}}{{!}}{{)))}}{{!}}{{!}}{{((}}!{{))}} {{(((}}_{{((}}_{{))}}{{)))}}{{))}}}} |}{{#if:{{{bez dodatkowych sprawdzeń|}}}||{{#invoke:Ramka|Rozwiń|{{((}}#invoke:Sprawdź{{!}}Parametry{{!}}{{=}}problemy-w-szablonie-%s {{((}}(({{))}}Kategoria{{((}}!{{))}}Szablon %s do sprawdzenia{{((}})){{))}}{{!}}klasa{{=}}{{!}}styl{{=}}{{#invoke:Ramka|Powtarzaj|po kolei=tak|nie rozwiń=tak|{{!}}{{((}}_{{))}}{{=}}txt!{{!}}nagłówek{{((}}_{{))}}{{=}}txt?;_{{((}}_{{))}}{{!}}_{{((}}_{{))}}{{=}}txt?!;nagłówek{{((}}_{{))}}}}{{))}} }}}}</includeonly><noinclude>{{Dokumentacja}}</noinclude> eht8byic3b088x9xcopu1ka3xvg08pi 555712 555693 2026-09-11T16:01:37Z Persino 2851 555712 wikitext text/x-wiki <includeonly><templatestyles src="Szablon:OpisParametrów/styles.css" /> {| class="wikitable OpisParametrów {{{klasa|}}}" {{#if:{{{styl|}}}|style="{{{styl|}}}"}} |- !{{!}} Lp. ! {{((}}#if:{{(((}}__{{)))}}{{!}}style="{{(((}}__{{)))}}"{{))}} {{!}} Parametr ! Opis {{#invoke:Ramka|Powtarzaj|nie rozwiń=| {{!}}- {{((}}#if:{{(((}}nagłówek{{((}}_{{))}}{{!}}{{)))}}{{!}} class{{=}}"OpisParametrów-nagłówek"{{))}} {{!}}{{!}} <div>{{((}}_{{))}}</div> ! {{((}}#if:{{(((}}nagłówek{{((}}_{{))}}{{!}}{{)))}}{{!}}colspan{{=}}"2"{{))}} {{((}}#if:{{(((}}__{{((}}_{{))}}{{!}}{{)))}}{{!}}style{{=}}"{{(((}}__{{((}}_{{))}}{{)))}}"{{))}} {{!}} <div>{{(((}}{{((}}_{{))}}{{)))}}</div> {{((}}#if:{{(((}}nagłówek{{((}}_{{))}}{{!}}{{)))}}{{!}}{{!}}{{((}}!{{))}} {{(((}}_{{((}}_{{))}}{{)))}}{{))}}}} |}{{#if:{{{bez dodatkowych sprawdzeń|}}}||{{#invoke:Ramka|Rozwiń|{{((}}#invoke:Sprawdź{{!}}Parametry{{!}}{{=}}problemy-w-szablonie-%s {{((}}(({{))}}Kategoria{{((}}!{{))}}Szablon %s do sprawdzenia{{((}})){{))}}{{!}}klasa{{=}}{{!}}styl{{=}}{{#invoke:Ramka|Powtarzaj|po kolei=tak|nie rozwiń=tak|{{!}}{{((}}_{{))}}{{=}}txt!{{!}}nagłówek{{((}}_{{))}}{{=}}txt?;_{{((}}_{{))}}{{!}}_{{((}}_{{))}}{{=}}txt?!;nagłówek{{((}}_{{))}}}}{{))}} }}}}</includeonly><noinclude>{{Dokumentacja}}</noinclude> h16rr0l1n6alup5ebkk5vghptb4abqy 555713 555712 2026-09-11T16:03:58Z Persino 2851 555713 wikitext text/x-wiki <includeonly><templatestyles src="Szablon:OpisParametrów/styles.css" /> {| class="wikitable OpisParametrów {{{klasa|}}}" {{#if:{{{styl|}}}|style="{{{styl|}}}"}} |- !{{!}} Lp. ! {{#if:{{{__}}}|style="{{{__}}}"}} {{!}} Parametr ! {{!}} Opis {{#invoke:Ramka|Powtarzaj|nie rozwiń=| {{!}}- {{((}}#if:{{(((}}nagłówek{{((}}_{{))}}{{!}}{{)))}}{{!}} class{{=}}"OpisParametrów-nagłówek"{{))}} {{!}}{{!}} <div>{{((}}_{{))}}</div> ! {{((}}#if:{{(((}}nagłówek{{((}}_{{))}}{{!}}{{)))}}{{!}}colspan{{=}}"2"{{))}} {{((}}#if:{{(((}}__{{((}}_{{))}}{{!}}{{)))}}{{!}}style{{=}}"{{(((}}__{{((}}_{{))}}{{)))}}"{{))}} {{!}} <div>{{(((}}{{((}}_{{))}}{{)))}}</div> {{((}}#if:{{(((}}nagłówek{{((}}_{{))}}{{!}}{{)))}}{{!}}{{!}}{{((}}!{{))}} {{(((}}_{{((}}_{{))}}{{)))}}{{))}}}} |}{{#if:{{{bez dodatkowych sprawdzeń|}}}||{{#invoke:Ramka|Rozwiń|{{((}}#invoke:Sprawdź{{!}}Parametry{{!}}{{=}}problemy-w-szablonie-%s {{((}}(({{))}}Kategoria{{((}}!{{))}}Szablon %s do sprawdzenia{{((}})){{))}}{{!}}klasa{{=}}{{!}}styl{{=}}{{#invoke:Ramka|Powtarzaj|po kolei=tak|nie rozwiń=tak|{{!}}{{((}}_{{))}}{{=}}txt!{{!}}nagłówek{{((}}_{{))}}{{=}}txt?;_{{((}}_{{))}}{{!}}_{{((}}_{{))}}{{=}}txt?!;nagłówek{{((}}_{{))}}}}{{))}} }}}}</includeonly><noinclude>{{Dokumentacja}}</noinclude> s2rremsvrxexypgydzvjjylecu91p4y 555714 555713 2026-09-11T16:06:53Z Persino 2851 555714 wikitext text/x-wiki <includeonly><templatestyles src="Szablon:OpisParametrów/styles.css" /> {| class="wikitable OpisParametrów {{{klasa|}}}" {{#if:{{{styl|}}}|style="{{{styl|}}}"}} |- !{{!}} Lp. ! {{#if:{{{__}}}|style="{{{__}}}"}} {{!}} Parametr ! {{!}} Opis {{#invoke:Ramka|Powtarzaj|nie rozwiń=| {{!}}- {{((}}#if:{{(((}}nagłówek{{((}}_{{))}}{{!}}{{)))}}{{!}} class{{=}}"OpisParametrów-nagłówek"{{))}} {{!}}{{!}} <div>{{((}}_{{))}}</div> ! {{((}}#if:{{(((}}nagłówek{{((}}_{{))}}{{!}}{{)))}}{{!}}colspan{{=}}"2"{{))}} {{((}}#if:{{(((}}__{{((}}_{{))}}{{!}}{{)))}}{{!}}style{{=}}"{{(((}}__{{((}}_{{))}}{{)))}}"{{))}} {{!}} <div>{{(((}}{{((}}_{{))}}{{)))}}</div> {{((}}#if:{{(((}}nagłówek{{((}}_{{))}}{{!}}{{)))}}{{!}}{{!}}{{((}}!{{))}} {{(((}}_{{((}}_{{))}}{{)))}}{{))}}}} |}{{#if:{{{bez dodatkowych sprawdzeń|}}}||{{#invoke:Ramka|Rozwiń|{{((}}#invoke:Sprawdź{{!}}Parametry{{!}}{{=}}problemy-w-szablonie-%s {{((}}(({{))}}Kategoria{{((}}!{{))}}Szablon %s do sprawdzenia{{((}})){{))}}{{!}}klasa{{=}}{{!}}styl{{=}}{{!}}__{{=}}{{#invoke:Ramka|Powtarzaj|po kolei=tak|nie rozwiń=tak|{{!}}{{((}}_{{))}}{{=}}txt!{{!}}__{{((}}_{{))}}{{=}}{{!}}nagłówek{{((}}_{{))}}{{=}}txt?;_{{((}}_{{))}}{{!}}_{{((}}_{{))}}{{=}}txt?!;nagłówek{{((}}_{{))}}}}{{))}} }}}}</includeonly><noinclude>{{Dokumentacja}}</noinclude> 0tew34btpi1t2bjove4rj4tdnb3218b 555716 555714 2026-09-11T16:24:38Z Persino 2851 555716 wikitext text/x-wiki <includeonly><templatestyles src="Szablon:OpisParametrów/styles.css" /> {| class="wikitable OpisParametrów {{{klasa|}}}" {{#if:{{{styl|}}}|style="{{{styl|}}}"}} |- !{{!}} Lp. ! {{#if:{{{__|}}}|style="{{{__}}}"}} {{#if:{{{___|}}}|style="{{{___}}}"}} {{!}} Parametr ! {{!}} Opis {{#invoke:Ramka|Powtarzaj|nie rozwiń=| {{!}}- {{((}}#if:{{(((}}nagłówek{{((}}_{{))}}{{!}}{{)))}}{{!}} class{{=}}"OpisParametrów-nagłówek"{{))}} {{!}}{{!}} <div>{{((}}_{{))}}</div> ! {{((}}#if:{{(((}}nagłówek{{((}}_{{))}}{{!}}{{)))}}{{!}}colspan{{=}}"2"{{))}} <!-- --> {{((}}#if:{{(((}}__{{((}}_{{))}}{{!}}{{)))}}{{!}}style{{=}}"{{(((}}__{{((}}_{{))}}{{)))}}"{{))}} <!-- --> {{((}}#if:{{(((}}___{{((}}_{{))}}{{!}}{{)))}}{{!}}class{{=}}"{{(((}}___{{((}}_{{))}}{{)))}}"{{))}} <!-- -->{{!}} <div>{{(((}}{{((}}_{{))}}{{)))}}</div> {{((}}#if:{{(((}}nagłówek{{((}}_{{))}}{{!}}{{)))}}{{!}}{{!}}{{((}}!{{))}} {{(((}}_{{((}}_{{))}}{{)))}}{{))}}}} |}{{#if:{{{bez dodatkowych sprawdzeń|}}}||{{#invoke:Ramka|Rozwiń|{{((}}#invoke:Sprawdź{{!}}Parametry{{!}}{{=}}problemy-w-szablonie-%s {{((}}(({{))}}Kategoria{{((}}!{{))}}Szablon %s do sprawdzenia{{((}})){{))}}{{!}}klasa{{=}}{{!}}styl{{=}}{{!}}__{{=}}{{#invoke:Ramka|Powtarzaj|po kolei=tak|nie rozwiń=tak|{{!}}{{((}}_{{))}}{{=}}txt!{{!}}__{{((}}_{{))}}{{=}}{{!}}nagłówek{{((}}_{{))}}{{=}}txt?;_{{((}}_{{))}}{{!}}_{{((}}_{{))}}{{=}}txt?!;nagłówek{{((}}_{{))}}}}{{))}} }}}}</includeonly><noinclude>{{Dokumentacja}}</noinclude> 5pulvf88krngq8mevfcf1kbu8px1ppm 555717 555716 2026-09-11T16:30:33Z Persino 2851 555717 wikitext text/x-wiki <includeonly><templatestyles src="Szablon:OpisParametrów/styles.css" /> {| class="wikitable OpisParametrów {{{klasa|}}}" {{#if:{{{styl|}}}|style="{{{styl|}}}"}} |- !{{!}} Lp. ! {{#if:{{{__|}}}|style="{{{__}}}"}} {{#if:{{{___|}}}|style="{{{___}}}"}} {{!}} Parametr ! {{!}} Opis {{#invoke:Ramka|Powtarzaj|nie rozwiń=| {{!}}- {{((}}#if:{{(((}}nagłówek{{((}}_{{))}}{{!}}{{)))}}{{!}} class{{=}}"OpisParametrów-nagłówek"{{))}} {{!}}{{!}} <div>{{((}}_{{))}}</div> ! {{((}}#if:{{(((}}nagłówek{{((}}_{{))}}{{!}}{{)))}}{{!}}colspan{{=}}"2"{{))}} <!-- --> {{((}}#if:{{(((}}__{{((}}_{{))}}{{!}}{{)))}}{{!}}style{{=}}"{{(((}}__{{((}}_{{))}}{{)))}}"{{))}} <!-- --> {{((}}#if:{{(((}}___{{((}}_{{))}}{{!}}{{)))}}{{!}}class{{=}}"{{(((}}___{{((}}_{{))}}{{)))}}"{{))}} <!-- -->{{!}} <div>{{(((}}{{((}}_{{))}}{{)))}}</div> {{((}}#if:{{(((}}nagłówek{{((}}_{{))}}{{!}}{{)))}}{{!}}{{!}}<!-- --> {{((}}#if:{{(((}}++{{((}}_{{))}}{{!}}{{)))}}{{!}}style{{=}}"{{(((}}++{{((}}_{{))}}{{)))}}"{{))}} <!-- --> {{((}}#if:{{(((}}+++{{((}}_{{))}}{{!}}{{)))}}{{!}}class{{=}}"{{(((}}+++{{((}}_{{))}}{{)))}}"{{))}} <!-- --> {{((}}!{{))}} {{(((}}_{{((}}_{{))}}{{)))}}{{))}}<!-- -->}} |}{{#if:{{{bez dodatkowych sprawdzeń|}}}||{{#invoke:Ramka|Rozwiń|{{((}}#invoke:Sprawdź{{!}}Parametry{{!}}{{=}}problemy-w-szablonie-%s {{((}}(({{))}}Kategoria{{((}}!{{))}}Szablon %s do sprawdzenia{{((}})){{))}}{{!}}klasa{{=}}{{!}}styl{{=}}{{!}}__{{=}}{{#invoke:Ramka|Powtarzaj|po kolei=tak|nie rozwiń=tak|{{!}}{{((}}_{{))}}{{=}}txt!{{!}}__{{((}}_{{))}}{{=}}{{!}}nagłówek{{((}}_{{))}}{{=}}txt?;_{{((}}_{{))}}{{!}}_{{((}}_{{))}}{{=}}txt?!;nagłówek{{((}}_{{))}}}}{{))}} }}}}</includeonly><noinclude>{{Dokumentacja}}</noinclude> az39kdmj49tooy8a0nb6vv3p9m7ro46 555718 555717 2026-09-11T16:36:46Z Persino 2851 555718 wikitext text/x-wiki <includeonly><templatestyles src="Szablon:OpisParametrów/styles.css" /> {| class="wikitable OpisParametrów {{{klasa|}}}" {{#if:{{{styl|}}}|style="{{{styl|}}}"}} |- !{{!}} Lp. ! {{#if:{{{__|}}}|style="{{{__}}}"}} {{#if:{{{___|}}}|style="{{{___}}}"}} {{!}} Parametr ! {{!}} Opis {{#invoke:Ramka|Powtarzaj|nie rozwiń=| {{!}}- {{((}}#if:{{(((}}nagłówek{{((}}_{{))}}{{!}}{{)))}}{{!}} class{{=}}"OpisParametrów-nagłówek"{{))}} {{!}}{{!}} <div>{{((}}_{{))}}</div> ! {{((}}#if:{{(((}}nagłówek{{((}}_{{))}}{{!}}{{)))}}{{!}}colspan{{=}}"2"{{))}} <!-- --> {{((}}#if:{{(((}}__{{((}}_{{))}}{{!}}{{)))}}{{!}}style{{=}}"{{(((}}__{{((}}_{{))}}{{)))}}"{{))}} <!-- --> {{((}}#if:{{(((}}___{{((}}_{{))}}{{!}}{{)))}}{{!}}class{{=}}"{{(((}}___{{((}}_{{))}}{{)))}}"{{))}} <!-- -->{{!}} <div>{{(((}}{{((}}_{{))}}{{)))}}</div> {{((}}#if:{{(((}}nagłówek{{((}}_{{))}}{{!}}{{)))}}{{!}}{{!}}<!-- -->{{((}}!{{))}} <!-- --> {{((}}#if:{{(((}}++{{((}}_{{))}}{{!}}{{)))}}{{!}}style{{=}}"{{(((}}++{{((}}_{{))}}{{)))}}"{{))}} <!-- --> {{((}}#if:{{(((}}+++{{((}}_{{))}}{{!}}{{)))}}{{!}}class{{=}}"{{(((}}+++{{((}}_{{))}}{{)))}}"{{))}} <!-- --> {{((}}!{{))}} {{(((}}_{{((}}_{{))}}{{)))}}<!-- -->{{))}}<!-- -->}} |}{{#if:{{{bez dodatkowych sprawdzeń|}}}||{{#invoke:Ramka|Rozwiń|{{((}}#invoke:Sprawdź{{!}}Parametry{{!}}{{=}}problemy-w-szablonie-%s {{((}}(({{))}}Kategoria{{((}}!{{))}}Szablon %s do sprawdzenia{{((}})){{))}}{{!}}klasa{{=}}{{!}}styl{{=}}{{!}}__{{=}}{{#invoke:Ramka|Powtarzaj|po kolei=tak|nie rozwiń=tak|{{!}}{{((}}_{{))}}{{=}}txt!{{!}}__{{((}}_{{))}}{{=}}{{!}}nagłówek{{((}}_{{))}}{{=}}txt?;_{{((}}_{{))}}{{!}}_{{((}}_{{))}}{{=}}txt?!;nagłówek{{((}}_{{))}}}}{{))}} }}}}</includeonly><noinclude>{{Dokumentacja}}</noinclude> q7tuupdztpbrw4sfavai6cnyxjjd8jk 555719 555718 2026-09-11T16:39:51Z Persino 2851 555719 wikitext text/x-wiki <includeonly><templatestyles src="Szablon:OpisParametrów/styles.css" /> {| class="wikitable OpisParametrów {{{klasa|}}}" {{#if:{{{styl|}}}|style="{{{styl|}}}"}} |- !{{!}} Lp. ! {{#if:{{{__|}}}|style="{{{__}}}"}} {{#if:{{{___|}}}|style="{{{___}}}"}} {{!}} Parametr ! {{!}} Opis {{#invoke:Ramka|Powtarzaj|nie rozwiń=| {{!}}- {{((}}#if:{{(((}}nagłówek{{((}}_{{))}}{{!}}{{)))}}{{!}} class{{=}}"OpisParametrów-nagłówek"{{))}} {{!}}{{!}} <div>{{((}}_{{))}}</div> ! {{((}}#if:{{(((}}nagłówek{{((}}_{{))}}{{!}}{{)))}}{{!}}colspan{{=}}"2"{{))}} <!-- --> {{((}}#if:{{(((}}__{{((}}_{{))}}{{!}}{{)))}}{{!}}style{{=}}"{{(((}}__{{((}}_{{))}}{{)))}}"{{))}} <!-- --> {{((}}#if:{{(((}}___{{((}}_{{))}}{{!}}{{)))}}{{!}}class{{=}}"{{(((}}___{{((}}_{{))}}{{)))}}"{{))}} <!-- -->{{!}} <div>{{(((}}{{((}}_{{))}}{{)))}}</div> {{((}}#if:{{(((}}nagłówek{{((}}_{{))}}{{!}}{{)))}}{{!}}{{!}}<!-- -->{{((}}!{{))}} <!-- --> {{((}}#if:{{(((}}++{{((}}_{{))}}{{!}}{{)))}}{{!}}style{{=}}"{{(((}}++{{((}}_{{))}}{{)))}}"{{))}} <!-- --> {{((}}#if:{{(((}}+++{{((}}_{{))}}{{!}}{{)))}}{{!}}class{{=}}"{{(((}}+++{{((}}_{{))}}{{)))}}"{{))}} <!-- --> {{((}}!{{))}} {{(((}}_{{((}}_{{))}}{{)))}}<!-- -->{{))}}<!-- -->}} |}{{#if:{{{bez dodatkowych sprawdzeń|}}}||{{#invoke:Ramka|Rozwiń|{{((}}#invoke:Sprawdź{{!}}Parametry{{!}}{{=}}problemy-w-szablonie-%s {{((}}(({{))}}Kategoria{{((}}!{{))}}Szablon %s do sprawdzenia{{((}})){{))}}{{!}}klasa{{=}}{{!}}styl{{=}}{{!}}__{{=}}{{!}}___{{=}}{{#invoke:Ramka|Powtarzaj|po kolei=tak|nie rozwiń=tak|{{!}}{{((}}_{{))}}{{=}}txt!{{!}}__{{((}}_{{))}}{{=}}{{!}}___{{((}}_{{))}}{{!}}++{{((}}_{{))}}{{=}}{{!}}+++{{((}}_{{))}}{{!}}nagłówek{{((}}_{{))}}{{=}}txt?;_{{((}}_{{))}}{{!}}_{{((}}_{{))}}{{=}}txt?!;nagłówek{{((}}_{{))}}}}{{))}} }}}}</includeonly><noinclude>{{Dokumentacja}}</noinclude> sloc00epe9al6isth6ys66slmzjouo2 555720 555719 2026-09-11T16:44:39Z Persino 2851 555720 wikitext text/x-wiki <includeonly><templatestyles src="Szablon:OpisParametrów/styles.css" /> {| class="wikitable OpisParametrów {{{klasa|}}}" {{#if:{{{styl|}}}|style="{{{styl|}}}"}} |- !{{!}} Lp. ! {{#if:{{{--|}}}|style="{{{--}}}"}} {{#if:{{{---|}}}|style="{{{---}}}"}} {{!}} Parametr ! {{!}} Opis {{#invoke:Ramka|Powtarzaj|nie rozwiń=| {{!}}- {{((}}#if:{{(((}}nagłówek{{((}}_{{))}}{{!}}{{)))}}{{!}} class{{=}}"OpisParametrów-nagłówek"{{))}} {{!}}{{!}} <div>{{((}}_{{))}}</div> ! {{((}}#if:{{(((}}nagłówek{{((}}_{{))}}{{!}}{{)))}}{{!}}colspan{{=}}"2"{{))}} <!-- --> {{((}}#if:{{(((}}--{{((}}_{{))}}{{!}}{{)))}}{{!}}style{{=}}"{{(((}}--{{((}}_{{))}}{{)))}}"{{))}} <!-- --> {{((}}#if:{{(((}}---{{((}}_{{))}}{{!}}{{)))}}{{!}}class{{=}}"{{(((}}---{{((}}_{{))}}{{)))}}"{{))}} <!-- -->{{!}} <div>{{(((}}{{((}}_{{))}}{{)))}}</div> {{((}}#if:{{(((}}nagłówek{{((}}_{{))}}{{!}}{{)))}}{{!}}{{!}}<!-- --> {{((}}#if:{{(((}}++{{((}}_{{))}}{{!}}{{)))}}{{!}}style{{=}}"{{(((}}++{{((}}_{{))}}{{)))}}"{{))}} <!-- --> {{((}}#if:{{(((}}+++{{((}}_{{))}}{{!}}{{)))}}{{!}}class{{=}}"{{(((}}+++{{((}}_{{))}}{{)))}}"{{))}} <!-- --> {{((}}!{{))}} {{(((}}_{{((}}_{{))}}{{)))}}{{))}}<!-- -->}} |}{{#if:{{{bez dodatkowych sprawdzeń|}}}||{{#invoke:Ramka|Rozwiń|{{((}}#invoke:Sprawdź{{!}}Parametry{{!}}{{=}}problemy-w-szablonie-%s {{((}}(({{))}}Kategoria{{((}}!{{))}}Szablon %s do sprawdzenia{{((}})){{))}}{{!}}klasa{{=}}{{!}}styl{{=}}{{!}}--{{=}}{{!}}---{{=}}{{#invoke:Ramka|Powtarzaj|po kolei=tak|nie rozwiń=tak|{{!}}{{((}}_{{))}}{{=}}txt!{{!}}--{{((}}_{{))}}{{=}}{{!}}---{{((}}_{{))}}{{=}}{{!}}++{{((}}_{{))}}{{=}}{{!}}+++{{((}}_{{))}}{{=}}{{!}}nagłówek{{((}}_{{))}}{{=}}txt?;_{{((}}_{{))}}{{!}}_{{((}}_{{))}}{{=}}txt?!;nagłówek{{((}}_{{))}}}}{{))}} }}}}</includeonly><noinclude>{{Dokumentacja}}</noinclude> 4mhr9utdpewrnf3etgzxhr52h9kzoa0 555721 555720 2026-09-11T16:47:04Z Persino 2851 555721 wikitext text/x-wiki <includeonly><templatestyles src="Szablon:OpisParametrów/styles.css" /> {| class="wikitable OpisParametrów {{{klasa|}}}" {{#if:{{{styl|}}}|style="{{{styl|}}}"}} |- !{{!}} Lp. ! {{#if:{{{--|}}}|style="{{{--}}}"}} {{#if:{{{---|}}}|style="{{{---}}}"}} {{!}} Parametr ! {{!}} Opis {{#invoke:Ramka|Powtarzaj|nie rozwiń=| {{!}}- {{((}}#if:{{(((}}nagłówek{{((}}_{{))}}{{!}}{{)))}}{{!}} class{{=}}"OpisParametrów-nagłówek"{{))}} {{!}}{{!}} <div>{{((}}_{{))}}</div> ! {{((}}#if:{{(((}}nagłówek{{((}}_{{))}}{{!}}{{)))}}{{!}}colspan{{=}}"2"{{))}} <!-- --> {{((}}#if:{{(((}}--{{((}}_{{))}}{{!}}{{)))}}{{!}}style{{=}}"{{(((}}--{{((}}_{{))}}{{)))}}"{{))}} <!-- --> {{((}}#if:{{(((}}---{{((}}_{{))}}{{!}}{{)))}}{{!}}class{{=}}"{{(((}}---{{((}}_{{))}}{{)))}}"{{))}} <!-- -->{{!}} <div>{{(((}}{{((}}_{{))}}{{)))}}</div> {{((}}#if:{{(((}}nagłówek{{((}}_{{))}}{{!}}{{)))}}{{!}}{{!}}<!-- -->{{((}}!{{))}} <!- --> {{((}}#if:{{(((}}++{{((}}_{{))}}{{!}}{{)))}}{{!}}style{{=}}"{{(((}}++{{((}}_{{))}}{{)))}}"{{))}} <!-- --> {{((}}#if:{{(((}}+++{{((}}_{{))}}{{!}}{{)))}}{{!}}class{{=}}"{{(((}}+++{{((}}_{{))}}{{)))}}"{{))}} <!-- --> {{((}}!{{))}} {{(((}}_{{((}}_{{))}}{{)))}}{{))}}<!-- -->}} |}{{#if:{{{bez dodatkowych sprawdzeń|}}}||{{#invoke:Ramka|Rozwiń|{{((}}#invoke:Sprawdź{{!}}Parametry{{!}}{{=}}problemy-w-szablonie-%s {{((}}(({{))}}Kategoria{{((}}!{{))}}Szablon %s do sprawdzenia{{((}})){{))}}{{!}}klasa{{=}}{{!}}styl{{=}}{{!}}--{{=}}{{!}}---{{=}}{{#invoke:Ramka|Powtarzaj|po kolei=tak|nie rozwiń=tak|{{!}}{{((}}_{{))}}{{=}}txt!{{!}}--{{((}}_{{))}}{{=}}{{!}}---{{((}}_{{))}}{{=}}{{!}}++{{((}}_{{))}}{{=}}{{!}}+++{{((}}_{{))}}{{=}}{{!}}nagłówek{{((}}_{{))}}{{=}}txt?;_{{((}}_{{))}}{{!}}_{{((}}_{{))}}{{=}}txt?!;nagłówek{{((}}_{{))}}}}{{))}} }}}}</includeonly><noinclude>{{Dokumentacja}}</noinclude> cf3mt51vgv1zhbk6b5uhikylp1dlynw 555722 555721 2026-09-11T16:47:39Z Persino 2851 555722 wikitext text/x-wiki <includeonly><templatestyles src="Szablon:OpisParametrów/styles.css" /> {| class="wikitable OpisParametrów {{{klasa|}}}" {{#if:{{{styl|}}}|style="{{{styl|}}}"}} |- !{{!}} Lp. ! {{#if:{{{--|}}}|style="{{{--}}}"}} {{#if:{{{---|}}}|style="{{{---}}}"}} {{!}} Parametr ! {{!}} Opis {{#invoke:Ramka|Powtarzaj|nie rozwiń=| {{!}}- {{((}}#if:{{(((}}nagłówek{{((}}_{{))}}{{!}}{{)))}}{{!}} class{{=}}"OpisParametrów-nagłówek"{{))}} {{!}}{{!}} <div>{{((}}_{{))}}</div> ! {{((}}#if:{{(((}}nagłówek{{((}}_{{))}}{{!}}{{)))}}{{!}}colspan{{=}}"2"{{))}} <!-- --> {{((}}#if:{{(((}}--{{((}}_{{))}}{{!}}{{)))}}{{!}}style{{=}}"{{(((}}--{{((}}_{{))}}{{)))}}"{{))}} <!-- --> {{((}}#if:{{(((}}---{{((}}_{{))}}{{!}}{{)))}}{{!}}class{{=}}"{{(((}}---{{((}}_{{))}}{{)))}}"{{))}} <!-- -->{{!}} <div>{{(((}}{{((}}_{{))}}{{)))}}</div> {{((}}#if:{{(((}}nagłówek{{((}}_{{))}}{{!}}{{)))}}{{!}}{{!}}<!-- -->{{((}}!{{))}} <!-- --> {{((}}#if:{{(((}}++{{((}}_{{))}}{{!}}{{)))}}{{!}}style{{=}}"{{(((}}++{{((}}_{{))}}{{)))}}"{{))}} <!-- --> {{((}}#if:{{(((}}+++{{((}}_{{))}}{{!}}{{)))}}{{!}}class{{=}}"{{(((}}+++{{((}}_{{))}}{{)))}}"{{))}} <!-- --> {{((}}!{{))}} {{(((}}_{{((}}_{{))}}{{)))}}{{))}}<!-- -->}} |}{{#if:{{{bez dodatkowych sprawdzeń|}}}||{{#invoke:Ramka|Rozwiń|{{((}}#invoke:Sprawdź{{!}}Parametry{{!}}{{=}}problemy-w-szablonie-%s {{((}}(({{))}}Kategoria{{((}}!{{))}}Szablon %s do sprawdzenia{{((}})){{))}}{{!}}klasa{{=}}{{!}}styl{{=}}{{!}}--{{=}}{{!}}---{{=}}{{#invoke:Ramka|Powtarzaj|po kolei=tak|nie rozwiń=tak|{{!}}{{((}}_{{))}}{{=}}txt!{{!}}--{{((}}_{{))}}{{=}}{{!}}---{{((}}_{{))}}{{=}}{{!}}++{{((}}_{{))}}{{=}}{{!}}+++{{((}}_{{))}}{{=}}{{!}}nagłówek{{((}}_{{))}}{{=}}txt?;_{{((}}_{{))}}{{!}}_{{((}}_{{))}}{{=}}txt?!;nagłówek{{((}}_{{))}}}}{{))}} }}}}</includeonly><noinclude>{{Dokumentacja}}</noinclude> gn15q7694t53ww4jno55u319d8tucv7 555723 555722 2026-09-11T16:50:07Z Persino 2851 555723 wikitext text/x-wiki <includeonly><templatestyles src="Szablon:OpisParametrów/styles.css" /> {| class="wikitable OpisParametrów {{{klasa|}}}" {{#if:{{{styl|}}}|style="{{{styl|}}}"}} |- !{{!}} Lp. ! {{#if:{{{--|}}}|style="{{{--}}}"}} {{#if:{{{---|}}}|style="{{{---}}}"}} {{!}} Parametr ! {{!}} Opis {{#invoke:Ramka|Powtarzaj|nie rozwiń=| {{!}}- {{((}}#if:{{(((}}nagłówek{{((}}_{{))}}{{!}}{{)))}}{{!}} class{{=}}"OpisParametrów-nagłówek"{{))}} {{!}}{{!}} <div>{{((}}_{{))}}</div> ! {{((}}#if:{{(((}}nagłówek{{((}}_{{))}}{{!}}{{)))}}{{!}}colspan{{=}}"2"{{))}} <!-- --> {{((}}#if:{{(((}}--{{((}}_{{))}}{{!}}{{)))}}{{!}}style{{=}}"{{(((}}--{{((}}_{{))}}{{)))}}"{{))}} <!-- --> {{((}}#if:{{(((}}---{{((}}_{{))}}{{!}}{{)))}}{{!}}class{{=}}"{{(((}}---{{((}}_{{))}}{{)))}}"{{))}} <!-- -->{{!}} <div>{{(((}}{{((}}_{{))}}{{)))}}</div> {{((}}#if:{{(((}}nagłówek{{((}}_{{))}}{{!}}{{)))}}{{!}}{{!}}<!-- -->{{((}}!{{))}} <!-- --> {{((}}#if:{{(((}}++{{((}}_{{))}}{{!}}{{)))}}{{!}}style{{=}}"{{(((}}++{{((}}_{{))}}{{)))}}"{{))}} <!-- --> {{((}}#if:{{(((}}+++{{((}}_{{))}}{{!}}{{)))}}{{!}}class{{=}}"{{(((}}+++{{((}}_{{))}}{{)))}}"{{))}} <!-- --> {{((}}!{{))}} <div>{{(((}}_{{((}}_{{))}}{{)))}}</div><!-- -->>{{))}}<!-- -->}} |}{{#if:{{{bez dodatkowych sprawdzeń|}}}||{{#invoke:Ramka|Rozwiń|{{((}}#invoke:Sprawdź{{!}}Parametry{{!}}{{=}}problemy-w-szablonie-%s {{((}}(({{))}}Kategoria{{((}}!{{))}}Szablon %s do sprawdzenia{{((}})){{))}}{{!}}klasa{{=}}{{!}}styl{{=}}{{!}}--{{=}}{{!}}---{{=}}{{#invoke:Ramka|Powtarzaj|po kolei=tak|nie rozwiń=tak|{{!}}{{((}}_{{))}}{{=}}txt!{{!}}--{{((}}_{{))}}{{=}}{{!}}---{{((}}_{{))}}{{=}}{{!}}++{{((}}_{{))}}{{=}}{{!}}+++{{((}}_{{))}}{{=}}{{!}}nagłówek{{((}}_{{))}}{{=}}txt?;_{{((}}_{{))}}{{!}}_{{((}}_{{))}}{{=}}txt?!;nagłówek{{((}}_{{))}}}}{{))}} }}}}</includeonly><noinclude>{{Dokumentacja}}</noinclude> 0twrc0eon92hq64v13m41hnr9033s0e 555724 555723 2026-09-11T16:51:21Z Persino 2851 555724 wikitext text/x-wiki <includeonly><templatestyles src="Szablon:OpisParametrów/styles.css" /> {| class="wikitable OpisParametrów {{{klasa|}}}" {{#if:{{{styl|}}}|style="{{{styl|}}}"}} |- !{{!}} Lp. ! {{#if:{{{--|}}}|style="{{{--}}}"}} {{#if:{{{---|}}}|style="{{{---}}}"}} {{!}} Parametr ! {{!}} Opis {{#invoke:Ramka|Powtarzaj|nie rozwiń=| {{!}}- {{((}}#if:{{(((}}nagłówek{{((}}_{{))}}{{!}}{{)))}}{{!}} class{{=}}"OpisParametrów-nagłówek"{{))}} {{!}}{{!}} <div>{{((}}_{{))}}</div> ! {{((}}#if:{{(((}}nagłówek{{((}}_{{))}}{{!}}{{)))}}{{!}}colspan{{=}}"2"{{))}} <!-- --> {{((}}#if:{{(((}}--{{((}}_{{))}}{{!}}{{)))}}{{!}}style{{=}}"{{(((}}--{{((}}_{{))}}{{)))}}"{{))}} <!-- --> {{((}}#if:{{(((}}---{{((}}_{{))}}{{!}}{{)))}}{{!}}class{{=}}"{{(((}}---{{((}}_{{))}}{{)))}}"{{))}} <!-- -->{{!}} <div>{{(((}}{{((}}_{{))}}{{)))}}</div> {{((}}#if:{{(((}}nagłówek{{((}}_{{))}}{{!}}{{)))}}{{!}}{{!}}<!-- -->{{((}}!{{))}} <!-- --> {{((}}#if:{{(((}}++{{((}}_{{))}}{{!}}{{)))}}{{!}}style{{=}}"{{(((}}++{{((}}_{{))}}{{)))}}"{{))}} <!-- --> {{((}}#if:{{(((}}+++{{((}}_{{))}}{{!}}{{)))}}{{!}}class{{=}}"{{(((}}+++{{((}}_{{))}}{{)))}}"{{))}} <!-- --> {{((}}!{{))}} <div>{{(((}}_{{((}}_{{))}}{{)))}}</div><!-- -->{{))}}<!-- -->}} |}{{#if:{{{bez dodatkowych sprawdzeń|}}}||{{#invoke:Ramka|Rozwiń|{{((}}#invoke:Sprawdź{{!}}Parametry{{!}}{{=}}problemy-w-szablonie-%s {{((}}(({{))}}Kategoria{{((}}!{{))}}Szablon %s do sprawdzenia{{((}})){{))}}{{!}}klasa{{=}}{{!}}styl{{=}}{{!}}--{{=}}{{!}}---{{=}}{{#invoke:Ramka|Powtarzaj|po kolei=tak|nie rozwiń=tak|{{!}}{{((}}_{{))}}{{=}}txt!{{!}}--{{((}}_{{))}}{{=}}{{!}}---{{((}}_{{))}}{{=}}{{!}}++{{((}}_{{))}}{{=}}{{!}}+++{{((}}_{{))}}{{=}}{{!}}nagłówek{{((}}_{{))}}{{=}}txt?;_{{((}}_{{))}}{{!}}_{{((}}_{{))}}{{=}}txt?!;nagłówek{{((}}_{{))}}}}{{))}} }}}}</includeonly><noinclude>{{Dokumentacja}}</noinclude> t16qinpyvpr748txpwoha9qzebd2k8k 555727 555724 2026-09-11T17:24:51Z Persino 2851 555727 wikitext text/x-wiki <includeonly><templatestyles src="Szablon:OpisParametrów/styles.css" /> {| class="wikitable OpisParametrów {{{klasa|}}}" {{#if:{{{styl|}}}|style="{{{styl|}}}"}} |- !{{!}} Lp. ! {{#if:{{{--|}}}|style="{{{--}}}"}} {{#if:{{{---|}}}|style="{{{---}}}"}} {{!}} Parametr ! {{!}} Opis {{#invoke:Ramka|Powtarzaj|nie rozwiń=| {{!}}- <!-- -->{{((}}#if:{{(((}}nagłówek{{((}}_{{))}}{{!}}{{)))}}{{!}}<!-- -->class{{=}}"OpisParametrów-nagłówek {{(((}}___{{((}}_{{))}}{{!}}{{)))}}"{{!}}<!-- -->{{((}}#if:{{(((}}___{{((}}_{{))}}{{!}}{{)))}}{{!}}class{{=}}"{{(((}}___{{((}}_{{))}}{{)))}}"{{))}}<!-- -->{{))}} <!-- -->{{((}}#if:{{(((}}__{{((}}_{{))}}{{!}}{{)))}}{{!}}style{{=}}"{{(((}}__{{((}}_{{))}}{{)))}}"{{))}} {{!}}{{!}} <div>{{((}}_{{))}}</div> ! {{((}}#if:{{(((}}nagłówek{{((}}_{{))}}{{!}}{{)))}}{{!}}colspan{{=}}"2"{{))}} <!-- --> {{((}}#if:{{(((}}--{{((}}_{{))}}{{!}}{{)))}}{{!}}style{{=}}"{{(((}}--{{((}}_{{))}}{{)))}}"{{))}} <!-- --> {{((}}#if:{{(((}}---{{((}}_{{))}}{{!}}{{)))}}{{!}}class{{=}}"{{(((}}---{{((}}_{{))}}{{)))}}"{{))}} <!-- -->{{!}} <div>{{(((}}{{((}}_{{))}}{{)))}}</div> {{((}}#if:{{(((}}nagłówek{{((}}_{{))}}{{!}}{{)))}}{{!}}{{!}}<!-- -->{{((}}!{{))}} <!-- --> {{((}}#if:{{(((}}++{{((}}_{{))}}{{!}}{{)))}}{{!}}style{{=}}"{{(((}}++{{((}}_{{))}}{{)))}}"{{))}} <!-- --> {{((}}#if:{{(((}}+++{{((}}_{{))}}{{!}}{{)))}}{{!}}class{{=}}"{{(((}}+++{{((}}_{{))}}{{)))}}"{{))}} <!-- --> {{((}}!{{))}} <div>{{(((}}_{{((}}_{{))}}{{)))}}</div><!-- -->{{))}}<!-- -->}} |}{{#if:{{{bez dodatkowych sprawdzeń|}}}||{{#invoke:Ramka|Rozwiń|{{((}}#invoke:Sprawdź{{!}}Parametry{{!}}{{=}}problemy-w-szablonie-%s {{((}}(({{))}}Kategoria{{((}}!{{))}}Szablon %s do sprawdzenia{{((}})){{))}}{{!}}klasa{{=}}{{!}}styl{{=}}{{!}}--{{=}}{{!}}---{{=}}{{#invoke:Ramka|Powtarzaj|po kolei=tak|nie rozwiń=tak|{{!}}{{((}}_{{))}}{{=}}txt!{{!}}--{{((}}_{{))}}{{=}}{{!}}---{{((}}_{{))}}{{=}}{{!}}++{{((}}_{{))}}{{=}}{{!}}+++{{((}}_{{))}}{{=}}{{!}}__{{((}}_{{))}}{{=}}{{!}}___{{((}}_{{))}}{{=}}{{!}}nagłówek{{((}}_{{))}}{{=}}txt?;_{{((}}_{{))}}{{!}}_{{((}}_{{))}}{{=}}txt?!;nagłówek{{((}}_{{))}}}}{{))}} }}}}</includeonly><noinclude>{{Dokumentacja}}</noinclude> dzzxilvb6zqt1a7mrkcqf7wp31dcv88 Szablon:OpisParametrów/styles.css 10 64147 555673 555664 2026-09-11T13:09:48Z Persino 2851 555673 sanitized-css text/css table.OpisParametrów{ margin-top:0; margin-right:0; margin-left:0; width:100%; box-sizing:border-box; } table.OpisParametrów{ display:flex; flex-direction:row; width:auto; max-width:100%; flex-shrink: 1; border:0; overflow:auto; } table.OpisParametrów > tbody > tr.OpisParametrów-nagłówek > th, table.OpisParametrów > tbody > tr.OpisParametrów-nagłówek > th span.link > a{ text-align:center !important; color:white; background-color:black; } table.OpisParametrów > tbody > tr.OpisParametrów-nagłówek > th span.link > a{ text-decoration:underline; } table.OpisParametrów > tbody > tr.OpisParametrów-nagłówek > th code{ color:unset; background-color:unset; } table.OpisParametrów > tbody{ display:table; width:100%; } table.OpisParametrów > tbody > tr:first-child > th:first-child{ width:2%; white-space:nowrap; text-align:center; } table.OpisParametrów > tbody > tr:first-child > th:first-child + th{ width:30%; } table.OpisParametrów > tbody > tr:first-child ~ tr > td:first-child{ text-align:center; } table.OpisParametrów > tbody > tr:first-child ~ tr > td:first-child + th{ text-align:left; font-weight:normal; } table.OpisParametrów > tbody > tr:first-child ~ tr > td:first-child + th + td{ text-align:left; } table.OpisParametrów > tbody > tr:not(.OpisParametrów-nagłówek) > *:first-child + *{ white-space:nowrap; } @media all and (max-width:745px), all and (max-device-height:745px){ table.OpisParametrów{ display:flex !important; flex-direction:row; width:100%; } table.OpisParametrów, table.OpisParametrów > tbody, table.OpisParametrów > tbody > tr, table.OpisParametrów > tbody > tr > th, table.OpisParametrów > tbody > tr > td{ box-sizing:border-box; } table.OpisParametrów > tbody{ display:flex !important; flex-direction:column; width:100%; } table.OpisParametrów > tbody > tr{ display:flex !important; flex-direction:row; flex-wrap:wrap; width:100%; } table.OpisParametrów > tbody > tr> th:not(:first-child), table.OpisParametrów > tbody > tr> td:not(:first-child){ display:block !important; } table.OpisParametrów > tbody > tr > *:first-child{ max-width:2rem !important; width:100% !important; display:flex !important; flex-direction:column; align-items: stretch; justify-content: center; } table.OpisParametrów > tbody > tr:first-child > *:first-child + *{ max-width:5rem !important; width:100% !important; border-left:0; } table.OpisParametrów > tbody > tr:first-child > *:first-child + * ~ *{ border-left:0; } table.OpisParametrów > tbody > tr:first-child > *:first-child + * ~*{ max-width:calc( 100% - 2rem - 5rem) !important; width:100% !important; border-left:0; } table.OpisParametrów > tbody > tr:not(:first-child) > *:first-child + *{ max-width:calc( 100% - 2rem) !important; width:100% !important; border-left:0; } table.OpisParametrów > tbody > tr:not(.OpisParametrów-nagłówek):last-child > *:first-child, table.OpisParametrów > tbody > tr:not(:last-child) > *:first-child, table.OpisParametrów > tbody > tr > *:first-child + *, table.OpisParametrów > tbody > tr:not(:last-child) > *:first-child + * ~ *{ border-bottom:0; } table.OpisParametrów > tbody > tr > *:first-child + * ~ *{ width:100% !important; } table.OpisParametrów > tbody > tr:not(.OpisParametrów-nagłówek) > *:first-child + *{ white-space:normal; } } /*{{Kategoria|Szablony - arkusze stylów}}*/ fb7hzuzkh2n3j8idr7xgty6d54m5bvb 555674 555673 2026-09-11T13:12:34Z Persino 2851 555674 sanitized-css text/css table.OpisParametrów{ margin-top:0; margin-right:0; margin-left:0; width:100%; box-sizing:border-box; } table.OpisParametrów{ display:flex; flex-direction:row; width:auto; max-width:100%; flex-shrink: 1; border:0; overflow:auto; } table.OpisParametrów > tbody > tr.OpisParametrów-nagłówek > th, table.OpisParametrów > tbody > tr.OpisParametrów-nagłówek > th span.link > a{ text-align:center !important; color:white; background-color:black; } table.OpisParametrów > tbody > tr.OpisParametrów-nagłówek > th span.link > a{ text-decoration:underline; } table.OpisParametrów > tbody > tr.OpisParametrów-nagłówek > th code{ color:unset; background-color:unset; } table.OpisParametrów > tbody{ display:table; width:100%; } table.OpisParametrów > tbody > tr:first-child > th:first-child{ width:2%; white-space:nowrap; text-align:center; } table.OpisParametrów > tbody > tr:first-child > th:first-child + th{ width:30%; } table.OpisParametrów > tbody > tr:first-child ~ tr > td:first-child{ text-align:center; } table.OpisParametrów > tbody > tr:first-child ~ tr > td:first-child + th{ text-align:left; font-weight:normal; } table.OpisParametrów > tbody > tr:first-child ~ tr > td:first-child + th + td{ text-align:left; } table.OpisParametrów.Opis-Szerokość > tbody > tr:not(.OpisParametrów-nagłówek) > *:first-child + *{ width:40%; } @media all and (max-width:745px), all and (max-device-height:745px){ table.OpisParametrów{ display:flex !important; flex-direction:row; width:100%; } table.OpisParametrów, table.OpisParametrów > tbody, table.OpisParametrów > tbody > tr, table.OpisParametrów > tbody > tr > th, table.OpisParametrów > tbody > tr > td{ box-sizing:border-box; } table.OpisParametrów > tbody{ display:flex !important; flex-direction:column; width:100%; } table.OpisParametrów > tbody > tr{ display:flex !important; flex-direction:row; flex-wrap:wrap; width:100%; } table.OpisParametrów > tbody > tr> th:not(:first-child), table.OpisParametrów > tbody > tr> td:not(:first-child){ display:block !important; } table.OpisParametrów > tbody > tr > *:first-child{ max-width:2rem !important; width:100% !important; display:flex !important; flex-direction:column; align-items: stretch; justify-content: center; } table.OpisParametrów > tbody > tr:first-child > *:first-child + *{ max-width:5rem !important; width:100% !important; border-left:0; } table.OpisParametrów > tbody > tr:first-child > *:first-child + * ~ *{ border-left:0; } table.OpisParametrów > tbody > tr:first-child > *:first-child + * ~*{ max-width:calc( 100% - 2rem - 5rem) !important; width:100% !important; border-left:0; } table.OpisParametrów > tbody > tr:not(:first-child) > *:first-child + *{ max-width:calc( 100% - 2rem) !important; width:100% !important; border-left:0; } table.OpisParametrów > tbody > tr:not(.OpisParametrów-nagłówek):last-child > *:first-child, table.OpisParametrów > tbody > tr:not(:last-child) > *:first-child, table.OpisParametrów > tbody > tr > *:first-child + *, table.OpisParametrów > tbody > tr:not(:last-child) > *:first-child + * ~ *{ border-bottom:0; } table.OpisParametrów > tbody > tr > *:first-child + * ~ *{ width:100% !important; } } /*{{Kategoria|Szablony - arkusze stylów}}*/ 0aohmivupfyiqhxfrav1w7x1tog8ecg 555677 555674 2026-09-11T13:15:05Z Persino 2851 555677 sanitized-css text/css table.OpisParametrów{ margin-top:0; margin-right:0; margin-left:0; width:100%; box-sizing:border-box; } table.OpisParametrów{ display:flex; flex-direction:row; width:auto; max-width:100%; flex-shrink: 1; border:0; overflow:auto; } table.OpisParametrów > tbody > tr.OpisParametrów-nagłówek > th, table.OpisParametrów > tbody > tr.OpisParametrów-nagłówek > th span.link > a{ text-align:center !important; color:white; background-color:black; } table.OpisParametrów > tbody > tr.OpisParametrów-nagłówek > th span.link > a{ text-decoration:underline; } table.OpisParametrów > tbody > tr.OpisParametrów-nagłówek > th code{ color:unset; background-color:unset; } table.OpisParametrów > tbody{ display:table; width:100%; } table.OpisParametrów > tbody > tr:first-child > th:first-child{ width:2%; white-space:nowrap; text-align:center; } table.OpisParametrów > tbody > tr:first-child > th:first-child + th{ width:30%; } table.OpisParametrów > tbody > tr:first-child ~ tr > td:first-child{ text-align:center; } table.OpisParametrów > tbody > tr:first-child ~ tr > td:first-child + th{ text-align:left; font-weight:normal; } table.OpisParametrów > tbody > tr:first-child ~ tr > td:first-child + th + td{ text-align:left; } table.OpisParametrów.Opis-Szerokość-1 > tbody > tr:not(.OpisParametrów-nagłówek) > *:first-child + *{ width:35%; } @media all and (max-width:745px), all and (max-device-height:745px){ table.OpisParametrów{ display:flex !important; flex-direction:row; width:100%; } table.OpisParametrów, table.OpisParametrów > tbody, table.OpisParametrów > tbody > tr, table.OpisParametrów > tbody > tr > th, table.OpisParametrów > tbody > tr > td{ box-sizing:border-box; } table.OpisParametrów > tbody{ display:flex !important; flex-direction:column; width:100%; } table.OpisParametrów > tbody > tr{ display:flex !important; flex-direction:row; flex-wrap:wrap; width:100%; } table.OpisParametrów > tbody > tr> th:not(:first-child), table.OpisParametrów > tbody > tr> td:not(:first-child){ display:block !important; } table.OpisParametrów > tbody > tr > *:first-child{ max-width:2rem !important; width:100% !important; display:flex !important; flex-direction:column; align-items: stretch; justify-content: center; } table.OpisParametrów > tbody > tr:first-child > *:first-child + *{ max-width:5rem !important; width:100% !important; border-left:0; } table.OpisParametrów > tbody > tr:first-child > *:first-child + * ~ *{ border-left:0; } table.OpisParametrów > tbody > tr:first-child > *:first-child + * ~*{ max-width:calc( 100% - 2rem - 5rem) !important; width:100% !important; border-left:0; } table.OpisParametrów > tbody > tr:not(:first-child) > *:first-child + *{ max-width:calc( 100% - 2rem) !important; width:100% !important; border-left:0; } table.OpisParametrów > tbody > tr:not(.OpisParametrów-nagłówek):last-child > *:first-child, table.OpisParametrów > tbody > tr:not(:last-child) > *:first-child, table.OpisParametrów > tbody > tr > *:first-child + *, table.OpisParametrów > tbody > tr:not(:last-child) > *:first-child + * ~ *{ border-bottom:0; } table.OpisParametrów > tbody > tr > *:first-child + * ~ *{ width:100% !important; } } /*{{Kategoria|Szablony - arkusze stylów}}*/ ahp480vy6va6ws3zjlzukp976zasku1 555680 555677 2026-09-11T13:22:44Z Persino 2851 555680 sanitized-css text/css table.OpisParametrów{ margin-top:0; margin-right:0; margin-left:0; width:100%; box-sizing:border-box; } table.OpisParametrów{ display:flex; flex-direction:row; width:auto; max-width:100%; flex-shrink: 1; border:0; overflow:auto; } table.OpisParametrów > tbody > tr.OpisParametrów-nagłówek > th, table.OpisParametrów > tbody > tr.OpisParametrów-nagłówek > th span.link > a{ text-align:center !important; color:white; background-color:black; } table.OpisParametrów > tbody > tr.OpisParametrów-nagłówek > th span.link > a{ text-decoration:underline; } table.OpisParametrów > tbody > tr.OpisParametrów-nagłówek > th code{ color:unset; background-color:unset; } table.OpisParametrów > tbody{ display:table; width:100%; } table.OpisParametrów > tbody > tr:first-child > th:first-child{ width:2%; white-space:nowrap; text-align:center; } table.OpisParametrów > tbody > tr:first-child > th:first-child + th{ width:30%; } table.OpisParametrów > tbody > tr:first-child ~ tr > td:first-child{ text-align:center; } table.OpisParametrów > tbody > tr:first-child ~ tr > td:first-child + th{ text-align:left; font-weight:normal; } table.OpisParametrów > tbody > tr:first-child ~ tr > td:first-child + th + td{ text-align:left; } table.OpisParametrów.Opis-Szerokość-1 > tbody > tr:not(.OpisParametrów-nagłówek) > *:first-child + *{ min-width:10rem; } @media all and (max-width:745px), all and (max-device-height:745px){ table.OpisParametrów{ display:flex !important; flex-direction:row; width:100%; } table.OpisParametrów, table.OpisParametrów > tbody, table.OpisParametrów > tbody > tr, table.OpisParametrów > tbody > tr > th, table.OpisParametrów > tbody > tr > td{ box-sizing:border-box; } table.OpisParametrów > tbody{ display:flex !important; flex-direction:column; width:100%; } table.OpisParametrów > tbody > tr{ display:flex !important; flex-direction:row; flex-wrap:wrap; width:100%; } table.OpisParametrów > tbody > tr> th:not(:first-child), table.OpisParametrów > tbody > tr> td:not(:first-child){ display:block !important; } table.OpisParametrów > tbody > tr > *:first-child{ max-width:2rem !important; width:100% !important; display:flex !important; flex-direction:column; align-items: stretch; justify-content: center; } table.OpisParametrów > tbody > tr:first-child > *:first-child + *{ max-width:5rem !important; width:100% !important; border-left:0; } table.OpisParametrów > tbody > tr:first-child > *:first-child + * ~ *{ border-left:0; } table.OpisParametrów > tbody > tr:first-child > *:first-child + * ~*{ max-width:calc( 100% - 2rem - 5rem) !important; width:100% !important; border-left:0; } table.OpisParametrów > tbody > tr:not(:first-child) > *:first-child + *{ max-width:calc( 100% - 2rem) !important; width:100% !important; border-left:0; } table.OpisParametrów > tbody > tr:not(.OpisParametrów-nagłówek):last-child > *:first-child, table.OpisParametrów > tbody > tr:not(:last-child) > *:first-child, table.OpisParametrów > tbody > tr > *:first-child + *, table.OpisParametrów > tbody > tr:not(:last-child) > *:first-child + * ~ *{ border-bottom:0; } table.OpisParametrów > tbody > tr > *:first-child + * ~ *{ width:100% !important; } table.OpisParametrów.Opis-Szerokość-1 > tbody > tr:not(.OpisParametrów-nagłówek) > *:first-child + *{ min-width:auto; } } /*{{Kategoria|Szablony - arkusze stylów}}*/ 6f7csx557fb9d40o0y0w7t4s51dysbn 555681 555680 2026-09-11T13:26:07Z Persino 2851 555681 sanitized-css text/css table.OpisParametrów{ margin-top:0; margin-right:0; margin-left:0; width:100%; box-sizing:border-box; } table.OpisParametrów{ display:flex; flex-direction:row; width:auto; max-width:100%; flex-shrink: 1; border:0; overflow:auto; } table.OpisParametrów > tbody > tr.OpisParametrów-nagłówek > th, table.OpisParametrów > tbody > tr.OpisParametrów-nagłówek > th span.link > a{ text-align:center !important; color:white; background-color:black; } table.OpisParametrów > tbody > tr.OpisParametrów-nagłówek > th span.link > a{ text-decoration:underline; } table.OpisParametrów > tbody > tr.OpisParametrów-nagłówek > th code{ color:unset; background-color:unset; } table.OpisParametrów > tbody{ display:table; width:100%; } table.OpisParametrów > tbody > tr:first-child > th:first-child{ width:2%; white-space:nowrap; text-align:center; } table.OpisParametrów > tbody > tr:first-child > th:first-child + th{ width:30%; } table.OpisParametrów > tbody > tr:first-child ~ tr > td:first-child{ text-align:center; } table.OpisParametrów > tbody > tr:first-child ~ tr > td:first-child + th{ text-align:left; font-weight:normal; } table.OpisParametrów > tbody > tr:first-child ~ tr > td:first-child + th + td{ text-align:left; } table.OpisParametrów.Opis-Szerokość-1 > tbody > tr:not(.OpisParametrów-nagłówek) > *:first-child + *{ min-width:10rem; width:30%; } @media all and (max-width:745px), all and (max-device-height:745px){ table.OpisParametrów{ display:flex !important; flex-direction:row; width:100%; } table.OpisParametrów, table.OpisParametrów > tbody, table.OpisParametrów > tbody > tr, table.OpisParametrów > tbody > tr > th, table.OpisParametrów > tbody > tr > td{ box-sizing:border-box; } table.OpisParametrów > tbody{ display:flex !important; flex-direction:column; width:100%; } table.OpisParametrów > tbody > tr{ display:flex !important; flex-direction:row; flex-wrap:wrap; width:100%; } table.OpisParametrów > tbody > tr> th:not(:first-child), table.OpisParametrów > tbody > tr> td:not(:first-child){ display:block !important; } table.OpisParametrów > tbody > tr > *:first-child{ max-width:2rem !important; width:100% !important; display:flex !important; flex-direction:column; align-items: stretch; justify-content: center; } table.OpisParametrów > tbody > tr:first-child > *:first-child + *{ max-width:5rem !important; width:100% !important; border-left:0; } table.OpisParametrów > tbody > tr:first-child > *:first-child + * ~ *{ border-left:0; } table.OpisParametrów > tbody > tr:first-child > *:first-child + * ~*{ max-width:calc( 100% - 2rem - 5rem) !important; width:100% !important; border-left:0; } table.OpisParametrów > tbody > tr:not(:first-child) > *:first-child + *{ max-width:calc( 100% - 2rem) !important; width:100% !important; border-left:0; } table.OpisParametrów > tbody > tr:not(.OpisParametrów-nagłówek):last-child > *:first-child, table.OpisParametrów > tbody > tr:not(:last-child) > *:first-child, table.OpisParametrów > tbody > tr > *:first-child + *, table.OpisParametrów > tbody > tr:not(:last-child) > *:first-child + * ~ *{ border-bottom:0; } table.OpisParametrów > tbody > tr > *:first-child + * ~ *{ width:100% !important; } table.OpisParametrów.Opis-Szerokość-1 > tbody > tr:not(.OpisParametrów-nagłówek) > *:first-child + *{ min-width:auto; } } /*{{Kategoria|Szablony - arkusze stylów}}*/ 2umlivb5821q4khgjjan2lynf0whb92 555682 555681 2026-09-11T13:27:50Z Persino 2851 555682 sanitized-css text/css table.OpisParametrów{ margin-top:0; margin-right:0; margin-left:0; width:100%; box-sizing:border-box; } table.OpisParametrów{ display:flex; flex-direction:row; width:auto; max-width:100%; flex-shrink: 1; border:0; overflow:auto; } table.OpisParametrów > tbody > tr.OpisParametrów-nagłówek > th, table.OpisParametrów > tbody > tr.OpisParametrów-nagłówek > th span.link > a{ text-align:center !important; color:white; background-color:black; } table.OpisParametrów > tbody > tr.OpisParametrów-nagłówek > th span.link > a{ text-decoration:underline; } table.OpisParametrów > tbody > tr.OpisParametrów-nagłówek > th code{ color:unset; background-color:unset; } table.OpisParametrów > tbody{ display:table; width:100%; } table.OpisParametrów > tbody > tr:first-child > th:first-child{ width:2%; white-space:nowrap; text-align:center; } table.OpisParametrów > tbody > tr:first-child > th:first-child + th{ width:30%; } table.OpisParametrów > tbody > tr:first-child ~ tr > td:first-child{ text-align:center; } table.OpisParametrów > tbody > tr:first-child ~ tr > td:first-child + th{ text-align:left; font-weight:normal; } table.OpisParametrów > tbody > tr:first-child ~ tr > td:first-child + th + td{ text-align:left; } table.OpisParametrów.Opis-Szerokość-1 > tbody > tr:not(.OpisParametrów-nagłówek) > *:first-child + *{ min-width:30rem; } @media all and (max-width:745px), all and (max-device-height:745px){ table.OpisParametrów{ display:flex !important; flex-direction:row; width:100%; } table.OpisParametrów, table.OpisParametrów > tbody, table.OpisParametrów > tbody > tr, table.OpisParametrów > tbody > tr > th, table.OpisParametrów > tbody > tr > td{ box-sizing:border-box; } table.OpisParametrów > tbody{ display:flex !important; flex-direction:column; width:100%; } table.OpisParametrów > tbody > tr{ display:flex !important; flex-direction:row; flex-wrap:wrap; width:100%; } table.OpisParametrów > tbody > tr> th:not(:first-child), table.OpisParametrów > tbody > tr> td:not(:first-child){ display:block !important; } table.OpisParametrów > tbody > tr > *:first-child{ max-width:2rem !important; width:100% !important; display:flex !important; flex-direction:column; align-items: stretch; justify-content: center; } table.OpisParametrów > tbody > tr:first-child > *:first-child + *{ max-width:5rem !important; width:100% !important; border-left:0; } table.OpisParametrów > tbody > tr:first-child > *:first-child + * ~ *{ border-left:0; } table.OpisParametrów > tbody > tr:first-child > *:first-child + * ~*{ max-width:calc( 100% - 2rem - 5rem) !important; width:100% !important; border-left:0; } table.OpisParametrów > tbody > tr:not(:first-child) > *:first-child + *{ max-width:calc( 100% - 2rem) !important; width:100% !important; border-left:0; } table.OpisParametrów > tbody > tr:not(.OpisParametrów-nagłówek):last-child > *:first-child, table.OpisParametrów > tbody > tr:not(:last-child) > *:first-child, table.OpisParametrów > tbody > tr > *:first-child + *, table.OpisParametrów > tbody > tr:not(:last-child) > *:first-child + * ~ *{ border-bottom:0; } table.OpisParametrów > tbody > tr > *:first-child + * ~ *{ width:100% !important; } table.OpisParametrów.Opis-Szerokość-1 > tbody > tr:not(.OpisParametrów-nagłówek) > *:first-child + *{ min-width:auto; } } /*{{Kategoria|Szablony - arkusze stylów}}*/ 864i4adks6pezawugc1s0ey6vm35zxe 555709 555682 2026-09-11T15:52:47Z Persino 2851 555709 sanitized-css text/css table.OpisParametrów{ margin-top:0; margin-right:0; margin-left:0; width:100%; box-sizing:border-box; } table.OpisParametrów{ display:flex; flex-direction:row; width:auto; max-width:100%; flex-shrink: 1; border:0; overflow:auto; } table.OpisParametrów > tbody > tr.OpisParametrów-nagłówek > th, table.OpisParametrów > tbody > tr.OpisParametrów-nagłówek > th span.link > a{ text-align:center !important; color:white; background-color:black; } table.OpisParametrów > tbody > tr.OpisParametrów-nagłówek > th span.link > a{ text-decoration:underline; } table.OpisParametrów > tbody > tr.OpisParametrów-nagłówek > th code{ color:unset; background-color:unset; } table.OpisParametrów > tbody{ display:table; width:100%; } table.OpisParametrów > tbody > tr:first-child > th:first-child{ width:2%; min-width:fit-content; white-space:nowrap; text-align:center; } table.OpisParametrów > tbody > tr:first-child > th:first-child + th{ width:fit-content; } table.OpisParametrów > tbody > tr:first-child ~ tr > td:first-child{ text-align:center; } table.OpisParametrów > tbody > tr:first-child ~ tr > td:first-child + th{ text-align:left; font-weight:normal; } table.OpisParametrów > tbody > tr:first-child ~ tr > td:first-child + th + td{ text-align:left; } table.OpisParametrów.Opis-Szerokość-1 > tbody > tr:not(.OpisParametrów-nagłówek) > *:first-child + *{ min-width:30rem; } @media all and (max-width:745px), all and (max-device-height:745px){ table.OpisParametrów{ display:flex !important; flex-direction:row; width:100%; } table.OpisParametrów, table.OpisParametrów > tbody, table.OpisParametrów > tbody > tr, table.OpisParametrów > tbody > tr > th, table.OpisParametrów > tbody > tr > td{ box-sizing:border-box; } table.OpisParametrów > tbody{ display:flex !important; flex-direction:column; width:100%; } table.OpisParametrów > tbody > tr{ display:flex !important; flex-direction:row; flex-wrap:wrap; width:100%; } table.OpisParametrów > tbody > tr> th:not(:first-child), table.OpisParametrów > tbody > tr> td:not(:first-child){ display:block !important; } table.OpisParametrów > tbody > tr > *:first-child{ max-width:2rem !important; width:100% !important; display:flex !important; flex-direction:column; align-items: stretch; justify-content: center; } table.OpisParametrów > tbody > tr:first-child > *:first-child + *{ max-width:5rem !important; width:100% !important; border-left:0; } table.OpisParametrów > tbody > tr:first-child > *:first-child + * ~ *{ border-left:0; } table.OpisParametrów > tbody > tr:first-child > *:first-child + * ~*{ max-width:calc( 100% - 2rem - 5rem) !important; width:100% !important; border-left:0; } table.OpisParametrów > tbody > tr:not(:first-child) > *:first-child + *{ max-width:calc( 100% - 2rem) !important; width:100% !important; border-left:0; } table.OpisParametrów > tbody > tr:not(.OpisParametrów-nagłówek):last-child > *:first-child, table.OpisParametrów > tbody > tr:not(:last-child) > *:first-child, table.OpisParametrów > tbody > tr > *:first-child + *, table.OpisParametrów > tbody > tr:not(:last-child) > *:first-child + * ~ *{ border-bottom:0; } table.OpisParametrów > tbody > tr > *:first-child + * ~ *{ width:100% !important; } table.OpisParametrów.Opis-Szerokość-1 > tbody > tr:not(.OpisParametrów-nagłówek) > *:first-child + *{ min-width:auto; } } /*{{Kategoria|Szablony - arkusze stylów}}*/ hc50gmf66sk4khh89pvo8257yfat12h 555710 555709 2026-09-11T15:53:36Z Persino 2851 555710 sanitized-css text/css table.OpisParametrów{ margin-top:0; margin-right:0; margin-left:0; width:100%; box-sizing:border-box; } table.OpisParametrów{ display:flex; flex-direction:row; width:auto; max-width:100%; flex-shrink: 1; border:0; overflow:auto; } table.OpisParametrów > tbody > tr.OpisParametrów-nagłówek > th, table.OpisParametrów > tbody > tr.OpisParametrów-nagłówek > th span.link > a{ text-align:center !important; color:white; background-color:black; } table.OpisParametrów > tbody > tr.OpisParametrów-nagłówek > th span.link > a{ text-decoration:underline; } table.OpisParametrów > tbody > tr.OpisParametrów-nagłówek > th code{ color:unset; background-color:unset; } table.OpisParametrów > tbody{ display:table; width:100%; } table.OpisParametrów > tbody > tr:first-child > th:first-child{ width:2%; min-width:fit-content; white-space:nowrap; text-align:center; } table.OpisParametrów > tbody > tr:first-child > th:first-child + th{ width:max-content; } table.OpisParametrów > tbody > tr:first-child ~ tr > td:first-child{ text-align:center; } table.OpisParametrów > tbody > tr:first-child ~ tr > td:first-child + th{ text-align:left; font-weight:normal; } table.OpisParametrów > tbody > tr:first-child ~ tr > td:first-child + th + td{ text-align:left; } table.OpisParametrów.Opis-Szerokość-1 > tbody > tr:not(.OpisParametrów-nagłówek) > *:first-child + *{ min-width:30rem; } @media all and (max-width:745px), all and (max-device-height:745px){ table.OpisParametrów{ display:flex !important; flex-direction:row; width:100%; } table.OpisParametrów, table.OpisParametrów > tbody, table.OpisParametrów > tbody > tr, table.OpisParametrów > tbody > tr > th, table.OpisParametrów > tbody > tr > td{ box-sizing:border-box; } table.OpisParametrów > tbody{ display:flex !important; flex-direction:column; width:100%; } table.OpisParametrów > tbody > tr{ display:flex !important; flex-direction:row; flex-wrap:wrap; width:100%; } table.OpisParametrów > tbody > tr> th:not(:first-child), table.OpisParametrów > tbody > tr> td:not(:first-child){ display:block !important; } table.OpisParametrów > tbody > tr > *:first-child{ max-width:2rem !important; width:100% !important; display:flex !important; flex-direction:column; align-items: stretch; justify-content: center; } table.OpisParametrów > tbody > tr:first-child > *:first-child + *{ max-width:5rem !important; width:100% !important; border-left:0; } table.OpisParametrów > tbody > tr:first-child > *:first-child + * ~ *{ border-left:0; } table.OpisParametrów > tbody > tr:first-child > *:first-child + * ~*{ max-width:calc( 100% - 2rem - 5rem) !important; width:100% !important; border-left:0; } table.OpisParametrów > tbody > tr:not(:first-child) > *:first-child + *{ max-width:calc( 100% - 2rem) !important; width:100% !important; border-left:0; } table.OpisParametrów > tbody > tr:not(.OpisParametrów-nagłówek):last-child > *:first-child, table.OpisParametrów > tbody > tr:not(:last-child) > *:first-child, table.OpisParametrów > tbody > tr > *:first-child + *, table.OpisParametrów > tbody > tr:not(:last-child) > *:first-child + * ~ *{ border-bottom:0; } table.OpisParametrów > tbody > tr > *:first-child + * ~ *{ width:100% !important; } table.OpisParametrów.Opis-Szerokość-1 > tbody > tr:not(.OpisParametrów-nagłówek) > *:first-child + *{ min-width:auto; } } /*{{Kategoria|Szablony - arkusze stylów}}*/ lg62aj7ipk78kpxuzjqqiloawps8jqh 555711 555710 2026-09-11T15:54:17Z Persino 2851 555711 sanitized-css text/css table.OpisParametrów{ margin-top:0; margin-right:0; margin-left:0; width:100%; box-sizing:border-box; } table.OpisParametrów{ display:flex; flex-direction:row; width:auto; max-width:100%; flex-shrink: 1; border:0; overflow:auto; } table.OpisParametrów > tbody > tr.OpisParametrów-nagłówek > th, table.OpisParametrów > tbody > tr.OpisParametrów-nagłówek > th span.link > a{ text-align:center !important; color:white; background-color:black; } table.OpisParametrów > tbody > tr.OpisParametrów-nagłówek > th span.link > a{ text-decoration:underline; } table.OpisParametrów > tbody > tr.OpisParametrów-nagłówek > th code{ color:unset; background-color:unset; } table.OpisParametrów > tbody{ display:table; width:100%; } table.OpisParametrów > tbody > tr:first-child > th:first-child{ width:2%; white-space:nowrap; text-align:center; } table.OpisParametrów > tbody > tr:first-child > th:first-child + th{ width:30%; } table.OpisParametrów > tbody > tr:first-child ~ tr > td:first-child{ text-align:center; } table.OpisParametrów > tbody > tr:first-child ~ tr > td:first-child + th{ text-align:left; font-weight:normal; } table.OpisParametrów > tbody > tr:first-child ~ tr > td:first-child + th + td{ text-align:left; } table.OpisParametrów.Opis-Szerokość-1 > tbody > tr:not(.OpisParametrów-nagłówek) > *:first-child + *{ min-width:30rem; } @media all and (max-width:745px), all and (max-device-height:745px){ table.OpisParametrów{ display:flex !important; flex-direction:row; width:100%; } table.OpisParametrów, table.OpisParametrów > tbody, table.OpisParametrów > tbody > tr, table.OpisParametrów > tbody > tr > th, table.OpisParametrów > tbody > tr > td{ box-sizing:border-box; } table.OpisParametrów > tbody{ display:flex !important; flex-direction:column; width:100%; } table.OpisParametrów > tbody > tr{ display:flex !important; flex-direction:row; flex-wrap:wrap; width:100%; } table.OpisParametrów > tbody > tr> th:not(:first-child), table.OpisParametrów > tbody > tr> td:not(:first-child){ display:block !important; } table.OpisParametrów > tbody > tr > *:first-child{ max-width:2rem !important; width:100% !important; display:flex !important; flex-direction:column; align-items: stretch; justify-content: center; } table.OpisParametrów > tbody > tr:first-child > *:first-child + *{ max-width:5rem !important; width:100% !important; border-left:0; } table.OpisParametrów > tbody > tr:first-child > *:first-child + * ~ *{ border-left:0; } table.OpisParametrów > tbody > tr:first-child > *:first-child + * ~*{ max-width:calc( 100% - 2rem - 5rem) !important; width:100% !important; border-left:0; } table.OpisParametrów > tbody > tr:not(:first-child) > *:first-child + *{ max-width:calc( 100% - 2rem) !important; width:100% !important; border-left:0; } table.OpisParametrów > tbody > tr:not(.OpisParametrów-nagłówek):last-child > *:first-child, table.OpisParametrów > tbody > tr:not(:last-child) > *:first-child, table.OpisParametrów > tbody > tr > *:first-child + *, table.OpisParametrów > tbody > tr:not(:last-child) > *:first-child + * ~ *{ border-bottom:0; } table.OpisParametrów > tbody > tr > *:first-child + * ~ *{ width:100% !important; } table.OpisParametrów.Opis-Szerokość-1 > tbody > tr:not(.OpisParametrów-nagłówek) > *:first-child + *{ min-width:auto; } } /*{{Kategoria|Szablony - arkusze stylów}}*/ 864i4adks6pezawugc1s0ey6vm35zxe Szablon:OpisParametrów/opis 10 64148 555687 555539 2026-09-11T13:51:43Z Persino 2851 /* Przykład */ 555687 wikitext text/x-wiki {{Podstrona dokumentacji}} {{Lua|Ramka}} {{Wysokie ryzyko|częste użycie}} {{Wysokie ryzyko|skomplikowany}} <!-- DODAWAJ KATEGORIE NA DOLE STRONY --> == Użycie == == Opis parametrów == == Przykład == ; Przykład {{Pre| {{s|OpisParametrów | 1 {{=}} Adres kodowy projektu siostrzanego lub lokalnego polskiego {{s|Code|Wikibooks}}:|nagłówek1{{=}}tak | 2 {{=}} {{s|Code|klucz projektu}} | _2 {{=}} Kody języka i projektu podana w jednej zmiennej oddzielone od siebie dwukropkami, może być dowolna liczba tych kodów. | 3 {{=}} {{s|Code|kod projektu}} | _3 {{=}} Kod projektu danego wiki. | 4 {{=}} {{s|Code|kod języka}} | _4 {{=}} kod języka danego wiki. | 5 {{=}} {{s|Code|po polsku}} |_5 {{=}} Tłumaczy nazwę kanoniczną danej przestrzeni nazw na jej wersję polską, tzn. na język polski, a jeżeli jej wersja polska nie istnieje, to pisze jej wersję w języku angielskim, czyli w postaci nazwy kanonicznej. | 6 {{=}} {{s|Code|awaryjnie}} | _6 {{=}} Za pomocą projektu {{s|NS|l{{=}}tak|k{{=}}d}} tłumaczy daną nazwę przestrzeni nazw w jednym języku (jej nazwę kanoniczną jakieś przestrzeni nazw) na drugi, gdy wartość jest pusta, to tłumaczy na jej nazwę kanoniczną, jeżeli, przy tym parametrze lub bez, jej wersja w innym danym języku nie istnieje zdefiniowana w module {{m|Nazwy/przestrzenie}}. | 7 {{=}} Parametry: {{s|Code|nazwij projektem}} i {{s|Code|nazwij dyskusją projektu}} używa się tak samo jak dla funkcji {{m|Nazwy|Np}}, tylko z różnicą, że w funkcji {{s|m|Nazwy|NpDane}} musimy skorzystać koniecznie z parametru {{s|Code|kanoniczna}} z wartością niepustą, a wtedy wydrukowane wartości są w postaci wersji kanonicznej w języku angielskim, tak jak z ostatnim szablonem.|nagłówek7{{=}}tak }} }} ; Wynik {{OpisParametrów | 1 = Adres kodowy projektu siostrzanego lub lokalnego polskiego {{Code|Wikibooks}}:|nagłówek1=tak | 2 = {{Code|klucz projektu}} | _2 = Kody języka i projektu podana w jednej zmiennej oddzielone od siebie dwukropkami, może być dowolna liczba tych kodów. | 3 = {{Code|kod projektu}} | _3 = Kod projektu danego wiki. | 4 = {{Code|kod języka}} | _4 = kod języka danego wiki. | 5 = {{Code|po polsku}} |_5 = Tłumaczy nazwę kanoniczną danej przestrzeni nazw na jej wersję polską, tzn. na język polski, a jeżeli jej wersja polska nie istnieje, to pisze jej wersję w języku angielskim, czyli w postaci nazwy kanonicznej. | 6 = {{Code|awaryjnie}} | _6 = Za pomocą projektu {{NS|l=tak|k=d}} tłumaczy daną nazwę przestrzeni nazw w jednym języku (jej nazwę kanoniczną jakieś przestrzeni nazw) na drugi, gdy wartość jest pusta, to tłumaczy na jej nazwę kanoniczną, jeżeli, przy tym parametrze lub bez, jej wersja w innym danym języku nie istnieje zdefiniowana w module {{m|Nazwy/przestrzenie}}. | 7 = Parametry: {{Code|nazwij projektem}} i {{Code|nazwij dyskusją projektu}} używa się tak samo jak dla funkcji {{m|Nazwy|Np}}, tylko z różnicą, że w funkcji {{m|Nazwy|NpDane}} musimy skorzystać koniecznie z parametru {{Code|kanoniczna}} z wartością niepustą, a wtedy wydrukowane wartości są w postaci wersji kanonicznej w języku angielskim, tak jak z ostatnim szablonem.|nagłówek7=tak }} == Błędy == Błędy należy zgłaszać na stronie {{Kwestie techniczne}}. == Parametry szablonu ({{Strukturyzacja Wizualnego Edytora}}) == <templatedata> { "params": { } } </templatedata> == Zobacz też == {{BrClear}} <includeonly><!-- ++++ DODAWAJ KATEGORIE PONIŻEJ TEJ LINII --> {{Kategorie | Szablony formułujące tabele | Szablony specjalne | Szablony opisów }} </includeonly> 2qqk7q5d10zogmvbzu2mv9wo87qkj73 555688 555687 2026-09-11T13:52:10Z Persino 2851 /* Przykład */ 555688 wikitext text/x-wiki {{Podstrona dokumentacji}} {{Lua|Ramka}} {{Wysokie ryzyko|częste użycie}} {{Wysokie ryzyko|skomplikowany}} <!-- DODAWAJ KATEGORIE NA DOLE STRONY --> == Użycie == == Opis parametrów == == Przykład == ; Przykład {{Pre| {{s|OpisParametrów | 1 {{=}} Adres kodowy projektu siostrzanego lub lokalnego polskiego {{s|Code|Wikibooks}}:|nagłówek1{{=}}tak | 2 {{=}} {{s|Code|klucz projektu}} | _2 {{=}} Kody języka i projektu podana w jednej zmiennej oddzielone od siebie dwukropkami, może być dowolna liczba tych kodów. | 3 {{=}} {{s|Code|kod projektu}} | _3 {{=}} Kod projektu danego wiki. | 4 {{=}} {{s|Code|kod języka}} | _4 {{=}} kod języka danego wiki. | 5 {{=}} {{s|Code|po polsku}} |_5 {{=}} Tłumaczy nazwę kanoniczną danej przestrzeni nazw na jej wersję polską, tzn. na język polski, a jeżeli jej wersja polska nie istnieje, to pisze jej wersję w języku angielskim, czyli w postaci nazwy kanonicznej. | 6 {{=}} {{s|Code|awaryjnie}} | _6 {{=}} Za pomocą projektu {{s|NS|l{{=}}tak|k{{=}}d}} tłumaczy daną nazwę przestrzeni nazw w jednym języku (jej nazwę kanoniczną jakieś przestrzeni nazw) na drugi, gdy wartość jest pusta, to tłumaczy na jej nazwę kanoniczną, jeżeli, przy tym parametrze lub bez, jej wersja w innym danym języku nie istnieje zdefiniowana w module {{s|m|Nazwy/przestrzenie}}. | 7 {{=}} Parametry: {{s|Code|nazwij projektem}} i {{s|Code|nazwij dyskusją projektu}} używa się tak samo jak dla funkcji {{m|Nazwy|Np}}, tylko z różnicą, że w funkcji {{s|m|Nazwy|NpDane}} musimy skorzystać koniecznie z parametru {{s|Code|kanoniczna}} z wartością niepustą, a wtedy wydrukowane wartości są w postaci wersji kanonicznej w języku angielskim, tak jak z ostatnim szablonem.|nagłówek7{{=}}tak }} }} ; Wynik {{OpisParametrów | 1 = Adres kodowy projektu siostrzanego lub lokalnego polskiego {{Code|Wikibooks}}:|nagłówek1=tak | 2 = {{Code|klucz projektu}} | _2 = Kody języka i projektu podana w jednej zmiennej oddzielone od siebie dwukropkami, może być dowolna liczba tych kodów. | 3 = {{Code|kod projektu}} | _3 = Kod projektu danego wiki. | 4 = {{Code|kod języka}} | _4 = kod języka danego wiki. | 5 = {{Code|po polsku}} |_5 = Tłumaczy nazwę kanoniczną danej przestrzeni nazw na jej wersję polską, tzn. na język polski, a jeżeli jej wersja polska nie istnieje, to pisze jej wersję w języku angielskim, czyli w postaci nazwy kanonicznej. | 6 = {{Code|awaryjnie}} | _6 = Za pomocą projektu {{NS|l=tak|k=d}} tłumaczy daną nazwę przestrzeni nazw w jednym języku (jej nazwę kanoniczną jakieś przestrzeni nazw) na drugi, gdy wartość jest pusta, to tłumaczy na jej nazwę kanoniczną, jeżeli, przy tym parametrze lub bez, jej wersja w innym danym języku nie istnieje zdefiniowana w module {{m|Nazwy/przestrzenie}}. | 7 = Parametry: {{Code|nazwij projektem}} i {{Code|nazwij dyskusją projektu}} używa się tak samo jak dla funkcji {{m|Nazwy|Np}}, tylko z różnicą, że w funkcji {{m|Nazwy|NpDane}} musimy skorzystać koniecznie z parametru {{Code|kanoniczna}} z wartością niepustą, a wtedy wydrukowane wartości są w postaci wersji kanonicznej w języku angielskim, tak jak z ostatnim szablonem.|nagłówek7=tak }} == Błędy == Błędy należy zgłaszać na stronie {{Kwestie techniczne}}. == Parametry szablonu ({{Strukturyzacja Wizualnego Edytora}}) == <templatedata> { "params": { } } </templatedata> == Zobacz też == {{BrClear}} <includeonly><!-- ++++ DODAWAJ KATEGORIE PONIŻEJ TEJ LINII --> {{Kategorie | Szablony formułujące tabele | Szablony specjalne | Szablony opisów }} </includeonly> 7fmk8ss740qksiko5ein9rxstnyv29s 555689 555688 2026-09-11T13:53:39Z Persino 2851 /* Przykład */ 555689 wikitext text/x-wiki {{Podstrona dokumentacji}} {{Lua|Ramka}} {{Wysokie ryzyko|częste użycie}} {{Wysokie ryzyko|skomplikowany}} <!-- DODAWAJ KATEGORIE NA DOLE STRONY --> == Użycie == == Opis parametrów == == Przykład == ; Przykład {{Pre| {{s|OpisParametrów | 1 {{=}} Adres kodowy projektu siostrzanego lub lokalnego polskiego {{s|Code|Wikibooks}}: | nagłówek1 {{=}} tak | 2 {{=}} {{s|Code|klucz projektu}} | _2 {{=}} Kody języka i projektu podana w jednej zmiennej oddzielone od siebie dwukropkami, może być dowolna liczba tych kodów. | 3 {{=}} {{s|Code|kod projektu}} | _3 {{=}} Kod projektu danego wiki. | 4 {{=}} {{s|Code|kod języka}} | _4 {{=}} kod języka danego wiki. | 5 {{=}} {{s|Code|po polsku}} | _5 {{=}} Tłumaczy nazwę kanoniczną danej przestrzeni nazw na jej wersję polską, tzn. na język polski, a jeżeli jej wersja polska nie istnieje, to pisze jej wersję w języku angielskim, czyli w postaci nazwy kanonicznej. | 6 {{=}} {{s|Code|awaryjnie}} | _6 {{=}} Za pomocą projektu {{s|NS|l{{=}}tak|k{{=}}d}} tłumaczy daną nazwę przestrzeni nazw w jednym języku (jej nazwę kanoniczną jakieś przestrzeni nazw) na drugi, gdy wartość jest pusta, to tłumaczy na jej nazwę kanoniczną, jeżeli, przy tym parametrze lub bez, jej wersja w innym danym języku nie istnieje zdefiniowana w module {{s|m|Nazwy/przestrzenie}}. | 7 {{=}} Parametry: {{s|Code|nazwij projektem}} i {{s|Code|nazwij dyskusją projektu}} używa się tak samo jak dla funkcji {{m|Nazwy|Np}}, tylko z różnicą, że w funkcji {{s|m|Nazwy|NpDane}} musimy skorzystać koniecznie z parametru {{s|Code|kanoniczna}} z wartością niepustą, a wtedy wydrukowane wartości są w postaci wersji kanonicznej w języku angielskim, tak jak z ostatnim szablonem. | nagłówek7 {{=}} tak }} }} ; Wynik {{OpisParametrów | 1 = Adres kodowy projektu siostrzanego lub lokalnego polskiego {{Code|Wikibooks}}: | nagłówek1 = tak | 2 = {{Code|klucz projektu}} | _2 = Kody języka i projektu podana w jednej zmiennej oddzielone od siebie dwukropkami, może być dowolna liczba tych kodów. | 3 = {{Code|kod projektu}} | _3 = Kod projektu danego wiki. | 4 = {{Code|kod języka}} | _4 = kod języka danego wiki. | 5 = {{Code|po polsku}} | _5 = Tłumaczy nazwę kanoniczną danej przestrzeni nazw na jej wersję polską, tzn. na język polski, a jeżeli jej wersja polska nie istnieje, to pisze jej wersję w języku angielskim, czyli w postaci nazwy kanonicznej. | 6 = {{Code|awaryjnie}} | _6 = Za pomocą projektu {{NS|l=tak|k=d}} tłumaczy daną nazwę przestrzeni nazw w jednym języku (jej nazwę kanoniczną jakieś przestrzeni nazw) na drugi, gdy wartość jest pusta, to tłumaczy na jej nazwę kanoniczną, jeżeli, przy tym parametrze lub bez, jej wersja w innym danym języku nie istnieje zdefiniowana w module {{m|Nazwy/przestrzenie}}. | 7 = Parametry: {{Code|nazwij projektem}} i {{Code|nazwij dyskusją projektu}} używa się tak samo jak dla funkcji {{m|Nazwy|Np}}, tylko z różnicą, że w funkcji {{m|Nazwy|NpDane}} musimy skorzystać koniecznie z parametru {{Code|kanoniczna}} z wartością niepustą, a wtedy wydrukowane wartości są w postaci wersji kanonicznej w języku angielskim, tak jak z ostatnim szablonem. | nagłówek7 = tak }} == Błędy == Błędy należy zgłaszać na stronie {{Kwestie techniczne}}. == Parametry szablonu ({{Strukturyzacja Wizualnego Edytora}}) == <templatedata> { "params": { } } </templatedata> == Zobacz też == {{BrClear}} <includeonly><!-- ++++ DODAWAJ KATEGORIE PONIŻEJ TEJ LINII --> {{Kategorie | Szablony formułujące tabele | Szablony specjalne | Szablony opisów }} </includeonly> qxrm1s5b4ubm4ty7imzqzcf1jirn49x 555698 555689 2026-09-11T14:39:15Z Persino 2851 /* Przykład */ 555698 wikitext text/x-wiki {{Podstrona dokumentacji}} {{Lua|Ramka}} {{Wysokie ryzyko|częste użycie}} {{Wysokie ryzyko|skomplikowany}} <!-- DODAWAJ KATEGORIE NA DOLE STRONY --> == Użycie == == Opis parametrów == == Przykład == ; Przykład {{Pre| {{s|OpisParametrów | 1 {{=}} Adres kodowy projektu siostrzanego lub lokalnego polskiego: {{s|Code|Wikibooks}}: | nagłówek1 {{=}} tak | 2 {{=}} {{s|Code|klucz projektu}} | _2 {{=}} Kody języka i projektu podana w jednej zmiennej oddzielone od siebie dwukropkami, może być dowolna liczba tych kodów. | 3 {{=}} {{s|Code|kod projektu}} | _3 {{=}} Kod projektu danego wiki. | 4 {{=}} {{s|Code|kod języka}} | _4 {{=}} kod języka danego wiki. | 5 {{=}} {{s|Code|po polsku}} | _5 {{=}} Tłumaczy nazwę kanoniczną danej przestrzeni nazw na jej wersję polską, tzn. na język polski, a jeżeli jej wersja polska nie istnieje, to pisze jej wersję w języku angielskim, czyli w postaci nazwy kanonicznej. | 6 {{=}} {{s|Code|awaryjnie}} | _6 {{=}} Za pomocą projektu {{s|NS|l{{=}}tak|k{{=}}d}} tłumaczy daną nazwę przestrzeni nazw w jednym języku (jej nazwę kanoniczną jakieś przestrzeni nazw) na drugi, gdy wartość jest pusta, to tłumaczy na jej nazwę kanoniczną, jeżeli, przy tym parametrze lub bez, jej wersja w innym danym języku nie istnieje zdefiniowana w module {{s|m|Nazwy/przestrzenie}}. | 7 {{=}} Parametry: {{s|Code|nazwij projektem}} i {{s|Code|nazwij dyskusją projektu}}, używa się tak samo jak dla funkcji: {{m|Nazwy|Np}}, tylko z różnicą, że w funkcji: {{s|m|Nazwy|NpDane}}, musimy skorzystać koniecznie z parametru: {{s|Code|kanoniczna}}, z wartością niepustą, a wtedy wydrukowane wartości są w postaci wersji kanonicznej w języku angielskim, tak jak z ostatnim szablonem. | nagłówek7 {{=}} tak }} }} ; Wynik {{OpisParametrów | 1 = Adres kodowy projektu siostrzanego lub lokalnego polskiego: {{Code|Wikibooks}}: | nagłówek1 = tak | 2 = {{Code|klucz projektu}} | _2 = Kody języka i projektu podana w jednej zmiennej oddzielone od siebie dwukropkami, może być dowolna liczba tych kodów. | 3 = {{Code|kod projektu}} | _3 = Kod projektu danego wiki. | 4 = {{Code|kod języka}} | _4 = kod języka danego wiki. | 5 = {{Code|po polsku}} | _5 = Tłumaczy nazwę kanoniczną danej przestrzeni nazw na jej wersję polską, tzn. na język polski, a jeżeli jej wersja polska nie istnieje, to pisze jej wersję w języku angielskim, czyli w postaci nazwy kanonicznej. | 6 = {{Code|awaryjnie}} | _6 = Za pomocą projektu {{NS|l=tak|k=d}} tłumaczy daną nazwę przestrzeni nazw w jednym języku (jej nazwę kanoniczną jakieś przestrzeni nazw) na drugi, gdy wartość jest pusta, to tłumaczy na jej nazwę kanoniczną, jeżeli, przy tym parametrze lub bez, jej wersja w innym danym języku nie istnieje zdefiniowana w module {{m|Nazwy/przestrzenie}}. | 7 = Parametry: {{Code|nazwij projektem}} i {{Code|nazwij dyskusją projektu}}, używa się tak samo jak dla funkcji: {{m|Nazwy|Np}}, tylko z różnicą, że w funkcji: {{m|Nazwy|NpDane}}, musimy skorzystać koniecznie z parametru: {{Code|kanoniczna}}, z wartością niepustą, a wtedy wydrukowane wartości są w postaci wersji kanonicznej w języku angielskim, tak jak z ostatnim szablonem. | nagłówek7 = tak }} == Błędy == Błędy należy zgłaszać na stronie {{Kwestie techniczne}}. == Parametry szablonu ({{Strukturyzacja Wizualnego Edytora}}) == <templatedata> { "params": { } } </templatedata> == Zobacz też == {{BrClear}} <includeonly><!-- ++++ DODAWAJ KATEGORIE PONIŻEJ TEJ LINII --> {{Kategorie | Szablony formułujące tabele | Szablony specjalne | Szablony opisów }} </includeonly> rqpjw8iloundhpzm0xmj62mduokb859 555699 555698 2026-09-11T14:41:55Z Persino 2851 /* Przykład */ 555699 wikitext text/x-wiki {{Podstrona dokumentacji}} {{Lua|Ramka}} {{Wysokie ryzyko|częste użycie}} {{Wysokie ryzyko|skomplikowany}} <!-- DODAWAJ KATEGORIE NA DOLE STRONY --> == Użycie == == Opis parametrów == == Przykład == ; Przykład {{Pre| {{s|OpisParametrów | 1 {{=}} Adres kodowy projektu siostrzanego lub lokalnego polskiego: {{s|Code|Wikibooks}}: | nagłówek1 {{=}} tak | 2 {{=}} {{s|Code|klucz projektu}} | _2 {{=}} Kody języka i projektu podana w jednej zmiennej oddzielone od siebie dwukropkami, może być dowolna liczba tych kodów. | 3 {{=}} {{s|Code|kod projektu}} | _3 {{=}} Kod projektu danego wiki. | 4 {{=}} {{s|Code|kod języka}} | _4 {{=}} kod języka danego wiki. | 5 {{=}} {{s|Code|po polsku}} | _5 {{=}} Tłumaczy nazwę kanoniczną danej przestrzeni nazw na jej wersję polską, tzn. na język polski, a jeżeli jej wersja polska nie istnieje, to pisze jej wersję w języku angielskim, czyli w postaci nazwy kanonicznej. | 6 {{=}} {{s|Code|awaryjnie}} | _6 {{=}} Za pomocą projektu {{s|NS|l{{=}}tak|k{{=}}d}} tłumaczy daną nazwę przestrzeni nazw w jednym języku (jej nazwę kanoniczną jakieś przestrzeni nazw) na drugi, gdy wartość jest pusta, to tłumaczy na jej nazwę kanoniczną, jeżeli, przy tym parametrze lub bez, jej wersja w innym danym języku nie istnieje zdefiniowana w module {{s|m|Nazwy/przestrzenie}}. | 7 {{=}} Parametry: {{s|Code|nazwij projektem}} i {{s|Code|nazwij dyskusją projektu}}, używa się tak samo jak dla funkcji: {{s|m|Nazwy|Np}}, tylko z różnicą, że w funkcji: {{s|m|Nazwy|NpDane}}, musimy skorzystać koniecznie z parametru: {{s|Code|kanoniczna}}, z wartością niepustą, a wtedy wydrukowane wartości są w postaci wersji kanonicznej w języku angielskim, tak jak z ostatnim szablonem. | nagłówek7 {{=}} tak }} }} ; Wynik {{OpisParametrów | 1 = Adres kodowy projektu siostrzanego lub lokalnego polskiego: {{Code|Wikibooks}}: | nagłówek1 = tak | 2 = {{Code|klucz projektu}} | _2 = Kody języka i projektu podana w jednej zmiennej oddzielone od siebie dwukropkami, może być dowolna liczba tych kodów. | 3 = {{Code|kod projektu}} | _3 = Kod projektu danego wiki. | 4 = {{Code|kod języka}} | _4 = kod języka danego wiki. | 5 = {{Code|po polsku}} | _5 = Tłumaczy nazwę kanoniczną danej przestrzeni nazw na jej wersję polską, tzn. na język polski, a jeżeli jej wersja polska nie istnieje, to pisze jej wersję w języku angielskim, czyli w postaci nazwy kanonicznej. | 6 = {{Code|awaryjnie}} | _6 = Za pomocą projektu {{NS|l=tak|k=d}} tłumaczy daną nazwę przestrzeni nazw w jednym języku (jej nazwę kanoniczną jakieś przestrzeni nazw) na drugi, gdy wartość jest pusta, to tłumaczy na jej nazwę kanoniczną, jeżeli, przy tym parametrze lub bez, jej wersja w innym danym języku nie istnieje zdefiniowana w module {{m|Nazwy/przestrzenie}}. | 7 = Parametry: {{Code|nazwij projektem}} i {{Code|nazwij dyskusją projektu}}, używa się tak samo jak dla funkcji: {{m|Nazwy|Np}}, tylko z różnicą, że w funkcji: {{m|Nazwy|NpDane}}, musimy skorzystać koniecznie z parametru: {{Code|kanoniczna}}, z wartością niepustą, a wtedy wydrukowane wartości są w postaci wersji kanonicznej w języku angielskim, tak jak z ostatnim szablonem. | nagłówek7 = tak }} == Błędy == Błędy należy zgłaszać na stronie {{Kwestie techniczne}}. == Parametry szablonu ({{Strukturyzacja Wizualnego Edytora}}) == <templatedata> { "params": { } } </templatedata> == Zobacz też == {{BrClear}} <includeonly><!-- ++++ DODAWAJ KATEGORIE PONIŻEJ TEJ LINII --> {{Kategorie | Szablony formułujące tabele | Szablony specjalne | Szablony opisów }} </includeonly> 8gqadk9nit8yjvbjj8omk7nvha4kb09 555725 555699 2026-09-11T16:52:26Z Persino 2851 /* Przykład */ 555725 wikitext text/x-wiki {{Podstrona dokumentacji}} {{Lua|Ramka}} {{Wysokie ryzyko|częste użycie}} {{Wysokie ryzyko|skomplikowany}} <!-- DODAWAJ KATEGORIE NA DOLE STRONY --> == Użycie == == Opis parametrów == == Przykład == ; Przykład {{Pre| {{s|OpisParametrów | 1 {{=}} Adres kodowy projektu siostrzanego lub lokalnego polskiego: {{s|Code|Wikibooks}}: | nagłówek1 {{=}} tak | 2 {{=}} {{s|Code|klucz projektu}} | _2 {{=}} Kody języka i projektu podana w jednej zmiennej oddzielone od siebie dwukropkami, może być dowolna liczba tych kodów. | 3 {{=}} {{s|Code|kod projektu}} | _3 {{=}} Kod projektu danego wiki. | 4 {{=}} {{s|Code|kod języka}} | _4 {{=}} Kod języka danego wiki. | 5 {{=}} {{s|Code|po polsku}} | _5 {{=}} Tłumaczy nazwę kanoniczną danej przestrzeni nazw na jej wersję polską, tzn. na język polski, a jeżeli jej wersja polska nie istnieje, to pisze jej wersję w języku angielskim, czyli w postaci nazwy kanonicznej. | 6 {{=}} {{s|Code|awaryjnie}} | _6 {{=}} Za pomocą projektu {{s|NS|l{{=}}tak|k{{=}}d}} tłumaczy daną nazwę przestrzeni nazw w jednym języku (jej nazwę kanoniczną jakieś przestrzeni nazw) na drugi, gdy wartość jest pusta, to tłumaczy na jej nazwę kanoniczną, jeżeli, przy tym parametrze lub bez, jej wersja w innym danym języku nie istnieje zdefiniowana w module {{s|m|Nazwy/przestrzenie}}. | 7 {{=}} Parametry: {{s|Code|nazwij projektem}} i {{s|Code|nazwij dyskusją projektu}}, używa się tak samo jak dla funkcji: {{s|m|Nazwy|Np}}, tylko z różnicą, że w funkcji: {{s|m|Nazwy|NpDane}}, musimy skorzystać koniecznie z parametru: {{s|Code|kanoniczna}}, z wartością niepustą, a wtedy wydrukowane wartości są w postaci wersji kanonicznej w języku angielskim, tak jak z ostatnim szablonem. | nagłówek7 {{=}} tak }} }} ; Wynik {{OpisParametrów | 1 = Adres kodowy projektu siostrzanego lub lokalnego polskiego: {{Code|Wikibooks}}: | nagłówek1 = tak | 2 = {{Code|klucz projektu}} | _2 = Kody języka i projektu podana w jednej zmiennej oddzielone od siebie dwukropkami, może być dowolna liczba tych kodów. | 3 = {{Code|kod projektu}} | _3 = Kod projektu danego wiki. | 4 = {{Code|kod języka}} | _4 = Kod języka danego wiki. | 5 = {{Code|po polsku}} | _5 = Tłumaczy nazwę kanoniczną danej przestrzeni nazw na jej wersję polską, tzn. na język polski, a jeżeli jej wersja polska nie istnieje, to pisze jej wersję w języku angielskim, czyli w postaci nazwy kanonicznej. | 6 = {{Code|awaryjnie}} | _6 = Za pomocą projektu {{NS|l=tak|k=d}} tłumaczy daną nazwę przestrzeni nazw w jednym języku (jej nazwę kanoniczną jakieś przestrzeni nazw) na drugi, gdy wartość jest pusta, to tłumaczy na jej nazwę kanoniczną, jeżeli, przy tym parametrze lub bez, jej wersja w innym danym języku nie istnieje zdefiniowana w module {{m|Nazwy/przestrzenie}}. | 7 = Parametry: {{Code|nazwij projektem}} i {{Code|nazwij dyskusją projektu}}, używa się tak samo jak dla funkcji: {{m|Nazwy|Np}}, tylko z różnicą, że w funkcji: {{m|Nazwy|NpDane}}, musimy skorzystać koniecznie z parametru: {{Code|kanoniczna}}, z wartością niepustą, a wtedy wydrukowane wartości są w postaci wersji kanonicznej w języku angielskim, tak jak z ostatnim szablonem. | nagłówek7 = tak }} == Błędy == Błędy należy zgłaszać na stronie {{Kwestie techniczne}}. == Parametry szablonu ({{Strukturyzacja Wizualnego Edytora}}) == <templatedata> { "params": { } } </templatedata> == Zobacz też == {{BrClear}} <includeonly><!-- ++++ DODAWAJ KATEGORIE PONIŻEJ TEJ LINII --> {{Kategorie | Szablony formułujące tabele | Szablony specjalne | Szablony opisów }} </includeonly> pa9743zxqw5oc0t599btcydzp65htnj Kategoria:Szablony, moduły Lua w Scribunto, z opisami, przykładów stron projektu/Parametry 14 64150 555795 2026-09-12T07:35:59Z Persino 2851 Utworzono nową stronę „{{Lategoria|Szablony, moduły Lua w Scribunto, z opisami, przykładów stron projektu}}” 555795 wikitext text/x-wiki {{Lategoria|Szablony, moduły Lua w Scribunto, z opisami, przykładów stron projektu}} ar0kmq11kbycmkjn1m3z73hybnhpc0y 555796 555795 2026-09-12T07:36:12Z Persino 2851 555796 wikitext text/x-wiki {{Kategoria|Szablony, moduły Lua w Scribunto, z opisami, przykładów stron projektu}} b6lz6rtgdy8574elh6cxs9mf0u1nnnm Kategoria:Szablony, moduły Lua w Scribunto, bez opisów, przykładów stron projektu/Parametry 14 64151 555797 2026-09-12T07:37:13Z Persino 2851 Utworzono nową stronę „{{Kategoria|Szablony, moduły Lua w Scribunto, bez opisów, przykładów stron projektu}}” 555797 wikitext text/x-wiki {{Kategoria|Szablony, moduły Lua w Scribunto, bez opisów, przykładów stron projektu}} 37h9jjo3mkpr8t03n0iz5hi6aicw54a Moduł:Wikibooks/Przykład/Parametry/LiczbaElementówNumerowanychTablicy/Kod 1 828 64152 555799 2026-09-12T11:13:54Z Persino 2851 Utworzono nową stronę „local p={}; p["Przykład"]=function(frame) local tabela={"nazwa1","nazwa2","nazwa3","nazwa4","nazwa5","nazwa6","nazwa7","nazwa8","nazwa9",}; local parametry_modul=require("Module:Parametry"); local liczba_elementow_nienazwanych_tablicy=parametry_modul["LiczbaElementówNumerowanychTablicy"](tabela,true,false); local zrodlolua_modul=require("Module:ŹródłoLua"); local wikikod=zrodlolua_modul["ŹródłoLua"](frame,{ {"liczba_elementow_nienazwanych_…” 555799 Scribunto text/plain local p={}; p["Przykład"]=function(frame) local tabela={"nazwa1","nazwa2","nazwa3","nazwa4","nazwa5","nazwa6","nazwa7","nazwa8","nazwa9",}; local parametry_modul=require("Module:Parametry"); local liczba_elementow_nienazwanych_tablicy=parametry_modul["LiczbaElementówNumerowanychTablicy"](tabela,true,false); local zrodlolua_modul=require("Module:ŹródłoLua"); local wikikod=zrodlolua_modul["ŹródłoLua"](frame,{ {"liczba_elementow_nienazwanych_tablicy",liczba_elementow_nienazwanych_tablicy,}, }); return wikikod; end; return p; 2cz2z7jcrfxy344ui95x0zf1tfosgtr 555800 555799 2026-09-12T11:17:31Z Persino 2851 555800 Scribunto text/plain local p={}; p["Przykład"]=function(frame) local tabela={"nazwa1","nazwa2","nazwa3","nazwa4","nazwa5","nazwa6","nazwa7","nazwa8","nazwa9",}; local parametry_modul=require("Module:Parametry"); local liczba_elementow_numerowanych_tablicy=parametry_modul["LiczbaElementówNumerowanychTablicy"](tabela,true,false); local zrodlolua_modul=require("Module:ŹródłoLua"); local wikikod=zrodlolua_modul["ŹródłoLua"](frame,{ {"liczba_elementow_numerowanych_tablicy",liczba_elementow_numerowanych_tablicy,}, }); return wikikod; end; return p; e972qp2o9ktnkt7bgndnujobppikedi Moduł:Wikibooks/Przykład/Parametry/LiczbaElementówNienazwanychTablicy/Kod 1 828 64153 555801 2026-09-12T11:18:27Z Persino 2851 Utworzono nową stronę „local p={}; p["Przykład"]=function(frame) local tabela={[2]="nazwa1",[10]="nazwa2",[15]="nazwa3",[18]="nazwa4",}; local parametry_modul=require("Module:Parametry"); local liczba_elementow_nienazwanych_tablicy=parametry_modul["LiczbaElementówNienazwanychTablicy"](tabela,true,false); local zrodlolua_modul=require("Module:ŹródłoLua"); local wikikod=zrodlolua_modul["ŹródłoLua"](frame,{ {"liczba_elementow_nienazwanych_tablicy",liczba_elementow_nie…” 555801 Scribunto text/plain local p={}; p["Przykład"]=function(frame) local tabela={[2]="nazwa1",[10]="nazwa2",[15]="nazwa3",[18]="nazwa4",}; local parametry_modul=require("Module:Parametry"); local liczba_elementow_nienazwanych_tablicy=parametry_modul["LiczbaElementówNienazwanychTablicy"](tabela,true,false); local zrodlolua_modul=require("Module:ŹródłoLua"); local wikikod=zrodlolua_modul["ŹródłoLua"](frame,{ {"liczba_elementow_nienazwanych_tablicy",liczba_elementow_nienazwanych_tablicy,}, }); return wikikod; end; return p; in74mql0bj5e9h5irz89t8kdjp7qvcp Moduł:Wikibooks/Przykład/Parametry/LiczbaElementówTablicy/Kod 1 828 64154 555802 2026-09-12T11:21:10Z Persino 2851 Utworzono nową stronę „local p={}; p["Przykład"]=function(frame) local tabela={ 10, nazwa = 5, parametr = "tak", }; local parametry_modul=require("Module:Parametry"); local liczba_elementow_tablicy=parametry_modul["LiczbaElementówTablicy"](tabela,true); local zrodlolua_modul=require("Module:ŹródłoLua"); local wikikod=zrodlolua_modul["ŹródłoLua"](frame,{ {"liczba_elementow_tablicy",liczba_elementow_tablicy,}, }); return wikikod; end; return p” 555802 Scribunto text/plain local p={}; p["Przykład"]=function(frame) local tabela={ 10, nazwa = 5, parametr = "tak", }; local parametry_modul=require("Module:Parametry"); local liczba_elementow_tablicy=parametry_modul["LiczbaElementówTablicy"](tabela,true); local zrodlolua_modul=require("Module:ŹródłoLua"); local wikikod=zrodlolua_modul["ŹródłoLua"](frame,{ {"liczba_elementow_tablicy",liczba_elementow_tablicy,}, }); return wikikod; end; return p 29ffyxobd29ua7m1xszblgsj2oa4ypd Moduł:Wikibooks/Przykład/Parametry/LiczbaElementówNienazwanychZPrzedrostkiemLubNieTablicy/Kod 1 828 64155 555803 2026-09-12T11:24:02Z Persino 2851 Utworzono nową stronę „local p={}; p["Przykład"]=function(frame) local tabela={[2]="wartość1", [10]="wartosć2", [15]="wartość3", ["18"]="wartość4", ["nazwa2"] = "wartosc5", ["nazwa10"] = "wartość6", ["nazwa18"] = "wartość7", }; local parametry_modul=require("Module:Parametry"); local liczba_elementow_nienazwanych_z_przedrostkiem_lub_nie_w_tablicy=parametry_modul["LiczbaElementówNienazwanychZPrzedrostkiemLubNieTablicy"](tabela,"nazwa",true,false); local zrodlolua_mo…” 555803 Scribunto text/plain local p={}; p["Przykład"]=function(frame) local tabela={[2]="wartość1", [10]="wartosć2", [15]="wartość3", ["18"]="wartość4", ["nazwa2"] = "wartosc5", ["nazwa10"] = "wartość6", ["nazwa18"] = "wartość7", }; local parametry_modul=require("Module:Parametry"); local liczba_elementow_nienazwanych_z_przedrostkiem_lub_nie_w_tablicy=parametry_modul["LiczbaElementówNienazwanychZPrzedrostkiemLubNieTablicy"](tabela,"nazwa",true,false); local zrodlolua_modul=require("Module:ŹródłoLua"); local wikikod=zrodlolua_modul["ŹródłoLua"](frame,{ {"liczba_elementow_nienazwanych_z_przedrostkiem_lub_nie_w_tablicy",liczba_elementow_nienazwanych_z_przedrostkiem_lub_nie_w_tablicy,}, }); return wikikod; end; return p; 2noql6trbo3qd6kdcw9oa57wfsp6zku Moduł:Wikibooks/Przykład/Parametry/LiczbaElementówNienazwanychTablicy/Kod 1/opis 828 64156 555804 2026-09-12T11:26:25Z Persino 2851 Utworzono nową stronę „; Przykład, z wykorzystaniem tego modułu, daje wyniki{{dk}} {{#invoke:Wikibooks/Przykład/Parametry/LiczbaElementówNienazwanychTablicy/Kod_1|Przykład}}” 555804 wikitext text/x-wiki ; Przykład, z wykorzystaniem tego modułu, daje wyniki{{dk}} {{#invoke:Wikibooks/Przykład/Parametry/LiczbaElementówNienazwanychTablicy/Kod_1|Przykład}} cb4la6esytvwvj0gpxwou6vty2wmiho Moduł:Wikibooks/Przykład/Parametry/LiczbaElementówNienazwanychZPrzedrostkiemLubNieTablicy/Kod 1/opis 828 64157 555805 2026-09-12T11:28:43Z Persino 2851 Utworzono nową stronę „; Przykład, z wykorzystaniem tego modułu, daje wyniki{{dk}} {{#invoke:Wikibooks/Przykład/Parametry/LiczbaElementówNienazwanychZPrzedrostkiemLubNieTablicy/Kod_1|Przykład}}” 555805 wikitext text/x-wiki ; Przykład, z wykorzystaniem tego modułu, daje wyniki{{dk}} {{#invoke:Wikibooks/Przykład/Parametry/LiczbaElementówNienazwanychZPrzedrostkiemLubNieTablicy/Kod_1|Przykład}} ngz2v65efxb1bu3jzaemby3kraci399 Moduł:Wikibooks/Przykład/Parametry/LiczbaElementówNumerowanychTablicy/Kod 1/opis 828 64158 555806 2026-09-12T11:30:53Z Persino 2851 Utworzono nową stronę „; Przykład, z wykorzystaniem tego modułu, daje wyniki{{dk}} {{#invoke:Wikibooks/Przykład/Parametry/LiczbaElementówNumerowanychTablicy/Kod_1|Przykład}}” 555806 wikitext text/x-wiki ; Przykład, z wykorzystaniem tego modułu, daje wyniki{{dk}} {{#invoke:Wikibooks/Przykład/Parametry/LiczbaElementówNumerowanychTablicy/Kod_1|Przykład}} g2t5nqg7tzd6tm3kq4rxde1b4rt8bt6 Moduł:Wikibooks/Przykład/Parametry/LiczbaElementówTablicy/Kod 1/opis 828 64159 555807 2026-09-12T11:33:33Z Persino 2851 Utworzono nową stronę „; Przykład, z wykorzystaniem tego modułu, daje wyniki{{dk}} {{#invoke:Wikibooks/Przykład/Parametry/LiczbaElementówTablicy/Kod_1|Przykład}}” 555807 wikitext text/x-wiki ; Przykład, z wykorzystaniem tego modułu, daje wyniki{{dk}} {{#invoke:Wikibooks/Przykład/Parametry/LiczbaElementówTablicy/Kod_1|Przykład}} lgqczhv0z0xpaxmzremj4x7rkjzimx2 Kategoria:Szablony, zwykłe, przykładów stron projektu/Parametry 14 64160 555809 2026-09-12T11:43:48Z Persino 2851 Utworzono nową stronę „{{Kategoria|Szablony, zwykłe, przykładów stron projektu}}” 555809 wikitext text/x-wiki {{Kategoria|Szablony, zwykłe, przykładów stron projektu}} k0a9633pzcjycwu570hobfyvamwg7w6 Szablon:Wikibooks/Przykład/Parametry/LiczbaElementówNumerowanychSzablonu/Wikikod 1 10 64161 555810 2026-09-12T11:48:46Z Persino 2851 Utworzono nową stronę „<includeonly>{{#invoke:Parametry|LiczbaElementówNumerowanychSzablonu|niepuste=tak|mnoga=tak}}</includeonly><noinclude>{{Dokumentacja}}</noinclude>” 555810 wikitext text/x-wiki <includeonly>{{#invoke:Parametry|LiczbaElementówNumerowanychSzablonu|niepuste=tak|mnoga=tak}}</includeonly><noinclude>{{Dokumentacja}}</noinclude> ikwiu3r6t7eisky5rzv1jfedmlubctg Szablon:Wikibooks/Przykład/Parametry/LiczbaElementówNumerowanychSzablonu/Wikikod 1/opis 10 64162 555811 2026-09-12T11:54:04Z Persino 2851 Utworzono nową stronę „{{Podstrona dokumentacji}} <!-- DODAWAJ KATEGORIE NA DOLE STRONY --> == Ilustracja == Jest to szablon przykład ilustrujący działanie funkcji {{m|Parametry|LiczbaElementówNumerowanychSzablonu}} w dokumentacji modułu {{ld2|Parametry}}. Jest to szablon przykład ilustrujący działanie funkcji {{m|Parametry|LiczbaElementówNumerowanychSzablonu}} w dokumentacji modułu {{ld2|Parametry}}. == Przykład == {{Pre start}} {{Code|{{s|Wikibooks/Przykład/Parametry/…” 555811 wikitext text/x-wiki {{Podstrona dokumentacji}} <!-- DODAWAJ KATEGORIE NA DOLE STRONY --> == Ilustracja == Jest to szablon przykład ilustrujący działanie funkcji {{m|Parametry|LiczbaElementówNumerowanychSzablonu}} w dokumentacji modułu {{ld2|Parametry}}. Jest to szablon przykład ilustrujący działanie funkcji {{m|Parametry|LiczbaElementówNumerowanychSzablonu}} w dokumentacji modułu {{ld2|Parametry}}. == Przykład == {{Pre start}} {{Code|{{s|Wikibooks/Przykład/Parametry/LiczbaElementówNumerowanychSzablonu/Wikikod 1|nazwa1|nazwa2|nazwa3|nazwa4|nazwa5|nazwa6|nazwa7|nazwa8|nazwa9}}}} → {{Tt|{{Wikibooks/Przykład/Parametry/LiczbaElementówNumerowanychSzablonu/Wikikod 1|nazwa1|nazwa2|nazwa3|nazwa4|nazwa5|nazwa6|nazwa7|nazwa8|nazwa9}}}} {{Pre koniec}} {{BrClear}} <includeonly> {{Kategoria|Szablony, zwykłe, przykładów stron projektu/Ramka}} </includeonly> kp6hye3y4sy1gus1z5ixj7oliac80ri 555812 555811 2026-09-12T11:55:17Z Persino 2851 555812 wikitext text/x-wiki {{Podstrona dokumentacji}} <!-- DODAWAJ KATEGORIE NA DOLE STRONY --> == Ilustracja == Jest to szablon przykład ilustrujący działanie funkcji {{m|Parametry|LiczbaElementówNumerowanychSzablonu}} w dokumentacji modułu {{ld2|Parametry}}. Jest to szablon przykład ilustrujący działanie funkcji {{m|Parametry|LiczbaElementówNumerowanychSzablonu}} w dokumentacji modułu {{ld2|Parametry}}. == Przykład == {{Pre start}} {{Code|{{s|Wikibooks/Przykład/Parametry/LiczbaElementówNumerowanychSzablonu/Wikikod 1|nazwa1|nazwa2|nazwa3|nazwa4|nazwa5|nazwa6|nazwa7|nazwa8|nazwa9}}}} → {{Tt|{{Wikibooks/Przykład/Parametry/LiczbaElementówNumerowanychSzablonu/Wikikod 1|nazwa1|nazwa2|nazwa3|nazwa4|nazwa5|nazwa6|nazwa7|nazwa8|nazwa9}}}} {{Pre koniec}} {{BrClear}} <includeonly> {{Kategoria|Szablony, zwykłe, przykładów stron projektu/Parametry}} </includeonly> limp0bw34oq0vn0uvwxcvceg8aou8sm