Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Pętle iterujące sekwencję wartości są wyrażane jako pętle for w Q#. Pętla for w Q# nie przerywa się na podstawie warunku, ale zamiast tego odpowiada iteracji lub często wyraża się jako foreach lub iter w innych językach. Obecnie istnieją dwa typy danych w Q#, które obsługują iterację: tablice i zakresy.
Wyrażenie składa się ze słowa kluczowego for, a następnie krotki symbolu, słowa kluczowego in, wyrażenia tablicy lub typu Range oraz bloku instrukcji.
Blok instrukcji (treść pętli) jest uruchamiany wielokrotnie, z co najmniej jedną zmienną pętli powiązaną z każdą wartością w zakresie lub tablicy. Te same reguły dekonstrukcji dotyczą zdefiniowanych zmiennych pętli, co do innych przypisań zmiennych, takich jak powiązania w instrukcjach let, mutable, usei borrow. Same zmienne pętli są niezmiennie powiązane, nie można ich ponownie przypisać w treści pętli i wyjść z zakresu po zakończeniu pętli.
Wyrażenie, na którym wykonuje iterację pętli, jest obliczane przed wejściem do pętli i nie zmienia się, gdy pętla jest uruchomiona.
Ten scenariusz przedstawiono w poniższym przykładzie. Załóżmy, że qubits jest wartością typu Qubit[], a następnie
for qubit in qubits {
H(qubit);
}
mutable results : (Int, Result)[] = [];
for index in 0 .. Length(qubits) - 1 {
results += [(index, M(qubits[index]))];
}
mutable accumulated = 0;
for (index, measured) in results {
if measured == One {
accumulated += 1 <<< index;
}
}
Ograniczenia specyficzne dla elementu docelowego
Ponieważ w breaknie ma continue ani Q# elementów pierwotnych, długość pętli jest znana zaraz po tym, jak jest znana wartość iteracji. W związku z tym pętle for można uruchamiać na całym sprzęcie kwantowym.