Les opérateurs d’appartenance

Blogger - Opérateurs membres / Membership operators

Les opérateurs d’appartenance servent à vérifier si une valeur fait partie d’un ensemble. Ils renvoient toujours un booléen : true si l’élément est trouvé, false sinon. Dans Blogger, on peut écrire l’appartenance dans les deux sens, soit en plaçant la valeur testée à gauche (in), soit en la comparant depuis l’ensemble (contains). Ces opérateurs offrent une manière simple et lisible de tester la présence d’un élément dans une liste, par exemple pour vérifier un libellé, une année ou un identifiant précis.

Les origines des opérateurs d’appartenance

L’idée d’appartenance remonte directement aux fondements des mathématiques modernes, et plus particulièrement à la théorie des ensembles élaborée à la fin du XIXᵉ siècle par Georg Cantor. On y retrouve le symbole (parfois lu « appartient à ») pour indiquer qu’un élément fait partie d’un ensemble. Par exemple, écrire 3 ∈ {1,2,3,4} signifie que le nombre 3 est bien contenu dans cet ensemble. Cette notation est devenue un standard universel, enseigné dès les premiers cours de mathématiques et utilisée dans la logique formelle, l’algèbre et l’informatique.

Avec l’essor de l’informatique et des premiers langages de programmation, la notion d’appartenance a trouvé un terrain d’application naturel. Les programmes manipulent en permanence des collections — tableaux, listes, ensembles — et il est essentiel de pouvoir vérifier si une valeur donnée y figure ou non.

Plusieurs syntaxes se sont imposées au fil du temps :

  • SQL a popularisé l’usage du mot-clé IN, qui permet de vérifier si une valeur figure dans une liste ou un sous-ensemble de résultats. L’exemple typique est WHERE pays IN ('FR', 'BE', 'CH'), directement inspiré de la logique ensembliste.

  • Python a repris une syntaxe très proche de la lecture naturelle avec in et not in, utilisables sur des listes, tuples, ensembles ou dictionnaires. Cette simplicité a largement contribué à sa popularité.

  • JavaScript, de son côté, a d’abord utilisé indexOf() puis includes() pour exprimer la même idée : déterminer si un tableau contient une valeur donnée.

  • Dans des langages plus anciens comme Pascal ou Fortran, on trouvait déjà des mécanismes permettant de tester l’appartenance à un ensemble ou à un intervalle, preuve que la notion était considérée comme fondamentale dès les débuts de la programmation structurée.

Cette diversité montre que l’opérateur d’appartenance n’est pas une invention isolée, mais bien une traduction directe d’un concept mathématique universel dans le domaine de la programmation. Son rôle est de rendre explicite une question très simple et omniprésente : « cet élément fait-il partie de cet ensemble ? ».

Aujourd’hui, quel que soit le langage, cette idée reste centrale. Les variations de syntaxe (in, contains, includes, IN) reflètent surtout des choix de style, mais elles s’ancrent toutes dans la même logique héritée des mathématiques.

Les syntaxes d’écriture

L’appartenance s’exprime toujours avec deux opérandes : une valeur testée et un ensemble dans lequel on vérifie sa présence. Blogger met à disposition deux formes, qui expriment la même idée mais s’écrivent dans un ordre différent.

Noms Opérateurs Syntaxes Opérandes Résultat

Dans

in

Syntaxes Infixes (par défaut)

string in array[string]
boolean in array[boolean]
number in array[number]

Syntaxes Fonctionnelles

in (string, array[string])
in (boolean, array[boolean])
in (number, array[number])
2 boolean

Contient

contains

Syntaxes Infixes (par défaut)

array[string] contains string
array[boolean] contains boolean
array[number] contains number

Syntaxes Fonctionnelles

contains (array[string], string)
contains (array[boolean], boolean)
contains (array[number], number)
2 boolean

Utilisations et règles

  • Les opérateurs d’appartenance renvoient toujours une valeur de type booléen :

    • true si l’élément est trouvé dans l’ensemble,

    • false sinon.

  • La valeur testée doit être du même type que les éléments du tableau :

    • stringarray[string].

    • booleanarray[boolean].

    • numberarray[number].

  • La valeur comparée peut être exprimée de différentes manières :

    • Une valeur explicite ("blog", 42, true…),

    • Une donnée ou une variable (data:view.search.label, data:view.isHomepage…),

    • Ou le résultat d’une expression Blogger (ex. data:posts.length gt 0).

  • Le résultat de l’opération peut être utilisé dans toute expression qui accepte un booléen, par exemple dans un <b:if> ou comme condition d’un opérateur ternaire.

  • Attention : le mot-clé contains existe aussi comme opérateur de contenu lorsqu’il est appliqué à deux chaînes de caractères (ex. "blogger" contains "blog"). Il ne faut pas le confondre avec l’opérateur d’appartenance appliqué aux collections.

  • Bonnes pratiques :

    • Utiliser in ou contains selon le sens qui rend l’expression la plus lisible,

    • Éviter de mélanger des types différents dans un même test (risque de résultat toujours faux),

Quelques exemples

Opérateur « IN »

<b:if cond='"Lingua" in ["Agnes","Angie","Lingua", "T'Met", "Tarsi"]'>

</b:if>

Cet exemple illustre la syntaxe la plus classique : on teste si une valeur précise appartient à une liste. Ici, la chaîne "Lingua" est bien présente dans le tableau, donc la condition est évaluée à true. C’est la manière la plus directe de vérifier l’appartenance d’un élément.

Opérateur « CONTAINS »

<b:if cond='["Agnes","Angie","Lingua", "T'Met", "Tarsi"] contains "Lingua"'>

</b:if>

La même logique peut être exprimée dans l’autre sens, avec contains : le tableau est placé à gauche et la valeur testée à droite. Dans ce cas, la chaîne "Lingua" n’apparaît pas dans le tableau, le résultat est donc false. Le choix entre in et contains dépend surtout de la lisibilité que vous souhaitez donner à votre code.

Imbrication dans une opération Lambda

<b:eval expr='data:posts count p => p.date.year in [2020,2021,2022,2023,2024,2025]'/>

Ici, l’opérateur in est imbriqué dans un lambda : pour chaque post, on teste si son année de publication appartient à la liste [2020,2021,2022,2023,2024,2025]. L’opération count retourne le nombre total de posts dont l’année correspond à l’une de ces valeurs. On obtient donc un résultat numérique (le compteur) basé sur une comparaison d’appartenance.

Combiner avec une opération Lambda

<b:if cond='2025 in (data:posts map p => p.date.year)'>

</b:if>

Cette fois, l’appartenance est utilisée après un map. La fonction lambda construit d’abord un tableau de toutes les années de publication, puis 2025 in … teste si l’année 2025 y figure. Le résultat est true dès qu’au moins un post correspond.

Imbrication dans une opération ternaire

<b:eval expr='data:view.search.label in ["photos","videos"] ? "Vous êtes dans la photothèque du blog" : "Vous êtes dans la vidéothèque du blog"'/>

L’opérateur d’appartenance peut aussi servir de condition dans un ternaire. Ici, on vérifie si le libellé de recherche correspond à "photos" ou "videos". Si c’est le cas, on affiche le premier message, sinon le second. C’est une manière élégante de sélectionner un texte parmi deux alternatives en fonction de l’appartenance.

Imbrication dans une opération logique

<b:if cond='data:posts.size in [7,20,100] and data:view.isMultipleItems'>

</b:if>

Enfin, l’appartenance peut être combinée avec d’autres opérateurs logiques. Ici, la condition vérifie à la fois que la taille du tableau de posts correspond à l’une des valeurs de la liste [7,20,100] et que la page courante est une page multi-posts. Les deux conditions doivent être vraies pour que l’ensemble s’évalue à true.

Quiz récapitulatif

Chargement du quiz…

Spotlight

Populaires cette semaine

L'opérateur de coalescence (alias Elvis)

Structurer le contenu pour la chunk-ability