Iterace
Smyčky, které iterují na sekvenci hodnot, jsou vyjádřeny jako for
smyčky v Q#. Smyčka for
v Q# se nerozlomí na základě podmínky, ale místo toho odpovídá iteraci nebo tomu, co je často vyjádřeno jako foreach
nebo iter
v jiných jazycích. V současné době existují dva datové typy Q# , které podporují iteraci: pole a oblasti.
Výraz se skládá z klíčového slova for
, za kterým následuje symbol nebo symbol řazené kolekce členů, klíčové slovo in
, výraz pole nebo Range
typu a blok příkazů.
Blok příkazů (tělo smyčky) se spouští opakovaně s jednou nebo více proměnnými smyčky vázanými na každou hodnotu v oblasti nebo matici. Pro definované proměnné smyčky platí stejná pravidla dekonstrukce jako pro jakékoli jiné přiřazení proměnných, jako jsou vazby v let
příkazech , mutable
, set
use
aborrow
. Samotné proměnné smyčky jsou neměnně vázané, nelze je znovu přiřadit v těle smyčky a při ukončení smyčky se vymknou z rozsahu.
Výraz, přes který smyčka iteruje, se před vstupem do smyčky vyhodnotí a během běhu smyčky se nezmění.
To je znázorněno v následujícím příkladu. Předpokládejme, že qubits
je hodnota typu Qubit[]
a pak
for qubit in qubits {
H(qubit);
}
mutable results : (Int, Result)[] = [];
for index in 0 .. Length(qubits) - 1 {
set results += [(index, M(qubits[index]))];
}
mutable accumulated = 0;
for (index, measured) in results {
if measured == One {
set accumulated += 1 <<< index;
}
}
Omezení specifická pro cíl
Vzhledem k tomu, že neexistují žádné break
nebo continue
primitivy v Q#, je délka smyčky známá, jakmile je známa hodnota iterace. Smyčky se for
proto dají spouštět na veškerém kvantovém hardwaru.
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro