Les opérateurs membres / Membership operators : in, contains

Blogger - Opérateurs membres / Membership operators

Les opérateurs membres ont la particularité de vérifier l'équivalence d'une valeur à une valeur contenue dans un ensemble. Le résultat est une valeur booléenne.



Les syntaxes

Noms Opérateurs Syntaxes Opérandes Résultat

Dans

in

Syntaxes 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])
Nombre d'opérandes : 2 Résultat : boolean

Contient

contains

Syntaxes 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)
Nombre d'opérandes : 2 Résultat : boolean

  • Les opérateurs membres renvoient toujours une valeur booléenne.

  • La valeur à comparer doit être du même type que le tableau.

    • string opérateur array[string].

    • boolean opérateur array[boolean].

    • number opérateur array[number].

  • Les valeurs à comparer peuvent être :

    • Une valeur explicite.

    • Une donnée.

    • Le résultat d'une expression Blogger (une opération imbriquée).

  • L'opération peut être imbriquée dans une autre opération qui accepte une valeur de type boolean.

  • Attention ! L'opérateur contains est également un opérateur de contenu comparant deux chaînes de caractères.



Quelques exemples

Opérateur « IN »

<b:eval expr='"toto" in ["toto","titi","tutu"]'/>

Le résultat de l'opération sera : true puisque la chaîne de caractères toto est dans le tableau.

Opérateur « CONTAINS »

<b:eval expr='["toto","titi","tutu"] contains "tata"'/>

Le résultat de l'opération sera : false, puisque le tableau ne contient pas la chaîne de caractères tata.

Imbrication dans une opération Lambda

<b:eval expr='data:posts count p => p.date.year in [2016,2017,2018]'/>

Le résultat de l'opération sera le nombre de posts publiés en 2016, 2017 et 2018.

Combiner avec une opération Lambda

<b:eval expr='2018 in (data:posts map p => p.date.year)'/>

2018 est la première opérande (type number) et l'opération lambda (dont le résultat est de type array[number] - tableau des années) est la seconde opérande.

L'opération sera true si l'un des posts a été publié en 2018.

Imbrication dans une opération ternaire

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

L'opération affichera l'une des 2 valeurs définies dans les 2e et 3e opérandes.

Imbrication dans une opération logique

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

Le résultat sera true si la page courante contient 7,20 ou 100 posts et si la page courante est une page multi-posts.



Spotlight

Populaires cette semaine