Les sélecteurs ternaires et binaires [?:]

Modifier Blogger - Binary and 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>
Si la condition est true, le résultat de l'opération sera la chaîne de caractères : privé. Dans le cas contraire le résultat sera la chaîne de caractères : public.
Opérateur ternaire - Des nombres
<b:with value='data:blog.isPrivate ? 10 : 5' var='myNumber'>

  <b:eval expr='data:myNumber'/>

</b:with>
Si la condition est true, le résultat de l'opération sera le nombre : 10. Dans le cas contraire le résultat sera nombre : 5.
Opérateur ternaire - Des tableaux
<b:loop values='data:view.isHomepage ? data:posts limit 5 : data:posts' var='post'>

</b:loop>
Si la condition est true (si la page courante est l'accueil), le tableau de posts contiendra au plus 5 posts. Dans le cas contraire le résultat sera le tableau complet.
Opérateur binaire - Chaînes de caractères
<b:eval expr='data:blog.pageName ?: data:blog.title'/>
La donnée data:blog.pageName sera le résultat si elle contient une valeur. Dans le cas contraire, data:blog.title sera le résultat de substitution.
<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>
Dans une inclusion commune destinée a extraire des éléments d'un tableau des gadgets PageList et Blog:
  • data:links : Tableau du gadget PageList
    • href : URL de l'item
    • title : titre de l'item
  • data:posts : Tableau du gadget Blog
    • url : URL de l'item
    • title : titre de l'item


Les autres opérateurs

Posts les plus consultés de ce blog

Les types de données [introduction]

Facebook : Bouton partager [Share button]