Les opérateurs de comparaison

Blogger - Opérateurs de comparaison  / Comparison operators

Sur Blogger, les opérateurs de comparaison servent à répondre à une question simple : ces deux valeurs sont-elles identiques, différentes, plus petites ou plus grandes ?

Qu’il s’agisse de vérifier un nombre, une chaîne ou une donnée de blog, le résultat est toujours booléen (true ou false), prêt à être utilisé dans une condition ou une expression imbriquée.

De la balance au booléen

Comparer fait partie des besoins humains les plus anciens. Bien avant l’invention des chiffres, les chasseurs-cueilleurs savaient distinguer qui avait plus de bêtes, plus de fruits ou plus d’armes. Les premières civilisations ont formalisé cette intuition à l’aide de balances et de bâtons gradués : autant d’outils pour vérifier l’égalité ou constater une différence. Les Égyptiens, par exemple, utilisaient déjà des signes hiéroglyphiques pour exprimer des rapports de grandeur.

Chez les Grecs, les mathématiques ont poussé cette logique plus loin. Euclide a défini les proportions et les rapports entre grandeurs, tandis qu’Aristote posait les bases d’une logique où une proposition est soit vraie, soit fausse. Cette idée simple allait devenir, bien des siècles plus tard, la clé de tout raisonnement booléen.

Au Moyen Âge, les savants arabes comme Al-Khwarizmi ont donné naissance à l’algèbre, rendant les comparaisons manipulables sous forme de symboles et d’équations (x < y, x = y). Puis, à l’époque moderne, Leibniz a pressenti que toute logique pouvait se réduire à des 0 et des 1. Au XIXᵉ siècle, George Boole formalisa cette intuition en créant la logique booléenne, où chaque comparaison conduit à un résultat binaire : vrai ou faux.

Avec l’informatique, ces concepts sont devenus des opérateurs standards : ==, !=, <, <=, >, >=. Sur Blogger, on retrouve cette même tradition : les opérateurs de comparaison permettent de tester des valeurs (nombres, chaînes, booléens) et de décider de l’affichage d’un bloc, d’une condition ou d’un style, toujours sur la base d’un résultat booléen (true ou false).

Les syntaxes d'écriture

Les opérateurs de comparaison peuvent s’écrire de deux façons. La syntaxe infixe est la plus naturelle : l’opérateur est placé entre deux valeurs (a == b). La syntaxe fonctionnelle, moins courante, place l’opérateur avant les valeurs entre parenthèses (==(a, b)). Les deux sont équivalentes et produisent le même résultat.

Ce principe n’est pas propre à Blogger : la syntaxe infixe est la même qu’en JavaScript, Python ou PHP (a == b), tandis que la syntaxe fonctionnelle rappelle les appels de fonction classiques (eq(a, b)).

Noms Opérateurs Syntaxes Opérandes Résultat

Égalité

== ou eq

Syntaxes Infixes (par défaut)

allType == allType
allType eq allType

Syntaxes Fonctionnelles

==(allType,allType)
eq(allType,allType)
2 boolean

Inégalité

!= ou neq

Syntaxes Infixes (par défaut)

allType != allType
allType neq allType

Syntaxes Fonctionnelles

!=(allType,allType)
neq(allType,allType)
2 boolean

Inférieur

< ou lt

Syntaxes Infixes (par défaut)

number < number
number lt number

Syntaxes Fonctionnelles

<(number,number)
lt(number,number)
2 boolean

Inférieur ou égal

<= ou lte

Syntaxes Infixes (par défaut)

number <= number
number lte number

Syntaxes Fonctionnelles

<=(number,number)
lte(number,number)
2 boolean

Supérieur ou égal

>= ou gte

Syntaxes Infixes (par défaut)

number >= number
number gte number

Syntaxes Fonctionnelles

>=(number,number)
gte(number,number)
2 boolean

Supérieur

> ou gt

Syntaxes Infixes (par défaut)

number > number
number gt number

Syntaxes Fonctionnelles

>(number,number)
gt(number,number)
2 boolean

Utilisations et règles

  • Les opérateurs de comparaison renvoient toujours une valeur booléenne (true ou false).

  • Les règles dépendent du type des opérandes :

    • Nombre : peut être comparé avec un autre nombre pour tous les opérateurs (==, !=, <, >, <=, >=).

    • Chaîne : peut uniquement être comparée avec une autre chaîne via l’égalité ou l’inégalité (==, !=). Les opérateurs < et > ne prennent pas en charge la comparaison lexicographique.

    • Booléen : ne peut être comparé qu’avec un autre booléen par égalité/inégalité.

    • Tableaux : peuvent être comparés entre eux par égalité/inégalité, à condition que les deux soient du même type et de même taille.

    • Objets et tableaux d’objets : toute comparaison renvoie null.

  • Les opérandes peuvent être :

    • Une valeur explicite (ex. "Photos", 10, true)

    • Une donnée Blogger (ex. data:view.type)

    • Le résultat d’une autre expression (comparaison imbriquée).

  • Une opération de comparaison peut être imbriquée dans une autre opération qui attend un résultat booléen (opérateurs logiques, ternaires, lambdas, etc.).

Les opérateurs

Égalité

L’opérateur d’égalité (== ou eq) compare deux valeurs et renvoie true si elles sont identiques, false sinon.

  • Exemple simple avec des nombres

    5 == 5 renvoie true.

  • Exemple simple avec des chaînes

    "chat" eq "chien" renvoie false.

  • Exemple mixte avec des nombres

    10 eq data:post.length renvoie true si le nombre d’articles est égale à 10.

  • Exemple mixte avec des chaînes

    data:view.search.label == "Photos" renvoie true si la valeur de la donnée est Photos.

L’égalité est stricte : il ne suffit pas que les valeurs se ressemblent, elles doivent être rigoureusement identiques.

Inégalité

L’opérateur d’inégalité (!= ou neq) renvoie true si les valeurs sont différentes, false si elles sont identiques.

  • Exemple simple avec des nombres

    10 != 7 renvoie true.

  • Exemple simple avec des chaînes

    "chat" neq "chat" renvoie false.

  • Exemple mixte avec des nombres

    data:post.length neq 10 renvoie true si le nombre d’articles n'est pas égale à 10.

  • Exemple mixte avec des chaînes

    data:view.type neq "item" renvoie true si la page n’est pas un article.

Cet opérateur est idéal pour exclure des cas particuliers. Il est souvent employé pour afficher un contenu par défaut ou masquer un bloc dans une situation spécifique.

Inférieur

Cet opérateur (< ou lt) teste si la première valeur est strictement inférieure à la seconde.

  • Exemple simple

    3 < 7 renvoie true.

  • Exemple mixte

    data:posts.size lt 5 renvoie true si la page contient moins de 5 articles.

Il permet de poser des seuils minimaux et de conditionner l’affichage à une valeur en dessous d’un certain niveau.

Inférieur ou égal

Cet opérateur (<= ou lte) vérifie si la première valeur est inférieure ou égale à la seconde.

  • Exemple simple

    8 <= 8 renvoie true.

  • Exemple mixte

    data:posts.size lte 10 renvoie true si la page contient au maximum 10 articles.

Il est utile pour fixer des limites maximales ou gérer des quotas, comme limiter l’affichage d’articles ou de commentaires.

Supérieur

Cet opérateur (> ou gt) teste si la première valeur est strictement supérieure à la seconde.

  • Exemple simple

    9 > 6 renvoie true.

  • Exemple mixte

    data:view.description.size gt 150 renvoie true si la description dépasse 150 caractères.

On l’utilise souvent pour vérifier que les conditions minimales sont dépassées, par exemple s’assurer qu’un texte est suffisamment long ou qu’il existe assez de résultats.

Supérieur ou égal

Cet opérateur (>= ou gte) vérifie si la première valeur est supérieure ou égale à la seconde.

  • Exemple simple

    7 >= 10 renvoie false.

  • Exemple mixte

    data:posts.size gte 1 renvoie true si la page contient au moins un article.

C’est l’opérateur des conditions de base : il permet de s’assurer qu’un contenu ou un nombre minimal existe avant d’exécuter une action (par exemple, afficher une liste uniquement si elle n’est pas vide).

Quelques exemples

Égalité

<b:if cond='data:view.search.label == data:blog.pageName'>

</b:if>

Comparer deux données du blog pour vérifier si elles sont identiques.

Résultat : true si le libellé affiché correspond au nom de la page courante.

inégalité

<b:if cond='data:view.type != "item"'>

</b:if>

Tester si une page n’est pas de type article.

Résultat : true si la page courante n’est pas un article ou une page autonome.

Inférieur ou égal à

<b:if cond='data:posts.size lte 10'>

</b:if>

Limiter l’affichage à un maximum de dix articles.

Résultat : true si la page contient 10 articles ou moins.

Imbrication dans une opération Lambda

<b:eval expr='data:posts count (p => p.date.year eq 2025)'/>

Compter uniquement les articles publiés en 2025.

Résultat : nombre d'articles sur la page courante dont l’année de publication est 2025.

Imbrication dans une opération ternaire

<b:eval expr='data:view.search.label == "Photos"
    ? "Vous êtes dans la catégorie Photos"
    : "Vous n'êtes pas dans la catégorie Photos"'/>

Afficher un message personnalisé selon la catégorie.

Résultat : affiche l’un ou l’autre message selon la valeur du libellé.

Imbrication dans une opération logique

<b:if cond='data:view.description.size gte 150
            and data:view.isPage'>

</b:if>

Combiner plusieurs conditions dans une même expression.

Résultat : true si la description dépasse 150 caractères et que la page courante est une page autonome.

Conditions en cascade

<b:if cond='data:posts any (p => p.date.year lt 2000)'>
  <p>Articles anciens (avant 2000)</p>
<b:elseif cond='data:posts any (p => p.date.year lt 2010)'/>
  <p>Articles de la décennie 2000</p>
<b:elseif cond='data:posts any (p => p.date.year lt 2020)'/>
  <p>Articles de la décennie 2010</p>
<b:else/>
  <p>Articles récents (2020 et plus)</p>
</b:if>

Illustration de la logique if/elseif/else appliquée à l’ensemble des articles de la page courante, en utilisant un lambda any pour vérifier les années de publication.

Résultat : affiche un message en fonction de la tranche d’année dans laquelle se trouvent les articles de la page courante. L’ordre des conditions est essentiel : si lt 2020 était placé avant lt 2010, les articles des années 2000–2009 ne seraient jamais détectés.

Afficher une liste séparée par des virgules

<b:loop index='i' values='data:items' var='item'>
  <data:item.name/>
  <b:if cond='(data:i + 1) lt data:items.size'>,</b:if>
</b:loop>

Cas pratique très courant : générer une liste où chaque élément est suivi d’une virgule, sauf le dernier.

Résultat : affiche les noms des éléments séparés par des virgules (Item 1, Item 2, Item 3) sans virgule après le dernier élément.

Quiz récapitulatif

Chargement du quiz…

Spotlight

Populaires cette semaine

Call-to-Action - L'appel à l'action

Les types d’enchères (CPC, CPM, tCPA, tROAS)