Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Les boucles qui itèrent sur une séquence de valeurs sont exprimées sous forme de boucles for
dans Q#. Une boucle for
dans Q# ne s’arrête pas en fonction d’une condition, mais correspond plutôt à une itération, ou ce qui est souvent exprimé en tant que foreach
ou iter
dans d’autres langues. Il existe actuellement deux types de données dans Q# qui prennent en charge l’itération : les tableaux et les plages.
L’expression se compose du mot clé for
, suivi d’un symbole ou d’un tuple de symboles, du mot clé in
, d’une expression de type tableau ou Range
et d’un bloc d’instructions.
Le bloc d’instructions (le corps de la boucle) est exécuté à plusieurs reprises, avec une ou plusieurs variables de boucle liées à chaque valeur de la plage ou du tableau. Les mêmes règles de déconstruction s’appliquent aux variables de boucle définies que les autres affectations de variables, telles que les liaisons dans let
, les mutable
, les use
et les instructions borrow
. Les variables de boucle elles-mêmes sont immuablement liées, ne peuvent pas être réaffectées dans le corps de la boucle et sortir de portée lorsque la boucle se termine.
L’expression sur laquelle la boucle itère est évaluée avant d’entrer dans la boucle et ne change pas pendant l’exécution de la boucle.
Ce scénario est illustré dans l’exemple suivant. Supposons qubits
est une valeur de type Qubit[]
, puis
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;
}
}
Restrictions spécifiques à la cible
Étant donné qu’il n’existe aucune break
ou continue
primitives dans Q#, la longueur de la boucle est connue dès que la valeur d’itération est connue. Par conséquent, for
boucles peuvent être exécutées sur tout le matériel quantique.