Rozgałęzianie warunkowe
Rozgałęzianie warunkowe jest wyrażane w postaci if
wyrażeń. Wyrażenie if
składa się z if
klauzuli, po której następuje zero lub więcej elif
klauzul i opcjonalnie blok else-block. Każda klauzula jest zgodna ze wzorcem
keyword condition {
<statements>
}
gdzie keyword
jest zastępowany if
lub elif
odpowiednio, condition
jest wyrażeniem typu Bool
, i <statements>
ma zostać zastąpione zero lub więcej instrukcji. Opcjonalny else
-block składa się ze słowa kluczowegoelse
, po którym następuje zero lub więcej instrukcji ujętych w nawiasy klamrowe . {
}
Pierwszy blok, dla którego condition
funkcja ocenia true
, zostanie uruchomiona. Jeśli else
blok jest obecny, zostanie uruchomiony, jeśli żaden z warunków nie zostanie obliczony na true
wartość . Blok jest wykonywany we własnym zakresie, co oznacza, że wszystkie powiązania wykonane w ramach bloku nie są widoczne po zakończeniu bloku.
Załóżmy na przykład, że qubits
jest wartością typu Qubit[]
i r1
r2
mają typ Result
,
if r1 == One {
let q = qubits[0];
H(q);
}
elif r2 == One {
let q = qubits[1];
H(q);
}
else {
H(qubits[2]);
}
Można również wyrazić proste rozgałęzianie w postaci wyrażenia warunkowego.
Ograniczenia specyficzne dla celu
Ścisła integracja konstrukcji przepływu sterowania i obliczeń kwantowych stanowi wyzwanie dla bieżącego sprzętu kwantowego. Niektóre procesory kwantowe nie obsługują rozgałęziania na podstawie wyników pomiaru. W związku z tym porównanie wartości typu Result
zawsze spowoduje błąd kompilacji programów Q# przeznaczonych do uruchamiania na takim sprzęcie.
Inne procesory kwantowe obsługują określone rodzaje rozgałęziania na podstawie wyników pomiaru. Bardziej ogólne if
wyrażenia obsługiwane w programie Q# są kompilowane w odpowiednich instrukcjach, które można uruchamiać na takich procesorach. Nałożone ograniczenia to to, że wartości typu Result
mogą być porównywane tylko jako część warunku w wyrażeniach if
w operacjach. Ponadto bloki uruchamiane warunkowo nie mogą zawierać żadnych return
wyrażeń ani aktualizować zmiennych modyfikowalnych, które są zadeklarowane poza tym blokiem.
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla