Operatoren

Operator

Präzedenz

Bemerkung

Beschreibung

+

4


Addition für numerische Werte (integer, float, complex und char)

Concatenation für string

Bei Arrays und Matrizen wird die Operation elementweise ausgeführt.

prefix +

1

prefix

Kein Vorzeichenwechsel (nur numerische Werte)

-

4


Subtraktion für numerische Werte (inkl. Array und Matrix)

prefix -

1

prefix

Vorzeichenwechsel für numerische Werte (inkl. Array und Matrix)

*

3


Multiplikation für numerische Werte.

Matrizen werden mathematisch korrekt multipliziert (ABT)

/

3


Division für numerische Werte

**

2


Potenzieren für numerische Werte

%

3


Modulo Division (nur integer oder char)

Bei Arrays und Matrizen wird die Operation elementweise ausgeführt

<

6


Kleiner als

Bei Arrays und Matrizen wird der Vergleich elementweise ausgeführt

>

6


Grösser als

Bei Arrays und Matrizen wird der Vergleich elementweise ausgeführt

<=

6


Kleiner oder gleich

Bei Arrays und Matrizen wird der Vergleich elementweise ausgeführt

>=

6


Grösser oder gleich

Bei Arrays und Matrizen wird der Vergleich elementweise ausgeführt

==

7


Gleich

Bei Arrays und Matrizen wird der Vergleich elementweise ausgeführt

!=

7


Ungleich

Bei Arrays und Matrizen wird der Vergleich elementweise ausgeführt

<=>7

Vergleich. Ist der linke Operand kleiner als der rechte, dann ist das Resultat -1, ist er grösser, dann ist das Resultat 1 und wenn sie gleich sind, dann ist das Resultat 0.

Bei Arrays und Matrizen wird der Vergleich elementweise ausgeführt

&&

11


Logisches Und

||13
Logisches or

^^

12


Logisches xor

!

1

prefix

Logisches not

&

8


bitwise and

&1prefixReferenz, dies kann bei Funktionsargumenten verwendet werden, um z.B. Objekte nicht als Kopie zu übergeben oder Rückgabewerte zu erhalten.

|

10


Bitweises or

^

6


Bitweises xor

~

1

prefix

Bitweises not

in1
Testet, ob ein Element in einem Array oder in einer Matrix vorhanden ist (integer, float, string)

>>

5


shift right

<<

5


shift left

++

1

postfix

increment by 1

--

1

postfix

decrement by 1

=

15

rechts nach links

Zuweisung eines Wertes an eine neue Variable oder einer Variable mit dem selben Typ und bei Arrays oder Matrize auch der selben Dimension. Automatische Typenkonversionen können vorgenommen werden.

Bei Objektvariablen (.object und .array) sind beliebige andere Objekte zuweisbar.

:=

15

rechts nach links

Zuweisung mit Überschreiben des Typs und den allfälligen Dimensionen eines Arrays oder einer Matrize. Es wird keine Typenkonversion vorgenommen.

+=15rechts nach linksZur Variable links addieren
-=15rechts nach linksVon Variable links subtrahieren
*=15rechts nach linksVariable links mit Wert rechts multiplizieren
**=15rechts nach linksVariable links mit Wert rechts potenzieren
/=15rechts nach linksVariable links durch Wert rechts dividieren
%=15rechts nach linksVariable links modulo den Wertes rechts rechnen
&=15rechts nach linksVariable links mit Wert rechts binär Und verknüpfen
&&=15rechts nach linksVariable links mit Wert rechts logisch Und verknüpfen
|=15rechts nach linksVariable links mit Wert rechts binär Oder verknüpfen
||=15rechts nach linksVariable links mit Wert rechts logisch Oder verknüpfen
^=15rechts nach linksVariable links mit Wert rechts binär Xor verknüpfen
^^=15rechts nach linksVariable links mit Wert rechts logisch Xor verknüpfen

.*

3

Array oder Matrix

Elementweise Multiplikation

./

3

Array oder Matrix

Elementweise Division

.**

2

Array oder Matrix

Elementweises Potenzieren

`(back quote)

1

prefix

Matrix Transposition

expr ? expr1 : expr2

17


Bedingter Ausdruck: (expr) ? (Ausdruck wenn wahr, expr1) : (Ausdruck wenn nicht wahr, expr2). In den meisten Fällen empfiehlt es sich, den gesamten Ausdruck in Klammern zu setzen, also ( expr ? expr1 : expr2 ). So wird vermieden, dass sich die Ausdrücke mit den vorhergehenden oder folgenden unkontrolliert vermischen.

Achtung: Es werden immer alle drei Ausdrücke evaluiert, aber nur der resultierende Ausdruck wird für die weitere Verarbeitung verwendet.

..

18


Bereichsoperator in case-Anweisungen, gültig für integer, float, char, datetime und string.

.

1


Zugriff auf Objekt-Element. Für Beipiele, siehe .array und .object.

.<1
Erstellung und Zugriff eines neuen Members in einem Objekt, wird wie . verwendet. Eine Zuweisung muss mit := folgen. Für ein Beispiel, siehe .object oder .array.
@1
Zugriff auf Variablen-Attribut
@<1
Erstellung und Zugriff eines neues Variablen-Attribut. Eine Zuweisung muss mit := folgen.
[1
Beginn eines Arrays
[ [1
Beginn einer Matrix
{1
Beginn eines JSON Objektes
<name>1
Öffnendes XML Tag und somit auch Beginn eines ganzen XML Ausdruckes. Es können auch Attribute angegeben werden. Es muss auch ein entsprechendes End XML Tag vorhanden sein (siehe unten).
</name>

Schliessendes XML Tag.
<name />1
Leeres XML Tag. Es können auch Attribute angegeben werden.

[ ]

1


Zugriff auf ein Array Element oder

Zugriff auf ein einzelnes Zeichen in einem String oder

Start und Ende einer Liste zur Definition von Arrays oder Matrizen. Gültige Elementtypen dafür sind: integer, string, float, complex, char, boolean, blob.

[ ][ ]

1


Zugriff auf ein Matrix Element oder Zugriff auf ein einzelnes Zeichen in einem string-Array

[ ][ ][ ]

1
Zugriff auf ein einzelnes Zeichen in einer string-Matrix
.[ ]1
Zugriff auf eine Elementliste in einem Objekt. Es wird nullbasiert auf Objektvariablen mit dem gleichen Namen zugegriffen. Für Beispiele, siehe .object.
.{ }1
Zugriff auf eine Objektvariable mit dem Namen, der als String innerhalb von { und } angegeben wird. Auch auf nummerierte Elemente in einem Array-Objekt wird damit zugegriffen. Für Beispiele, siehe .array oder .object.

( )

1


Funktionsaufruf oder Objektaufruf (jeweis mit Argumenten möglich), oder Klammerung, um die Präzedenz von Operatoren zu umgehen.

\ \

1


Variablenzusatz (integer oder string)

Benötigt ein Leerschlag vor dem schliessenden \, falls ein Variablenname vorangeht

Es wird empfohlen die äquivalente Schreibweise mit { } zu werwenden.

Achtung: \ \ wird in eventuell einer späteren Version nicht mehr unterstützt, es sollte nicht mehr verwendet werden.

{ }1

Variablenzusatz (integer oder string). Das öffnende { muss ohne Leerzeichen auf den Variablennamenteil folgen resp. auf das schliessende } muss unmittelbar der allfällige weitere Namensteil folgen.

Eine solche Sequenz kann auch mehrfach eingesetzt werden. Für Beispiele, siehe .object

, (comma)

19


Listen Separator

:



1) Vererbungsoperator

2) Trennzeichen zwischen Namen und Wert in JSON Objekten

&{expr}


Wird nur innerhalb von XML Ausdrücken verwendet.

Wird Code (expr) innerhalb dieser Zeichen angegeben, wird der enthaltene Ausdruck ausgewertet und nicht als String betrachtet.

Bei Attributen von XML Tags wird ein solcher Ausdruck ebenfalls ausgewertet.

Der Ausdruck innerhalb der Klammern muss den Typ string ergeben oder in einen solchen automatisch verwandelt werden können.


Operatoren mit gleicher Präzedenz werden von links nach rechts ausgeführt.