Delen via


Literals

Letterlijke eenheid

De enige bestaande letterlijke waarde voor het Unit type is de waarde ().

De Unit waarde wordt vaak gebruikt als een argument voor aanroepables, omdat er geen andere argumenten hoeven te worden doorgegeven of om de uitvoering te vertragen. Het wordt ook gebruikt als retourwaarde wanneer er geen andere waarde hoeft te worden geretourneerd, wat het geval is voor unitaire bewerkingen, dat wil gezegd bewerkingen die de Adjoint en/of de Controlled functor ondersteunen.

Letterlijke waarden voor int

Letterlijke waarden voor het Int type kunnen worden uitgedrukt in binaire, octale, decimaal of hexadecimale weergave. Letterlijke waarden uitgedrukt in binair getal worden voorafgegaan door 0b, met 0o voor octaal en met 0x voor hexadecimaal. Er is geen voorvoegsel voor de veelgebruikte decimale weergave.

Vertegenwoordiging Letterlijke waarde
Binair 0b101010
Octaal 0o52
Decimaal 42
Hexadecimale 0x2a

Letterlijke waarden voor BigInt

Letterlijke waarden voor het BigInt type worden altijd geplaatst met L en kunnen worden uitgedrukt in binaire, octale, decimaal of hexadecimale weergave. Letterlijke waarden uitgedrukt in binair getal worden voorafgegaan door 0b, met 0o voor octaal en met 0x voor hexadecimaal. Er is geen voorvoegsel voor de veelgebruikte decimale weergave.

Vertegenwoordiging Letterlijke waarde
Binair 0b101010L
Octaal 0o52L
Decimaal 42L
Hexadecimale 0x2aL

Dubbele letterlijke waarden

Letterlijke waarden voor het Double type kunnen worden uitgedrukt in standaard- of wetenschappelijke notatie.

Vertegenwoordiging Letterlijke waarde
Standard 0.1973269804
Wetenschappelijk 1.973269804e-1

Als er niets volgt na de decimale komma, kan het cijfer na de decimale komma worden weggelaten. Is bijvoorbeeld 1. een geldige letterlijke Double waarde en hetzelfde als 1.0.

Letterlijke waarden voor bool

Bestaande letterlijke waarden voor het Bool type zijn true en false.

Letterlijke tekenreeksen

Een letterlijke waarde voor het String type is een willekeurige lengtereeks van Unicode-tekens tussen dubbele aanhalingstekens. Binnen een tekenreeks kan het back-slash-teken \ worden gebruikt om een dubbele aanhalingsteken te laten ontsnappen en om een nieuwe regel in te voegen als \n, een regelterugloop als \ren een tab als \t.

Hier volgen voorbeelden van geldige letterlijke tekenreeksen:

"This is a simple string."
"\"This is a more complex string.\", she said.\n"

Q# ondersteunt ook geïnterpoleerde tekenreeksen. Een geïnterpoleerde tekenreeks is een letterlijke tekenreeks die een willekeurig aantal interpolatie-expressies kan bevatten. Deze expressies kunnen van willekeurige typen zijn. Bij de constructie worden de expressies geëvalueerd en wordt hun String weergave ingevoegd op de bijbehorende locatie binnen de gedefinieerde letterlijke waarde. Interpolatie wordt ingeschakeld door het speciale teken $ direct vóór het eerste aanhalingsteken te prependeren, zonder witruimte ertussen.

Als res bijvoorbeeld een expressie is die resulteert in 1, wordt in de tweede zin in de volgende String letterlijke tekst 'Het resultaat was 1' weergegeven:

$"This is an interpolated string. The result was {res}."

Letterlijke qubits

Er bestaan geen letterlijke waarden voor het Qubit type , omdat kwantumgeheugen wordt beheerd door de runtime. Waarden van het type Qubit kunnen daarom alleen worden verkregen via toewijzing.

Waarden van het type Qubit vertegenwoordigen een ondoorzichtige id waarmee een kwantumbit, of qubit, kan worden aangepakt. De enige operator die ze ondersteunen, is gelijkheidsvergelijking. Zie Qubits voor meer informatie over het Qubit gegevenstype.

Letterlijke resultaten

Bestaande letterlijke waarden voor het Result type zijn Zero en One.

Waarden van het type Result vertegenwoordigen het resultaat van een binaire kwantummeting. Zero geeft een projectie aan op de eigenruimte +1, One geeft een projectie aan op de eigenruimte -1.

Letterlijke waarden van Pauli

Bestaande letterlijke waarden voor het Pauli type zijn PauliI, PauliX, PauliYen PauliZ.

Waarden van het type Pauli vertegenwoordigen een van de vier Pauli-matrices met één qubit, waarbij PauliI de identiteit wordt opgegeven. Waarden van het type Pauli worden meestal gebruikt om de as voor rotaties aan te geven en om aan te geven op welke basis moet worden gemeten.

Letterlijke waarden van bereik

Letterlijke waarden voor het Range type zijn expressies van de vorm start..step..stop, waarbij start, stepen end expressies van het type Intzijn. Als de stapgrootte één is, kan deze worden weggelaten. Is bijvoorbeeld start..stop een geldige letterlijke Range waarde en hetzelfde als start..1..stop.

Waarden van het type Range vertegenwoordigen een reeks gehele getallen, waarbij het eerste element in de reeks is starten de volgende elementen worden verkregen door op te tellen step aan de vorige, totdat stop wordt doorgegeven. Range waarden zijn inclusief aan beide uiteinden, dat wil gezegd dat het laatste element van het bereik is stop als het verschil tussen start en stop een veelvoud van stepis. Een bereik kan leeg zijn als, bijvoorbeeld, step positief is en stop < start.

Hier volgen voorbeelden van geldige letterlijke Range waarden:

  • 1..3 is het bereik 1, 2, 3.
  • 2..2..5 is het bereik 2, 4.
  • 2..2..6 is het bereik 2, 4, 6.
  • 6..-2..2 is het bereik 6, 4, 2.
  • 2..-2..1 is het bereik 2.
  • 2..1 is het lege bereik.

Zie Contextuele expressies voor meer informatie.

Letterlijke matrix

Een letterlijke matrix is een reeks van nul of meer expressies, gescheiden door komma's en tussen vierkante haken [ en ]; bijvoorbeeld [1,2,3]. Alle expressies moeten een gemeenschappelijk basistype hebben. Dit is het itemtype van de matrix. Als er een lege matrix is opgegeven met [], is mogelijk een typeaantekening nodig voor de compiler om het juiste type van de expressie te bepalen.

Matrices met een willekeurige lengte kunnen worden gemaakt met behulp van een matrixexpressie met de grootte. Een dergelijke expressie heeft de vorm [expr, size = s], waarbij s elke expressie van het type Int kan zijn en expr wordt geëvalueerd met een waarde die de items van de matrix zijn die herhaaldelijk s worden gebruikt. Maakt bijvoorbeeld [1.2, size = 3] dezelfde matrix als [1.2, 1.2, 1.2].

Letterlijke waarden voor tuple

Een letterlijke tuple is een reeks van een of meer expressies van elk type, gescheiden door komma's en tussen haakjes ( en ). Het type tuple bevat de informatie over elk itemtype.

Letterlijke waarde Type
("Id", 0, 1.) (String, Int, Double)
(PauliX,(3,1)) (Pauli, (Int, Int))

Tuples die één item bevatten, worden behandeld als identiek aan het item zelf, zowel qua type als waarde, wat equivalentie van singleton tuple wordt genoemd.

Tuples worden gebruikt om waarden samen te voegen tot één waarde, waardoor ze gemakkelijker kunnen worden doorgegeven. Dit maakt het mogelijk voor elke aanroepbare om precies één invoer te nemen en precies één uitvoer te retourneren.

Letterlijke waarden voor door de gebruiker gedefinieerde typen

Waarden van een door de gebruiker gedefinieerd type worden samengesteld door hun constructor aan te roepen. Er wordt automatisch een standaardconstructor gegenereerd bij het declareren van het type. Het is momenteel niet mogelijk om aangepaste constructors te definiëren.

Als IntPair bijvoorbeeld twee items van het type Intheeft, wordt er IntPair(2, 3) een nieuw exemplaar gemaakt door de standaardconstructor aan te roepen.

Letterlijke waarden voor bewerking en functie

Anonieme bewerkingen en functies kunnen worden gemaakt met behulp van een lambda-expressie.