Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Literał jednostki
Jedynym istniejącym literałem typu Unit jest wartość ().
Wartość Unit jest często używana jako argument do wywoływania, ponieważ nie trzeba przekazywać żadnych innych argumentów lub opóźniać wykonywanie. Jest on również używany jako wartość zwracana, gdy nie trzeba zwracać żadnej innej wartości, co jest w przypadku operacji jednostkowych, czyli operacji obsługujących Adjoint i/lub Controlled functor.
Literały int
Literały wartości dla typu Int mogą być wyrażone w reprezentacji binarnej, ósemkowej, dziesiętnej lub szesnastkowej. Literały wyrażone w pliku binarnym są poprzedzone 0b, z 0o dla ósemki i 0x dla szesnastkowej. Nie ma prefiksu dla powszechnie używanej reprezentacji dziesiętnej.
| Reprezentacja | Literał wartości |
|---|---|
| Dwójkowy | 0b101010 |
| Ósemkowy | 0o52 |
| Liczba dziesiętna | 42 |
| Szesnastkowy | 0x2a |
Literały BigInt
Literały wartości dla typu BigInt są zawsze postfiksowane z L i mogą być wyrażone w reprezentacji binarnej, ósemkowej, dziesiętnej lub szesnastkowej. Literały wyrażone w pliku binarnym są poprzedzone 0b, z 0o dla ósemki i 0x dla szesnastkowej. Nie ma prefiksu dla powszechnie używanej reprezentacji dziesiętnej.
| Reprezentacja | Literał wartości |
|---|---|
| Dwójkowy | 0b101010L |
| Ósemkowy | 0o52L |
| Liczba dziesiętna | 42L |
| Szesnastkowy | 0x2aL |
Literały podwójne
Literały wartości dla typu Double mogą być wyrażone w notacji standardowej lub naukowej.
| Reprezentacja | Literał wartości |
|---|---|
| Standard | 0.1973269804 |
| Naukowy | 1.973269804e-1 |
Jeśli nic nie następuje po przecinku dziesiętnym, cyfra po przecinku dziesiętnym może zostać pominięta. Na przykład 1. jest prawidłowym literałem Double i taki sam jak 1.0.
Literały logiczne
Istniejące literały typu Bool są true i false.
Literały tekstowe
Literał wartości dla typu String to dowolna sekwencja znaków Unicode ujęta w cudzysłowy.
Wewnątrz ciągu znak ukośnika odwrotnego \ może służyć do ucieczki znaku podwójnego cudzysłowu i wstawienia nowego wiersza jako \n, powrotu karetki jako \ri karty jako \t.
Poniżej przedstawiono przykłady prawidłowych literałów ciągów:
"This is a simple string."
"\"This is a more complex string.\", she said.\n"
Q# obsługuje również ciągi interpolowane .
Ciąg interpolowany to literał ciągu, który może zawierać dowolną liczbę wyrażeń interpolacji. Te wyrażenia mogą być dowolnymi typami.
Podczas budowy wyrażenia są obliczane, a ich String reprezentacja jest wstawiana w odpowiedniej lokalizacji w zdefiniowanym literału. Interpolacja jest włączona przez umieszczenie znaku specjalnego $ bezpośrednio przed początkowym cudzysłowem bez odstępu między nimi.
Jeśli na przykład res jest wyrażeniem, które daje w wyniku 1, drugie zdanie w poniższym literalu String wyświetla wartość "Wynik wynosił 1".:
$"This is an interpolated string. The result was {res}."
Literały kubitu
Nie istnieją literały typu Qubit, ponieważ pamięć kwantowa jest zarządzana przez środowisko uruchomieniowe. W związku z tym wartości typu Qubit można uzyskać tylko za pośrednictwem alokacji.
Wartości typu Qubit reprezentują nieprzezroczysty identyfikator, za pomocą którego można rozwiązać bit kwantowy lub kubit. Jedynym operatorem, który obsługuje, jest porównanie równości. Aby uzyskać więcej informacji na temat typu danych Qubit, zobacz Kubity.
Literały wyników
Istniejące literały typu Result są Zero i One.
Wartości typu Result reprezentują wynik binarnej miary kwantowej.
Zero wskazuje projekcję na przestrzeń eigenów +1, One wskazuje projekcję w przestrzeni -1 eigenspace.
Literały Pauli
Istniejące literały typu Pauli to PauliI, PauliX, PauliYi PauliZ.
Wartości typu Pauli reprezentują jedną z czterech macierzy jednokubitowych Pauli, z PauliI reprezentującymi tożsamość.
Wartości typu Pauli są często używane do oznaczania osi dla rotacji i określania pod kątem podstawy do zmierzenia.
Literały zakresu
Literały wartości typu Range to wyrażenia formularza start..step..stop, gdzie start, stepi end są wyrażeniami typu Int. Jeśli rozmiar kroku jest jeden, może zostać pominięty. Na przykład start..stop jest prawidłowym literałem Range i taki sam jak start..1..stop.
Wartości typu Range reprezentują sekwencję liczb całkowitych, gdzie pierwszy element w sekwencji jest start, a kolejne elementy są uzyskiwane przez dodanie step do poprzedniego, aż stop zostanie przekazana.
Range wartości są uwzględniane na obu końcach, czyli ostatnim elementem zakresu jest stop, jeśli różnica między start a stop jest wielokrotną step.
Zakres może być pusty, jeśli na przykład step jest dodatni i stop < start.
Poniżej przedstawiono przykłady prawidłowych literałów Range:
-
1..3to zakres 1, 2, 3. -
2..2..5to zakres 2, 4. -
2..2..6to zakres 2, 4, 6. -
6..-2..2to zakres 6, 4, 2. -
2..-2..1to zakres 2. -
2..1jest pustym zakresem.
Aby uzyskać więcej informacji, zobacz Wyrażenia kontekstowe.
Literały tablicy
Literał tablicy jest sekwencją zera lub większej liczby wyrażeń rozdzielonych przecinkami i ujętą w nawiasy [ i ]; na przykład [1,2,3].
Wszystkie wyrażenia muszą mieć typ podstawowy, który jest typem elementu tablicy. Jeśli pusta tablica jest określona przy użyciu [], może być wymagana adnotacja typu, aby kompilator określił odpowiedni typ wyrażenia.
Tablice o dowolnej długości mogą być tworzone przy użyciu wyrażenia tablicy o rozmiarze.
Takie wyrażenie ma postać [expr, size = s], gdzie s może być dowolnym wyrażeniem typu Int, a expr jest obliczana na wartość, która będzie elementami tablicy powtarzanymi s razy. Na przykład [1.2, size = 3] tworzy tę samą tablicę co [1.2, 1.2, 1.2].
Literały krotki
Literał krotki to sekwencja co najmniej jednego wyrażenia dowolnego typu oddzielona przecinkami i ujęta w nawiasy ( i ). Typ krotki zawiera informacje o każdym typie elementu.
| Literał wartości | Typ |
|---|---|
("Id", 0, 1.) |
(String, Int, Double) |
(PauliX,(3,1)) |
(Pauli, (Int, Int)) |
Krotki zawierające pojedynczy element są traktowane tak samo jak sam element, zarówno w typie, jak i wartości, nazywanej równoważnością pojedynczej krotki jednotonowej.
Krotki są używane do łączenia wartości w jedną wartość, co ułatwia ich przekazywanie. Dzięki temu każde wywołanie może przyjąć dokładnie jedno dane wejściowe i zwrócić dokładnie jedno dane wyjściowe.
Literały dla typów struktur
Wartości typu struktury są przypisywane podczas tworzenia nowego wystąpienia przy użyciu instrukcji new lub konstruktora utworzonego przez kompilator.
Jeśli na przykład IntPair jest struct zdefiniowany jako
struct IntPair {
num1 : Int,
num2 : Int,
}
następnie utworzysz nowe wystąpienie i przypiszesz wartości przy użyciu polecenia
let MyPair = new IntPair { num1 = 5, num2 = 7 };
lub
let MyPair = IntPair(5, 7);
Literały operacji i funkcji
Operacje anonimowe i funkcje można tworzyć przy użyciu wyrażenia lambda .