你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
迭代
迭代一系列值的循环在 Q# 中表示为 for
循环。
Q# 中的 for
循环不会根据条件中断,而是对应于迭代,或其他语言中通常表示为 foreach
或 iter
的子句。 目前,Q# 中支持迭代的数据类型有两种:数组和范围。
表达式由 关键字 (keyword) for
组成,后跟符号或符号元组、关键字 (keyword) in
、数组或Range
类型的表达式和语句块。
语句块(循环正文)将反复运行,一个或多个循环变量绑定到范围或数组中的每个值。 相同的析构规则适用于定义的循环变量和任何其他变量赋值,例如 let
、mutable
、set
、use
和 borrow
语句中的绑定。 循环变量本身是不可变的,不能在循环正文内重新赋值,并且在循环终止时会超出范围。
用作循环迭代基础的表达式在进入循环之前求值,在运行循环时不会更改。
下面的示例说明了这一点。 假设 qubits
是 Qubit[]
类型的值,
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;
}
}
特定于目标的限制
由于 Q# 中没有 break
或 continue
基元,因此循环的长度在迭代值已知时即已知。 因此,for
循环可以在所有量子硬件上运行。