Expressions

Les expressions sont composées de références à des variables, fonctions, classes... liées entre elles par des opérateurs.

Opérateurs unaires

  • not : négation booléenne or binaire
  • - (minus) : négation numérique
  • + (plus) : sans effet (ignoré)

Opérateurs de comparaison

  • = : égalité
  • < : infériorité (numérique ou alphabétique pour les chaînes)
  • > : supériorité (numérique ou alphabétique pour les chaînes)
  • <= : infériorité ou égalité (numérique ou alphabétique pour les chaînes)
  • >= : supériorité ou égalité (numérique ou alphabétique pour les chaînes)
  • <> : différence
  • == : égalité (équivalent à =, Qubes 9.0)
  • != : différence (équivalent à <>, Qubes 9.0)
  • === : égalité stricte (type et valeur identique, aucun transtypage, Qubes 9.0)

Opérateurs de calcul

  • - (minus) : soustraction numérique
  • + (plus) : addition numérique et concaténation de chaînes
  • * (étoile) : multiplication numérique
  • / (division) : division en virgule flottante
  • and : ET logique ou binaire
  • div : division entière (euclidienne)
  • implies : implication logique
  • mod : reste de la division entière (euclidienne)
  • or : OU logique ou binaire
  • sar : décalage arithmétique à droite (Qubes 6.0)
  • shl : décalage à gauche binaire
  • shr : décalage à droite binaire
  • xor : OU EXCLUSIF logique ou binaire

Opérateurs spéciaux

  • := : opérateur d'affectation, affecte l'expression de droite à la variable ou expression de gauche.
  • [ (crochet ouvrant) : opérateur d'indexation pour un tableau ou une propriété tableau.
  • . (point) : opérateur d'indirection, permet de référence un sous-membre de l'expression de gauche.
  • as : transtype l'instance de gauche en la classe de droite, déclenche une exception si non-valide.
  • if then [else] : opérateur conditionnel, cf. la forme expression de IfThenElse.
  • in / not in : indique si un élément fait partie (ou non) d'un ensemble.
  • implements : indique si une classe implémente une interface (5.6+)
  • is : indique si l'instance de gauche est du type de la classe de droite.
  • new : création d'une nouvelle instance de classe (5.6+).
  • ?? : opérateur de coalescence, retourne la seconde valeur si la première est assimilable à "faux" (Qubes 6.7).

Précédence

La priorité des opérateurs pour Qubes 6.6 (ScriptsQubes2014.1), par ordre décroissant est

  1. @, not
  2. *, /, div, mod, and, shl, shr, sar, as, ^, <<, >>, ??
  3. +, -, or, xor
  4. =, <>, <, >, <=, >=, in, is, implies, implements, ==, !=, ===

Les opérateurs ^, << et >> n'ont pas de signification par défaut, mais ils sont surchargeables.