Iterações
Os ciclos que iteram através de uma sequência de valores são expressos como for
ciclos em Q#. Um for
ciclo de entrada Q# não é interrompido com base numa condição, mas corresponde a uma iteração ou ao que é frequentemente expresso como foreach
ou iter
noutros idiomas. Atualmente, existem dois tipos de dados que Q# suportam a iteração: matrizes e intervalos.
A expressão consiste na palavra-chave for
, seguida de um símbolo ou cadeia de identificação de símbolos, a palavra-chave in
, uma expressão de matriz ou Range
tipo e um bloco de instrução.
O bloco de instrução (o corpo do ciclo) é executado repetidamente, com uma ou mais variáveis de ciclo vinculadas a cada valor no intervalo ou matriz. As mesmas regras de desconstrução aplicam-se às variáveis de ciclo definidas como a qualquer outra atribuição de variável, como enlaces em let
, mutable
, set
e use
borrow
instruções. As próprias variáveis de ciclo estão imutavelmente vinculadas, não podem ser reatribuídas no corpo do ciclo e ficam fora do âmbito quando o ciclo terminar.
A expressão sobre a qual o ciclo itera é avaliada antes de introduzir o ciclo e não é alterada enquanto o ciclo está em execução.
Esta situação é ilustrada no seguinte exemplo. Suponha que qubits
é um valor do tipo e, em Qubit[]
seguida,
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;
}
}
Restrições específicas do destino
Como não break
existem ou continue
primitivos no Q#, o comprimento do ciclo é conhecido assim que o valor de iteração é conhecido. Como tal, for
os ciclos podem ser executados em todo o hardware quântico.
Comentários
https://aka.ms/ContentUserFeedback.
Brevemente: Ao longo de 2024, vamos descontinuar progressivamente o GitHub Issues como mecanismo de feedback para conteúdos e substituí-lo por um novo sistema de feedback. Para obter mais informações, veja:Submeter e ver comentários