Extension:LoopFunctions/fr

L'extension LoopFunctions permet une fonctionnalité de boucle limitée dans le wikicode, où une variable ( par défaut) est remplacée par le numéro courant d'itération de la boucle. La variable peut être utilisée dans un texte simple ou un lien. Le résultat de l'ensemble de la boucle peut également être inséré dans une expression, par exemple pour calculer une factorielle. Cependant, le corps de boucle est évalué avant de remplacer la variable, de sorte qu'un calcul à l'intérieur de ce corps de boucle en fonction de la valeur de la variable, n'est pas possible.

#for
Où n est le nombre d'itérations et le texte est le texte à répéter.

Si, après l'expansion des modèles, des fonctions de parser et des variables, le texte contient le texte  ou ce qui est défini par le troisième paramètre, il sera remplacé par l'itération actuelle, à partir de 1.



Utilisation dans les modèles
En appelant le modèle, si le modèle foo contient: , cela donnera le wikicode :



Utilisation pour le calcul
Total des carrés de 1^2 à 5^2 : donne 55

Factorielle 6 (6!): donne 720

Limitation
Dans le corps de boucle, les modèles, les fonctions d'analyse et les variables sont expansées avant de remplacer la variable d'index par ses valeurs, à savoir :


 * Parameter of a parser function depending on the index variable :

Code gives  ; the result is in this case the same as when the repetition was done first, and then the evaluation of each item.

Code gives  ; the result is in this case not the same, because   is changed to , and therefore not treated as index variable.

Applying #expr to an expression containing the index variable does not work: expansion of #expr in e.g. gives the text so this text will be repeated:


 * Template name depending on the index variable :

Code gives:
 * if the template with the literal name  does not exist: Template:a1 Template:a2 Template:a3 (the loop body is evaluated as Template:a$n$, after which the loop function repeats that, substituting  ).

if the template with the literal name  does exist: the result of, i.e., the content is repeated unchanged.


 * Limitation combinée avec : Within the loop a variable can be assigned a value depending on the loop variable, and the value of this variable can be retrieved.
 * However, it seems that within the loop the variable cannot be assigned a new value depending on its own current value. Instead the value on entering the loop is taken.

#foreach
Ne fonctionne que s'il est utilisé par un modèle.

The mask is a string in the format prefixsuffix where  can be changed via the replacement parameter. The function #foreach, called inside a template, will produce the text for $n$ = 1, 2, 3,... as long as prefixsuffix is a template parameter defined in the template call.

If the text contains the text  or what is defined by the third parameter, that will be replaced by the current value of.

It seems that the whole call of #foreach is ignored if the loop body contains a template call or a parser function call, or if the loop body does not contain.

Exemple
Calling the template using the template foo, containing:  will result in the expanded wikitext   and hence the output:
 * foo1_bar = b
 * foo2_bar = a

Since  is not defined,   is not listed either; neither are a and , the parameter names which exist but do not match the pattern.



Utilisation sans préfixe ou suffixe
The code call Template:Showpars containing  and gives:


 * 1 = abc
 * 2 = de
 * 3 = ijk

Content of a template that links to the pages given by the values of the unnamed parameters:

Installation


Voir aussi

 * m:Template:For