Ausdrücke
Im Kern sind Q# Ausdrücke entweder Wertliterale oder Bezeichner, wobei Bezeichner entweder auf lokal deklarierte Variablen oder auf global deklarierte Aufrufables verweisen können (es gibt derzeit keine globalen Konstanten in Q#). Operatoren, Kombinationszeichen und Modifizierer können verwendet werden, um diese Bezeichner in einer größeren Vielfalt von Ausdrücken zu kombinieren.
Operatoren sind in einem Sinne nichts anderes als dedizierte Syntax für bestimmte aufrufbare Elemente.
Obwohl Q# noch nicht ausdrucksstark genug ist, um die Funktionen der einzelnen Operatoren formell in Form einer rückrufbaren Deklaration zu erfassen, sollte dies in Zukunft behoben werden.
Modifizierer können nur auf bestimmte Ausdrücke angewendet werden. Mindestens ein Modifizierer kann auf Ausdrücke angewendet werden, die entweder
- Bezeichner
- Arrayelementzugriffsausdrücke
- Benannte Elementzugriffsausdrücke
- ein Ausdruck in Klammern, der mit einem einzelnen Element-Tupel identisch ist. Weitere Informationen finden Sie unter Singleton-Tupel-Äquivalenz). Sie können dem Ausdruck entweder vorangestellt (Präfix) oder dem Ausdruck folgen (Postfix). Sie sind daher spezielle unäre Operatoren, die enger als Funktions- oder Vorgangsaufrufe binden, aber weniger eng als jede Art von Elementzugriff. Konkret sind Functors Präfixmodifizierer, während der Unwrap-Operator ein Postfixmodifizierer ist.
Funktions-, Vorgangs- und Elementzugriffsaufrufe können als spezieller Operatortyp betrachtet werden, ähnlich wie Modifizierer. Alle unterliegen den gleichen Einschränkungen, wenn sie angewendet werden können; wir bezeichnen sie als Kombinatoren.
Der Abschnitt zu Rangfolge und Zuordnung enthält eine vollständige Liste aller Operatoren sowie eine vollständige Liste aller Modifizierer und Kombinatoren.