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
- @, not
- *, /, div, mod, and, shl, shr, sar, as, ^, <<, >>, ??
- +, -, or, xor
- =, <>, <, >, <=, >=, in, is, implies, implements, ==, !=, ===
Les opérateurs ^, << et >> n'ont pas de signification par défaut, mais ils sont surchargeables.