Format:For loop
|
|
Aceasta este pagina de documentație pentru Format:For loop. Pagina descrie modul de folosire al formatului și conține categoriile de care acesta aparține, precum și orice altceva ce nu face parte din formatul propriu-zis. |
| Acest format este folosit în peste 35.000 de pagini, sau aproximativ 1% din totalul paginilor. Modificările aduse acestuia pot fi vizibile imediat. Pentru a testa modificările folosiți subpaginile: /cutie cu nisip sau /test, sau propria cutie cu nisip. Luați în considerare discutarea eventualelor modificări cu alți utilizatori pe pagina de discuție înainte de a le implementa. |
| Utilizează Lua: |
Acest format implementează o buclă de tip for sau foreach.
Formatul apelează de mai multe ori un format specificat de utilizator („formatul apelat”): câte o dată pentru fiecare valoare din 1) o secvență iterată sau 2) o listă explicită. Fiecare valoare din secvență sau listă este transmisă aceluiași parametru specificat al formatului apelat („parametrul variabil”). Opțional, valorilor transmise li se pot adăuga un prefix și un sufix.
Pe lângă parametrul variabil specificat, altor parametri ai formatului apelat („parametri statici”) li se pot atribui valori care rămân aceleași la fiecare iterație.
Utilizare
[modificare sursă]| Grup | Parametru | Semnificație | Valoare implicită |
|---|---|---|---|
| Obligatoriu | 1 (fără nume) | separatorul afișat între apeluri (poate fi gol; spațiile sunt păstrate) | |
| call | formatul care trebuie apelat | ||
| pv | numele (sau numărul) parametrului variabil al formatului apelat | 1 | |
| Opțiunea 1: secvență iterată |
start | prima valoare numerică transmisă parametrului variabil | 1 |
| stop | valoarea numerică maximă transmisă parametrului variabil | ||
| by | pasul de iterare dintre valorile transmise parametrului variabil | 1 | |
| Opțiunea 2: valori explicite |
(parametri fără nume) | valori explicite, introduse ca parametri separați (spațiile de la început și sfârșit sunt eliminate) | |
| skipBlanks | se setează la „true” pentru a omite valorile goale ale parametrilor | false | |
| Alți parametri opționali |
pc[N]n | numele (sau numărul) celui de-al N-lea parametru static al formatului apelat | |
| pc[N]v | valoarea celui de-al N-lea parametru static al formatului apelat | ||
| prefix | prefix static adăugat înaintea fiecărei valori transmise parametrului variabil | ||
| postfix | sufix static adăugat după fiecare valoare transmisă parametrului variabil | ||
| substall | se setează la „false” pentru ca formatul apelat să nu fie substituit atunci când este substituit {{For loop}} | true |
Se poate utiliza fie opțiunea 1 (parametrii de iterare), fie opțiunea 2 (o listă explicită de valori), dar nu ambele simultan.
Primul parametru fără nume, aflat înaintea valorilor explicite, reprezintă separatorul. Separatorul este un șir afișat între apelurile formatului indicat prin |call=. Acesta nu este afișat după ultimul apel.
Atenție
[modificare sursă]- Separatorul poate fi precedat de „1=”, însă în acest caz nu poate conține linii noi, iar spațiile de la început și de la sfârșit nu pot fi păstrate.
- Dacă valoarea unui parametru conține semnul egal, utilizați {{=}}; vedeți și secțiunea despre parametrii formatelor.
- Dacă utilizați parametri numerotați, rețineți că prima valoare este parametrul 2 (de exemplu
|2=PrimaValoare), deoarece parametrul 1 este separatorul. - Dacă utilizați parametri numerotați, nu trebuie să omiteți niciun număr. Bucla se va încheia după primul parametru numerotat absent. Parametrii pot fi goi, dar nu pot lipsi.
Substituire
[modificare sursă]Versiunea actuală, bazată pe Lua, permite substituirea. Dacă |substall=no nu este specificat, substituirea formatului va substitui întregul rezultat, inclusiv apelurile formatului transmis prin |call=. Dacă parametrul este specificat, formatul va fi substituit cu o succesiune de apeluri ale formatului indicat.
Exemplu:
{{subst:For loop|sep |01|02|03|04|05|06|07|call=1x}}
produce:
01sep 02sep 03sep 04sep 05sep 06sep 07
În schimb:
{{subst:For loop|sep |01|02|03|04|05|06|07|call=1x|substall=no}}
produce:
{{1x|01}}sep {{1x|02}}sep {{1x|03}}sep {{1x|04}}sep {{1x|05}}sep {{1x|06}}sep {{1x|07}}
Pentru expandarea completă se poate utiliza și Special:ExpandTemplates.
Exemple
[modificare sursă]| Formă | Cod | Explicație | Rezultat |
|---|---|---|---|
| Iterator |
{{For loop|,
|call=1x
|start=10
|stop=50
|by=10
|prefix=valoarea
}}
|
Apelează formatul {{1x}} cu valorile 10, 20, 30, 40 și 50, adăugând prefixul „valoarea ” fiecăreia și separând rezultatele prin „, ”. |
valoarea10, valoarea20, valoarea30, valoarea40, valoarea50 |
| Valori explicite |
{{For loop|, |call=1x
|prefix=1
|00|01|02|03|04|05|06|07|08|09
}}
|
Apelează formatul {{1x}} cu valorile explicite „00”–„09”, adăugând prefixul „1” fiecărei valori și separând rezultatele prin „, ”. |
100, 101, 102, 103, 104, 105, 106, 107, 108, 109 |
| Omiterea valorilor goale |
{{For loop|, |call=1x|skipBlanks=true
|A||B|||C
}}
|
Cu |skipBlanks=true, parametrii goi sunt ignorați, astfel încât nu sunt generate apeluri inutile ale formatului și nici separatoare suplimentare. |
A, B, C |
Alte exemple cu valori explicite
[modificare sursă]Următorul exemplu utilizează cratima drept separator:
{{For loop|-|a|3|c|g|call=1x}}
și produce:
a-3-c-g
Separatorul poate conține și un rând nou:
{{For loop|
|a|3|c|g|call=1x}}
ceea ce produce:
a
3
c
g
Formatul poate fi utilizat și pentru generarea repetată a sintaxei unui tabel:
{| class="wikitable sortable"
! Test
|-
{{For loop|
{{!}}-
{{!}} |a|b|c|d|e|call=1x}}
|}
De asemenea, numărul valorilor explicite nu este limitat la 150. De exemplu:
{{For loop| |01|02|03|04|05|06|07|08|09|10|11|12|13|14|15|16|17|18|19
|20|21|22|23|24|25|26|27|28|29|30|31|32|33|34|35|36|37|38|39
|40|41|42|43|44|45|46|47|48|49|50|51|52|53|54|55|56|57|58|59
|60|61|62|63|64|65|66|67|68|69|70|71|72|73|74|75|76|77|78|79
|80|81|82|83|84|85|86|87|88|89|90|91|92|93|94|95|96|97|98|99
|100|101|102|103|104|105|106|107|108|109|110|111|112|113|114|115|116|117|118|119
|120|121|122|123|124|125|126|127|128|129|130|131|132|133|134|135|136|137|138|139
|140|141|142|143|144|145|146|147|148|149|150|151|152|153|154|call=1x}}
produce:
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154
Dacă valorile conțin semnul egal, acesta trebuie protejat:
început->{{For loop|{{=}} |01|02|03|04|05|06|07|08|09|10
|11{{=}}{{=}}{{=}}|12|13|14|15|16|17|18|19|call=1x}}<-sfârșit
produce:
început->01= 02= 03= 04= 05= 06= 07= 08= 09= 10= 11==== 12= 13= 14= 15= 16= 17= 18= 19<-sfârșit
Note privind versiunea anterioară
[modificare sursă]Versiunea actuală a formatului utilizează codul Lua din Modul:For loop. Ea înlocuiește implementarea mai veche bazată pe funcțiile parserului.
Versiunea veche era limitată la 150 de valori variabile și patru parametri constanți. Versiunea actuală nu are aceste limite. În plus, în versiunea veche separatorul nu putea păstra în toate situațiile spațiile de la început și de la sfârșit; această limitare nu se aplică versiunii actuale.