Les sélecteurs ternaires & binaires / Binary & ternary operators [?:]

Les sélecteurs ternaires et binaires sont des opérateurs utilisant respectivement trois et deux opérandes. Le résultat est un choix parmi 2 valeurs.
Les syntaxes
Sélecteur ternaire
boolean ? allType : allType
Sélecteur binaire
allType ?: allType
Le sélecteur ternaire
Le sélecteur ternaire est un opérateur contenant 3 opérandes.La première opérande doit être booléene. Les 2 dernières opérandes peuvent être d'un type quelconque. L'une des 2 sera le résultat final de l'opération en fonction du résultat de la première opérande.
boolean ? value if true : value if false
- La valeur booléenne peut être :
- Une valeur explicite
- Une donnée
- Le résultat d'une expression Blogger (une opération imbriquée)
- Les autres valeurs peuvent être d'un type quelconque :
- 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 qui sera du type du résultat final de l'opération. C-à-D, si le sélecteur ternaire sélectionne une réponse dont le type est un nombre, l'opération parente doit accepter les valeurs de type number.
Le sélecteur binaire
Le sélecteur binaire est un opérateur contenant 2 opérandes.Les 2 opérandes peuvent être d'un type quelconque.
La première opérande sera le résultat par défaut si la valeur n'est pas vide.
La deuxième opérande sera le résultat si la valeur de la première opérande n'est pas vide.
valeur 1 si non-vide ?: Valeur 2 si valeur 1 est vide
- Les valeurs peuvent être d'un type quelconque :
- 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 qui sera du type du résultat final de l'opération. C-à-D, si le sélecteur binaire sélectionne une réponse dont le type est un nombre, l'opération parente doit accepter les valeurs de type number.
Quelques exemples
Opérateur ternaire - Chaînes de caractères
<b:with value='data:blog.isPrivate ? "privé" : "public"' var='statut'> <b:eval expr='"Ce blog est " + data:statut'/> </b:with>
Opérateur ternaire - Des nombres
<b:with value='data:blog.isPrivate ? 10 : 5' var='myNumber'> <b:eval expr='data:myNumber'/> </b:with>
Opérateur ternaire - Des tableaux
<b:loop values='data:view.isHomepage ? data:posts limit 5 : data:posts' var='post'> </b:loop>
Opérateur binaire - Chaînes de caractères
<b:eval expr='data:blog.pageName ?: data:blog.title'/>
Dans une inclusion commune
<b:loop values='data:widget.type == "PageList" ? data:links : data:posts' var='item'> <a expr:href='data:item.href ?: data:item.url'> <b:eval expr='data:item.title'/> </a> </b:loop>
Les autres opérateurs
+ (concatenate)
+ (addition)
- (substraction)
* (multiplication)
/ (division)
% (modulus)
?: (selector)
all
and (&&)
any
appendParams
contains (array)
contains (string)
count
eq (==)
filter
first
format
fragment
gt (>)
gte (>=)
in
limit
lt (<)
lte (<=)
map
neq (!=)
none
not (!)
offset
or (||)
params
path
resizeImage
select
Skip
snippet
sourceSet
take
to
where