Sari la conținut

Format:For loop/doc

De la Wikipedia, enciclopedia liberă

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.

GrupParametruSemnificațieValoare implicită
Obligatoriu 1 (fără nume)separatorul afișat între apeluri (poate fi gol; spațiile sunt păstrate)
callformatul care trebuie apelat
pvnumele (sau numărul) parametrului variabil al formatului apelat1
Opțiunea 1:
secvență iterată
startprima valoare numerică transmisă parametrului variabil1
stopvaloarea numerică maximă transmisă parametrului variabil
bypasul de iterare dintre valorile transmise parametrului variabil1
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)
skipBlanksse setează la „true” pentru a omite valorile goale ale parametrilorfalse
Alți parametri
opționali
pc[N]nnumele (sau numărul) celui de-al N-lea parametru static al formatului apelat
pc[N]vvaloarea celui de-al N-lea parametru static al formatului apelat
prefixprefix static adăugat înaintea fiecărei valori transmise parametrului variabil
postfixsufix static adăugat după fiecare valoare transmisă parametrului variabil
substallse 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.

  • 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.

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.