Ausdrücke

Im Kern sind Q#-Ausdrücke entweder Wertliterale oder Bezeichner, wobei Bezeichner entweder auf lokal deklarierte Variablen oder auf global deklarierte aufrufbare Variablen verweisen können (derzeit gibt es keine globalen Konstanten in Q#). Operatoren, Kombinatoren und Modifizierer können verwendet werden, um diese in einer größeren Vielzahl von Ausdrücken zu kombinieren.

  • Operatoren sind in gewissem Sinne nichts anderes als eine dedizierte Syntax für bestimmte abrufbare Variablen.

    Auch wenn Q# jetzt noch nicht erklärend genug ist, um die Funktionen der einzelnen Operatoren formell in Form einer unterstützenden aufrufbaren Deklaration zu erfassen, sollte dies in Zukunft korrigiert werden.

  • Modifizierer können nur auf bestimmte Ausdrücke angewendet werden. Ein oder mehrere Modifizierer können auf Ausdrücke angewendet werden, bei denen es sich entweder um Bezeichner, Zugriffsausdrücke für Arrayelemente, benannte Elementzugriffsausdrücke oder um einen Ausdruck in Klammern handelt, der mit einem einzelnen Element-Tupel identisch ist (siehe diesen Abschnitt). Sie können dem Ausdruck entweder vorangestellt sein (Präfix) oder dem Ausdruck folgen (Postfix). Daher handelt es sich um spezielle unäre Operatoren, die enger als Funktions- oder Vorgangsaufrufe binden, aber weniger eng als jede Art von Elementzugriff. Im Konkreten sind Funktoren Präfixmodifizierer, während der Unwrap-Operator ein Postfixmodifizierer ist.

  • Wie Modifizierer können Funktions- und Vorgangsaufrufe sowie der Elementzugriff als spezielle Art von Operator mit den gleichen Einschränkungen hinsichtlich ihrer Anwendung gelten. Wir bezeichnen sie als Kombinatoren.

Der Abschnitt zur Rangfolge und Assoziativität enthält eine vollständige Liste aller Operatoren sowie eine vollständige Liste aller Modifizierer und Kombinatoren.