Les opérateurs membres / Membership operators : in
, contains
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.
Les autres opérateurs
+ (concatenate)
+ (addition)
- (substraction)
* (multiplication)
/ (division)
% (modulus)?: (selector)
and (&&)
or (||)
not (!)eq (==)
neq (!=)
lt (<)
lte (<=)
gt (>)
gte (>=)appendParams
fragment
params
pathin
contains (array)contains (string)
format
limit / take
skip / offset
toresizeImage
sourceSetsnippet
any
all
none
count
map / select
filter / where
first