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.
Z naciskiem na algorytm kwantowy jest bardziej w kierunku tego, co należy osiągnąć, a nie na reprezentacji problemu pod względem struktur danych, bardziej funkcjonalne spojrzenie na projekt języka jest naturalnym wyborem. Jednocześnie system typów jest zaawansowanym mechanizmem, który może służyć do analizy programu i innych testów czasu kompilacji, które ułatwiają formułowanie niezawodnego kodu.
Ogólnie rzecz biorąc, system typów Q# jest dość minimalistyczny, w tym sensie, że nie ma wyraźnego pojęcia klas lub interfejsów, ponieważ można ich używać z języków klasycznych, takich jak C# lub Java. Podejmujemy również nieco pragmatyczne podejście do przyrostowego postępu, tak aby niektóre konstrukcje nie zostały jeszcze w pełni zintegrowane z systemem typów. Przykładem są funktory, które mogą być używane w wyrażeniach, ale nie mają jeszcze reprezentacji w systemie typów. W związku z tym nie można ich obecnie przypisać ani przekazać jako argumentów, podobnie jak w przypadku typów parametryzowanych obiektów wywołujących. Oczekujemy, że przyrostowy postęp w rozszerzeniu systemu typów będzie bardziej kompletny i zrównoważymy natychmiastowe potrzeby z długoterminowymi planami.
Dostępne typy
Wszystkie typy w Q# są niezmienne .
| Typ | Opis |
|---|---|
Unit |
Reprezentuje pojedynczy typ, którego jedyną wartością jest (). |
Int |
Reprezentuje 64-bitową liczbę całkowitą ze znakiem. Wartości wahają się od -9 223 372 036 854 775 808 do 9223 372 036 854 775 807. |
BigInt |
Reprezentuje podpisaną liczbę całkowitą wartości dowolnego rozmiaru. |
Double |
Reprezentuje 64-bitową liczbę zmiennoprzecinkową o podwójnej precyzji. Wartości wahają się od -1,79769313486232e308 do 1,79769313486232e308, a także NaN (nie liczby). |
Bool |
Reprezentuje wartości logiczne. Możliwe wartości to true lub false. |
String |
Reprezentuje tekst jako wartości, które składają się z sekwencji jednostek kodu UTF-16. |
Qubit |
Reprezentuje nieprzezroczystym identyfikator, za pomocą którego można rozwiązać problem z wirtualną pamięcią kwantową.
Wartości typu Qubit są tworzone za pośrednictwem alokacji. |
Result |
Reprezentuje wynik miary projektowej na przestrzenie eigencyjne operatora kwantowego z wartościami eigenvalues ±1. Możliwe wartości są Zero lub One. |
Pauli |
Reprezentuje macierz Pauli z jednym kubitem. Możliwe wartości to PauliI, PauliX, PauliYlub PauliZ. |
Range |
Reprezentuje uporządkowaną sekwencję równych odstępów Int wartości.
wartości mogą reprezentować sekwencje w kolejności rosnącej lub malejącej. |
| Tablica | Reprezentuje wartości, które zawierają sekwencję wartości tego samego typu. |
| Krotka | Reprezentuje wartości, z których każda zawiera stałą liczbę elementów różnych typów. Krotki zawierające pojedynczy element są równoważne elementowi, który zawierają. |
struct |
Reprezentuje typ zdefiniowany przez użytkownika składający się z nazwanych elementów różnych typów. Wartości są tworzone podczas deklarowania nowego wystąpienia. |
| Operacja | Reprezentuje niedeterministyczny wywoływany, który przyjmuje jeden (prawdopodobnie wartość krotki) argument wejściowy i zwraca jeden (prawdopodobnie wartość krotki) danych wyjściowych. Wywołania operacji wartości mogą mieć skutki uboczne, a dane wyjściowe mogą się różnić w przypadku każdego wywołania, nawet w przypadku wywołania z tym samym argumentem. |
| Funkcja | Reprezentuje deterministyczny wywoływany, który przyjmuje jeden (prawdopodobnie wartość krotki) argument wejściowy i zwraca jeden (prawdopodobnie wartość krotki) danych wyjściowych. Wywołania funkcji wartości nie mają skutków ubocznych, a dane wyjściowe zawsze będą takie same, biorąc pod uwagę te same dane wejściowe. |