Les opérateurs membres [in / contains]

Nous vous rappelons que lorsque vous accédez à ce blog, vous signez automatiquement un accord avec Blogger Code.
Consultez les CGU.


Blogger - Membership operators
Les opérateurs membres ont la particularité de vérifier l'équivalence d'une valeur à une valeur contenue dans un tableau. Le résultat renvoie une valeur booléenne.


Liste des opérateurs

Noms Opérateurs Opérandes Syntaxe par défaut Résultat
Dans in 2 string in array[string] boolean
boolean in array[boolean]
number in array[number]
Contient contains array[string] contains string
array[boolean] contains boolean
array[number] contains number

  • 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 médiathèque du blog" : "Vous n'êtes pas dans la médiathè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.


Syntaxe fonctionnelle

Une syntaxe fonctionnelle est une alternative que l'on peut utiliser lorsque la syntaxe standard contient plusieurs fois le même opérateur.
L'usage de cette alternative ne se justifie pas vraiment avec les opérateurs membres parce qu'il n'y a que 2 opérandes.

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

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


Les autres opérateurs

Fiches populaires cette semaine

Facebook : Bouton partager [Share button]