Les opérateurs de collection

Les opérateurs de collection permettent de manipuler le contenu des tableaux en limitant, en décalant ou en générant des ensembles de valeurs numériques. Ils offrent un moyen simple de contrôler la partie du tableau qui doit être exploitée dans une expression, qu’il s’agisse de prendre seulement les premiers éléments, d’ignorer les premiers pour parcourir la suite, ou de créer une plage d’indices.
Ces opérateurs sont particulièrement utiles pour organiser l’affichage des données dans un thème Blogger, par exemple en affichant un nombre précis de posts, en paginant les résultats ou en générant une séquence de valeurs dynamiques.
Les origines des opérateurs de collection
Les opérateurs de collection trouvent leur origine dans plusieurs traditions de l’informatique, toutes liées à la nécessité de manipuler efficacement des ensembles de données. Leur fonction — limiter, décaler ou extraire une portion d’un tableau — n’est pas nouvelle : elle s’appuie sur des pratiques établies depuis plusieurs décennies.
Dans le monde des bases de données relationnelles, les clauses LIMIT
et OFFSET
de SQL sont devenues des standards incontournables dès la fin des années 1970. Elles permettent de restreindre le nombre de résultats retournés et de naviguer par pages dans un grand ensemble de données. Cette logique de “pagination” est restée la référence pour bon nombre d’environnements.
Les langages de programmation fonctionnelle et leurs héritiers modernes (Haskell, Scala, C# avec LINQ) ont ensuite popularisé des opérateurs tels que take
, drop
, skip
, slice
ou range
. Ces opérations, décrites de façon déclarative, facilitent la sélection de sous-séquences au sein d’une collection, avec une syntaxe compacte et lisible.
Du côté des langages impératifs et de script, on retrouve la même idée sous la forme du slicing : Python avec list[0:5]
, JavaScript avec array.slice(2,10)
ou Ruby avec ses méthodes de découpage. Toutes ces approches traduisent le même besoin : ne manipuler qu’une portion utile d’un tableau.
Enfin, cette logique s’enracine aussi dans les mathématiques discrètes, où la notation des intervalles d’indices (i ∈ [m..n]
) fournit la base conceptuelle de ces sous-ensembles.
L’adaptation de Blogger s’inscrit donc dans une continuité : en intégrant des opérateurs comme limit
, offset
, take
ou to
, la plateforme reprend des mécanismes universels pour les rendre accessibles directement dans l’écriture des thèmes.
Les syntaxes d’écriture
Les opérateurs de collection s’utilisent principalement en syntaxe infixe, où l’opérateur est placé entre ses deux opérandes. Pour certains d’entre eux, comme take
, limit
, skip
et offset
, Blogger propose également une syntaxe fonctionnelle, qui exprime l’opération sous forme de fonction recevant ses paramètres entre parenthèses. L’opérateur to
, en revanche, ne dispose que de la forme infixe et sert exclusivement à générer une plage de nombres.
Noms | Opérateurs | Syntaxes | Opérandes | Résultat |
---|---|---|---|---|
Jusqu'à |
take ou limit |
Syntaxes Infixes (par défaut) array take number array limit number Syntaxes Fonctionnelles take (array, number) limit (array, number) |
2 | array |
À partir de |
skip ou offset |
Syntaxes Infixes (par défaut) array skip number array offset number Syntaxes Fonctionnelles skip (array, number) offset (array, number) |
2 | array |
Plage de nombres |
to |
Syntaxe Infixe (par défaut) number to number |
2 | array[number] |
Les opérateurs
Jusqu'à
Les opérateurs take
et limit
permettent de définir une limite maximum de sets d'un tableau.
Les opérateurs
take
etlimit
doivent être attaché uniquement à un tableau.Les opérateurs
take
etlimit
ne peuvent pas être associé à l'opérateurto
.Les opérateurs
take
etlimit
peuvent être imbriqué dans plusieurs expressions Blogger dont le résultat doit être un tableau.Le tableau peut être :
Une valeur explicite.
Une donnée.
Le résultat d'une expression Blogger (une opération imbriquée).
Le nombre peut être :
Une valeur explicite.
Une donnée.
Le résultat d'une expression Blogger (une opération imbriquée).
Exemple avec des valeurs explicites
<b:loop values='["toto","titi","tutu"] take 2' var='myArray'> <data:myArray/> </b:loop>
Le tableau contient 3 entrées, dont les 2 premières seront lues.
Exemple avec des données numériques
<b:loop values='data:posts limit (data:posts.length - (data:posts.length % 2)) / 2' var='myArray'> <data:myArray.title/> </b:loop>
Seulement la première moitié du tableau sera lue.
À partir de
Les opérateurs skip
et offset
permettent de démarrer la lecture d'un tableau à partir d'un item déterminé.
L'opérateur
skip
etoffset
doivent être attaché uniquement à un tableau.L'opérateur
skip
etoffset
ne peuvent pas être associé à l'opérateurto
.L'opérateur
skip
etoffset
peuvent être imbriqué dans plusieurs expressions Blogger dont le résultat doit être un tableau.Le tableau peut être :
Une valeur explicite.
Une donnée.
Le résultat d'une expression Blogger (une opération imbriquée).
Le nombre peut être :
Une valeur explicite.
Une donnée.
Le résultat d'une expression Blogger (une opération imbriquée).
Exemple avec des valeurs explicites
<b:loop values='["toto","titi","tutu"] skip 2' var='myArray'> <data:myArray/> </b:loop>
Le tableau contient 3 entrées, dont les 2 premières seront ignorées.
Exemple avec des données numériques
<b:loop values='data:posts offset (data:posts.length - (data:posts.length % 2)) / 2' var='myArray'> <data:myArray.title/> </b:loop>
Seulement la seconde moitié du tableau sera lue.
Plage de nombres
L'opérateur to
crée un tableau de nombres.
L'opérateur ne peut être utilisé que dans une balise
<b:loop>
.La plage de nombres peut être chronologique ou antéchronologique.
Les nombres négatifs sont autorisés.
Les décimales ne sont pas autorisées.
Les valeurs numériques peuvent être :
Une valeur explicite.
Une donnée.
Le résultat d'une expression Blogger (une opération imbriquée).
L'opération ne peut être associée à d'autres opérations (l'expression + une autre expression).
Exemple avec des valeurs numériques explicites
<b:loop values='5 to 10' var='maPlage'/> <data:maPlage/> </b:loop>
Le résultat de l'opération sera une plage de nombres entre 5 et 10.
Exemple avec des données numériques
<b:loop values='0 to data:posts.length - 1' var='maPlage'> <data:maPlage/> </b:loop>
Le résultat de l'opération recompose l'indice du tableau posts
.